diff --git a/.github/workflows/TagBot.yml b/.github/workflows/TagBot.yml deleted file mode 100644 index d77d3a0..0000000 --- a/.github/workflows/TagBot.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: TagBot -on: - schedule: - - cron: 0 * * * * -jobs: - TagBot: - runs-on: ubuntu-latest - steps: - - uses: JuliaRegistries/TagBot@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9ce95b9..0000000 --- a/.travis.yml +++ /dev/null @@ -1,30 +0,0 @@ -# Documentation: http://docs.travis-ci.com/user/languages/julia/ -language: julia -os: - - linux -# - osx - -julia: - - 1.6 -# - 0.7 -# - 0.6 - -#before_install: -# - (sudo apt-get -qq update && sudo apt-get install -y python3 python3-matplotlib) -notifications: - email: true -git: - depth: 99999999 - -branches: - only: - - main - -before_install: -#script: -# - if [[ -a .git/shallow ]]; then git fetch --unshallow; fi -# - julia -e 'import Pkg; Pkg.add("Modia"); Pkg.test("Modia", coverage = true)' - -after_success: -# - julia -e 'using Pkg; cd(Pkg.dir("Modia")); Pkg.add("Coverage"); using Coverage; Coveralls.submit(Coveralls.process_folder()); Codecov.submit(Codecov.process_folder());' - - julia -e 'using Pkg; cd(Pkg.dir("Modia")); Pkg.add("Coverage"); using Coverage; Codecov.submit(Codecov.process_folder())' diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d12176b..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017-2021 ModiaSim developers - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index b186559..0000000 --- a/Manifest.toml +++ /dev/null @@ -1,1493 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -[[AbstractAlgebra]] -deps = ["InteractiveUtils", "LinearAlgebra", "Markdown", "Random", "RandomExtensions", "SparseArrays", "Test"] -git-tree-sha1 = "452f5cdc30c10a372d87cf60da4ead7c8cfc4548" -uuid = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" -version = "0.16.0" - -[[AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "485ee0867925449198280d4af84bdb46a2a404d0" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.0.1" - -[[AbstractPlotting]] -deps = ["Animations", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Distributions", "DocStringExtensions", "FFMPEG", "FileIO", "FixedPointNumbers", "Formatting", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageIO", "IntervalSets", "Isoband", "KernelDensity", "LinearAlgebra", "Markdown", "Match", "Observables", "Packing", "PlotUtils", "PolygonOps", "Printf", "Random", "Serialization", "Showoff", "SignedDistanceFields", "SparseArrays", "StaticArrays", "Statistics", "StatsBase", "StructArrays", "UnicodeFun"] -git-tree-sha1 = "0ad0244f2e200ec2423d66b2b615d91535e73ea4" -uuid = "537997a7-5e4e-5d89-9595-2241ea00577e" -version = "0.17.4" - -[[AbstractTrees]] -git-tree-sha1 = "03e0550477d86222521d254b741d470ba17ea0b5" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.3.4" - -[[Adapt]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f1b523983a58802c4695851926203b36e28f09db" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.3.0" - -[[Animations]] -deps = ["Colors"] -git-tree-sha1 = "e81c509d2c8e49592413bfb0bb3b08150056c79d" -uuid = "27a7e980-b3e6-11e9-2bcd-0b925532e340" -version = "0.4.1" - -[[ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" - -[[ArnoldiMethod]] -deps = ["LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "f87e559f87a45bece9c9ed97458d3afe98b1ebb9" -uuid = "ec485272-7323-5ecc-a04f-4719b315124d" -version = "0.1.0" - -[[ArrayInterface]] -deps = ["IfElse", "LinearAlgebra", "Requires", "SparseArrays", "Static"] -git-tree-sha1 = "2fbfa5f372352f92191b63976d070dc7195f47a4" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "3.1.7" - -[[ArrayLayouts]] -deps = ["FillArrays", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "d68733034d1d5d2cd3ea68e2b4cb11f456f6d015" -uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "0.6.5" - -[[Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[AxisAlgorithms]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] -git-tree-sha1 = "a4d07a1c313392a77042855df46c5f534076fab9" -uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" -version = "1.0.0" - -[[BandedMatrices]] -deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "bad4640d622657238f1144da2a639ba1703c5352" -uuid = "aae01518-5342-5314-be14-df237901396f" -version = "0.16.8" - -[[Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[BoundaryValueDiffEq]] -deps = ["BandedMatrices", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "NLsolve", "Reexport", "SparseArrays"] -git-tree-sha1 = "fe34902ac0c3a35d016617ab7032742865756d7d" -uuid = "764a87c0-6b3e-53db-9096-fe964310641d" -version = "2.7.1" - -[[Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c3598e525718abcc440f69cc6d5f60dda0a1b61e" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.6+5" - -[[CEnum]] -git-tree-sha1 = "215a9aa4a1f23fbd05b92769fdd62559488d70e9" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.4.1" - -[[Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[CategoricalArrays]] -deps = ["DataAPI", "Future", "JSON", "Missings", "Printf", "Statistics", "StructTypes", "Unicode"] -git-tree-sha1 = "f4de3fab632544ff0a858f293755fe9aac0f47bf" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.9.6" - -[[ChainRulesCore]] -deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "42e3c181483fbd2c416087a0a93838803e358358" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "0.9.38" - -[[CheapThreads]] -deps = ["ArrayInterface", "IfElse", "Requires", "Static", "StrideArraysCore", "ThreadingUtilities", "VectorizationBase"] -git-tree-sha1 = "6596dbdb8fadd45ef9dff0087ef3a6ec9c5473bc" -uuid = "b630d9fa-e28e-4980-896d-83ce5e2106b2" -version = "0.2.3" - -[[ColorBrewer]] -deps = ["Colors", "JSON", "Test"] -git-tree-sha1 = "61c5334f33d91e570e1d0c3eb5465835242582c4" -uuid = "a2cac450-b92f-5266-8821-25eda20663c8" -version = "0.4.0" - -[[ColorSchemes]] -deps = ["ColorTypes", "Colors", "FixedPointNumbers", "Random", "StaticArrays"] -git-tree-sha1 = "9d7dfad1326b1ad29afa1366587806a14d727745" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.12.0" - -[[ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "32a2b8af383f11cbb65803883837a149d10dfe8a" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.10.12" - -[[ColorVectorSpace]] -deps = ["ColorTypes", "Colors", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "StatsBase"] -git-tree-sha1 = "4d17724e99f357bfd32afa0a9e2dda2af31a9aea" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.8.7" - -[[Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "82f4e6ff9f847eca3e5ebc666ea2cd7b48e8b47e" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.7" - -[[Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[CommonSolve]] -git-tree-sha1 = "68a0743f578349ada8bc911a5cbd5a2ef6ed6d1f" -uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" -version = "0.2.0" - -[[CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[Compat]] -deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] -git-tree-sha1 = "ac4132ad78082518ec2037ae5770b6e796f7f956" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "3.27.0" - -[[CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" - -[[ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "48920211c95a6da1914a06c44ec94be70e84ffff" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.1.0" - -[[Contour]] -deps = ["StaticArrays"] -git-tree-sha1 = "9f02045d934dc030edad45944ea80dbd1f0ebea7" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.5.7" - -[[Crayons]] -git-tree-sha1 = "3f71217b538d7aaee0b69ab47d9b7724ca8afa0d" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.0.4" - -[[DataAPI]] -git-tree-sha1 = "dfb3b7e89e395be1e25c2ad6d7690dc29cc53b1d" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.6.0" - -[[DataFrames]] -deps = ["CategoricalArrays", "Compat", "DataAPI", "Future", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Reexport", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "d50972453ef464ddcebdf489d11885468b7b83a3" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "0.22.7" - -[[DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "4437b64df1e0adccc3e5d1adbc3ac741095e4677" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.9" - -[[DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[DelayDiffEq]] -deps = ["DataStructures", "DiffEqBase", "LinearAlgebra", "Logging", "NonlinearSolve", "OrdinaryDiffEq", "Printf", "RecursiveArrayTools", "Reexport", "UnPack"] -git-tree-sha1 = "bf17647d5d2da99054b4c547734ef15aa285720c" -uuid = "bcd4f6db-9728-5f36-b5f7-82caef46ccdb" -version = "5.29.2" - -[[DelimitedFiles]] -deps = ["Mmap"] -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" - -[[DiffEqBase]] -deps = ["ArrayInterface", "ChainRulesCore", "DataStructures", "DocStringExtensions", "FunctionWrappers", "IterativeSolvers", "LabelledArrays", "LinearAlgebra", "Logging", "MuladdMacro", "NonlinearSolve", "Parameters", "Printf", "RecursiveArrayTools", "RecursiveFactorization", "Reexport", "Requires", "SciMLBase", "Setfield", "SparseArrays", "StaticArrays", "Statistics", "SuiteSparse", "ZygoteRules"] -git-tree-sha1 = "ecd96f817ba8489eb4896cab5410875a68bcd7dd" -uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.60.0" - -[[DiffEqCallbacks]] -deps = ["DataStructures", "DiffEqBase", "ForwardDiff", "LinearAlgebra", "NLsolve", "OrdinaryDiffEq", "RecipesBase", "RecursiveArrayTools", "StaticArrays"] -git-tree-sha1 = "0972ca167952dc426b5438fc188b846b7a66a1f3" -uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "2.16.1" - -[[DiffEqFinancial]] -deps = ["DiffEqBase", "DiffEqNoiseProcess", "LinearAlgebra", "Markdown", "RandomNumbers"] -git-tree-sha1 = "db08e0def560f204167c58fd0637298e13f58f73" -uuid = "5a0ffddc-d203-54b0-88ba-2c03c0fc2e67" -version = "2.4.0" - -[[DiffEqJump]] -deps = ["ArrayInterface", "Compat", "DataStructures", "DiffEqBase", "FunctionWrappers", "LinearAlgebra", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "StaticArrays", "TreeViews", "UnPack"] -git-tree-sha1 = "aa9d66a5a354703419354af859d3ca9d506d2f42" -uuid = "c894b116-72e5-5b58-be3c-e6d8d4ac2b12" -version = "6.14.1" - -[[DiffEqNoiseProcess]] -deps = ["DiffEqBase", "Distributions", "LinearAlgebra", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "Requires", "ResettableStacks", "StaticArrays", "Statistics"] -git-tree-sha1 = "d42d174081b04a9ce47d9c307107eaed6b7f8f8c" -uuid = "77a26b50-5914-5dd7-bc55-306e6241c503" -version = "5.7.1" - -[[DiffEqPhysics]] -deps = ["DiffEqBase", "DiffEqCallbacks", "ForwardDiff", "LinearAlgebra", "Printf", "Random", "RecipesBase", "RecursiveArrayTools", "Reexport", "StaticArrays"] -git-tree-sha1 = "8f23c6f36f6a6eb2cbd6950e28ec7c4b99d0e4c9" -uuid = "055956cb-9e8b-5191-98cc-73ae4a59e68a" -version = "3.9.0" - -[[DiffResults]] -deps = ["StaticArrays"] -git-tree-sha1 = "c18e98cba888c6c25d1c3b048e4b3380ca956805" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.0.3" - -[[DiffRules]] -deps = ["NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "214c3fcac57755cfda163d91c58893a8723f93e9" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.0.2" - -[[DifferentialEquations]] -deps = ["BoundaryValueDiffEq", "DelayDiffEq", "DiffEqBase", "DiffEqCallbacks", "DiffEqFinancial", "DiffEqJump", "DiffEqNoiseProcess", "DiffEqPhysics", "DimensionalPlotRecipes", "LinearAlgebra", "MultiScaleArrays", "OrdinaryDiffEq", "ParameterizedFunctions", "Random", "RecursiveArrayTools", "Reexport", "SteadyStateDiffEq", "StochasticDiffEq", "Sundials"] -git-tree-sha1 = "221b9a427fc8970be5b65171c25f0a6ba0e1f394" -uuid = "0c46a032-eb83-5123-abaf-570d42b7fbaa" -version = "6.16.0" - -[[DimensionalPlotRecipes]] -deps = ["LinearAlgebra", "RecipesBase"] -git-tree-sha1 = "af883a26bbe6e3f5f778cb4e1b81578b534c32a6" -uuid = "c619ae07-58cd-5f6d-b883-8f17bd6a98f9" -version = "1.2.0" - -[[Distances]] -deps = ["LinearAlgebra", "Statistics"] -git-tree-sha1 = "366715149014943abd71aa647a07a43314158b2d" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.2" - -[[Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[Distributions]] -deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns"] -git-tree-sha1 = "a837fdf80f333415b69684ba8e8ae6ba76de6aaa" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.24.18" - -[[DocStringExtensions]] -deps = ["LibGit2", "Markdown", "Pkg", "Test"] -git-tree-sha1 = "9d4f64f79012636741cf01133158a54b24924c32" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.8.4" - -[[Downloads]] -deps = ["ArgTools", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" - -[[EarCut_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "92d8f9f208637e8d2d28c664051a00569c01493d" -uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" -version = "2.1.5+1" - -[[EllipsisNotation]] -deps = ["ArrayInterface"] -git-tree-sha1 = "8041575f021cba5a099a456b4163c9a08b566a02" -uuid = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" -version = "1.1.0" - -[[ExponentialUtilities]] -deps = ["ArrayInterface", "LinearAlgebra", "Printf", "Requires", "SparseArrays"] -git-tree-sha1 = "ad435656c49da7615152b856c0f9abe75b0b5dc9" -uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" -version = "1.8.4" - -[[ExprTools]] -git-tree-sha1 = "10407a39b87f29d47ebaca8edbc75d7c302ff93e" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.3" - -[[FFMPEG]] -deps = ["FFMPEG_jll", "x264_jll"] -git-tree-sha1 = "9a73ffdc375be61b0e4516d83d880b265366fe1f" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.0" - -[[FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "LibVPX_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "Pkg", "Zlib_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "3cc57ad0a213808473eafef4845a74766242e05f" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.3.1+4" - -[[FFTW]] -deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "1dc6ca6ad69eb9beadd3ce82b90910f4fa63d7c3" -uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.4.0" - -[[FFTW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "5a0d4b6a22a34d17d53543bd124f4b08ed78e8b0" -uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.9+7" - -[[FastClosures]] -git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" -uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" -version = "0.3.2" - -[[FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "c72c8977c378c4aacb52664f96253d7b7e97558b" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.7.0" - -[[FillArrays]] -deps = ["LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "31939159aeb8ffad1d4d8ee44d07f8558273120a" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "0.11.7" - -[[FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Requires", "SparseArrays", "StaticArrays"] -git-tree-sha1 = "f6f80c8f934efd49a286bb5315360be66956dfc4" -uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.8.0" - -[[FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.4" - -[[Formatting]] -deps = ["Printf"] -git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.2" - -[[ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "NaNMath", "Printf", "Random", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "e2af66012e08966366a43251e1fd421522908be6" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.18" - -[[FreeType]] -deps = ["CEnum", "FreeType2_jll"] -git-tree-sha1 = "d5e296dea44f9cfb8cc83681aa3db367e0cbfd4f" -uuid = "b38be410-82b0-50bf-ab77-7b57e271db43" -version = "3.0.1" - -[[FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "cbd58c9deb1d304f5a245a0b7eb841a2560cfec6" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.10.1+5" - -[[FreeTypeAbstraction]] -deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics", "StaticArrays"] -git-tree-sha1 = "3d955cfbefd6645ced60091d8c9bfcc96fc32345" -uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" -version = "0.8.4" - -[[FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0d20aed5b14dd4c9a2453c1b601d08e1149679cc" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.5+6" - -[[FunctionWrappers]] -git-tree-sha1 = "241552bc2209f0fa068b6415b1942cc0aa486bcc" -uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" -version = "1.1.2" - -[[Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[GLFW]] -deps = ["GLFW_jll"] -git-tree-sha1 = "35dbc482f0967d8dceaa7ce007d16f9064072166" -uuid = "f7f18e0c-5ee9-5ccd-a5bf-e8befd85ed98" -version = "3.4.1" - -[[GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "bd1dbf065d7a4a0bdf7e74dd26cf932dda22b929" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.3+0" - -[[GLMakie]] -deps = ["AbstractPlotting", "ColorTypes", "Colors", "FileIO", "FixedPointNumbers", "FreeTypeAbstraction", "GLFW", "GeometryBasics", "LinearAlgebra", "Markdown", "MeshIO", "ModernGL", "Observables", "Printf", "Serialization", "ShaderAbstractions", "StaticArrays"] -git-tree-sha1 = "4ef559a00a8bd1e0804efab4472f03a01ec8852b" -uuid = "e9467ef8-e4e7-5192-8a1a-b1aee30e663a" -version = "0.2.6" - -[[GeometryBasics]] -deps = ["EarCut_jll", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "4136b8a5668341e58398bb472754bff4ba0456ff" -uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.3.12" - -[[Graphics]] -deps = ["Colors", "LinearAlgebra", "NaNMath"] -git-tree-sha1 = "2c1cf4df419938ece72de17f368a021ee162762e" -uuid = "a2bd30eb-e257-5431-a919-1863eab51364" -version = "1.1.0" - -[[GridLayoutBase]] -deps = ["GeometryBasics", "InteractiveUtils", "Match", "Observables"] -git-tree-sha1 = "db033d75853d0668011f5ab9cc3c4f8977516af9" -uuid = "3955a311-db13-416c-9275-1d80ed98e5e9" -version = "0.5.4" - -[[Grisu]] -git-tree-sha1 = "03d381f65183cb2d0af8b3425fde97263ce9a995" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.0" - -[[Hwloc]] -deps = ["Hwloc_jll"] -git-tree-sha1 = "ffdcd4272a7cc36442007bca41aa07ca3cc5fda4" -uuid = "0e44f5e4-bd66-52a0-8798-143a42290a1d" -version = "1.3.0" - -[[Hwloc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "aac91e34ef4c166e0857e3d6052a3467e5732ceb" -uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.4.1+0" - -[[IfElse]] -git-tree-sha1 = "28e837ff3e7a6c3cdb252ce49fb412c8eb3caeef" -uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" -version = "0.1.0" - -[[ImageCore]] -deps = ["AbstractFFTs", "Colors", "FixedPointNumbers", "Graphics", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "Reexport"] -git-tree-sha1 = "db645f20b59f060d8cfae696bc9538d13fd86416" -uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.8.22" - -[[ImageIO]] -deps = ["FileIO", "Netpbm", "PNGFiles", "TiffImages", "UUIDs"] -git-tree-sha1 = "015adb094b2d81167821df8a24c180a8eee22f2c" -uuid = "82e4d734-157c-48bb-816b-45c225c6df19" -version = "0.5.3" - -[[IndirectArrays]] -git-tree-sha1 = "c2a145a145dc03a7620af1444e0264ef907bd44f" -uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959" -version = "0.5.1" - -[[Inflate]] -git-tree-sha1 = "f5fc07d4e706b84f72d54eedcc1c13d92fb0871c" -uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" -version = "0.1.2" - -[[IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "d979e54b71da82f3a65b62553da4fc3d18c9004c" -uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2018.0.3+2" - -[[InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[Interpolations]] -deps = ["AxisAlgorithms", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] -git-tree-sha1 = "1e0e51692a3a77f1eeb51bf741bdd0439ed210e7" -uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.13.2" - -[[IntervalSets]] -deps = ["Dates", "EllipsisNotation", "Statistics"] -git-tree-sha1 = "3cc368af3f110a767ac786560045dceddfc16758" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.5.3" - -[[InvertedIndices]] -deps = ["Test"] -git-tree-sha1 = "15732c475062348b0165684ffe28e85ea8396afc" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.0.0" - -[[Isoband]] -deps = ["isoband_jll"] -git-tree-sha1 = "f9b6d97355599074dc867318950adaa6f9946137" -uuid = "f1662d9f-8043-43de-a69a-05efc1cc6ff4" -version = "0.1.1" - -[[IterTools]] -git-tree-sha1 = "05110a2ab1fc5f932622ffea2a003221f4782c18" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.3.0" - -[[IterativeSolvers]] -deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] -git-tree-sha1 = "6f5ef3206d9dc6510a8b8e2334b96454a2ade590" -uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" -version = "0.9.0" - -[[IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[JLLWrappers]] -deps = ["Preferences"] -git-tree-sha1 = "642a199af8b68253517b80bd3bfd17eb4e84df6e" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.3.0" - -[[JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "81690084b6198a2e1da36fcfda16eeca9f9f24e4" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.1" - -[[KernelDensity]] -deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] -git-tree-sha1 = "09aeec87bdc9c1fa70d0b508dfa94a21acd280d9" -uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" -version = "0.6.2" - -[[LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "df381151e871f41ee86cee4f5f6fd598b8a68826" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.0+3" - -[[LaTeXStrings]] -git-tree-sha1 = "c7f1c695e06c01b95a67f0cd1d34994f3e7db104" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.2.1" - -[[LabelledArrays]] -deps = ["ArrayInterface", "LinearAlgebra", "MacroTools", "StaticArrays"] -git-tree-sha1 = "df09e970c816637191ef8794ef5c5c9f8950db88" -uuid = "2ee39098-c373-598a-b85f-a56591580800" -version = "1.6.0" - -[[Latexify]] -deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "Printf", "Requires"] -git-tree-sha1 = "1925f6838df247e7853f3f9727dd8a52a78f60f4" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.15.2" - -[[LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" - -[[LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" - -[[LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" - -[[LibVPX_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "85fcc80c3052be96619affa2fe2e6d2da3908e11" -uuid = "dd192d2f-8180-539f-9fb4-cc70b1dcf69a" -version = "1.9.0+1" - -[[Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] -git-tree-sha1 = "b391a18ab1170a2e568f9fb8d83bc7c780cb9999" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.5+4" - -[[Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "7739f837d6447403596a75d19ed01fd08d6f56bf" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.3.0+3" - -[[Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ec7f2e8ad5c9fa99fc773376cdbc86d9a5a23cb7" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.36.0+3" - -[[Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "8e924324b2e9275a51407a4e06deb3455b1e359f" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.0+7" - -[[LightGraphs]] -deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "432428df5f360964040ed60418dd5601ecd240b6" -uuid = "093fc24a-ae57-5d10-9952-331d41423f4d" -version = "1.3.5" - -[[LineSearches]] -deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "f27132e551e959b3667d8c93eae90973225032dd" -uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.1.1" - -[[LinearAlgebra]] -deps = ["Libdl"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[LogExpFunctions]] -deps = ["DocStringExtensions"] -git-tree-sha1 = "49c5c32deda5999d15378b64ee10f2e87831ab25" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.2.2" - -[[Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[LoopVectorization]] -deps = ["ArrayInterface", "CheapThreads", "DocStringExtensions", "IfElse", "LinearAlgebra", "OffsetArrays", "Requires", "SLEEFPirates", "Static", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "da82a865158e1d62e013fa72657fda7e92820a90" -uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.12" - -[[MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "c253236b0ed414624b083e6b72bfe891fbd2c7af" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2021.1.1+1" - -[[MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "6a8a2a625ab0dea913aba95c11370589e0239ff0" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.6" - -[[MappedArrays]] -git-tree-sha1 = "18d3584eebc861e311a552cbb67723af8edff5de" -uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" -version = "0.4.0" - -[[Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[Match]] -git-tree-sha1 = "5cf525d97caf86d29307150fcba763a64eaa9cbe" -uuid = "7eb4fadd-790c-5f42-8a69-bfa0b872bfbf" -version = "1.1.0" - -[[MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" - -[[Measurements]] -deps = ["Calculus", "LinearAlgebra", "Printf", "RecipesBase", "Requires"] -git-tree-sha1 = "31c8c0569b914111c94dd31149265ed47c238c5b" -uuid = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" -version = "2.6.0" - -[[MeshIO]] -deps = ["ColorTypes", "FileIO", "GeometryBasics", "Printf"] -git-tree-sha1 = "0b7334b0869d9bb9f255991032d1a36a01a60da7" -uuid = "7269a6da-0436-5bbc-96c2-40638cbb6118" -version = "0.4.6" - -[[Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "f8c673ccc215eb50fcadb285f522420e29e69e1c" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "0.4.5" - -[[Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[ModelingToolkit]] -deps = ["AbstractTrees", "ArrayInterface", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqJump", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "IfElse", "LabelledArrays", "Latexify", "Libdl", "LightGraphs", "LinearAlgebra", "MacroTools", "NaNMath", "NonlinearSolve", "RecursiveArrayTools", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SafeTestsets", "SciMLBase", "Serialization", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicUtils", "Symbolics", "UnPack", "Unitful"] -git-tree-sha1 = "61709e7d68c73c34d8d8b8ece5a6f35c41840c59" -uuid = "961ee093-0014-501f-94e3-6117800e7a78" -version = "5.16.0" - -[[ModernGL]] -deps = ["Libdl"] -git-tree-sha1 = "326957556e9cc9253615114c04bb0096a2a69bb8" -uuid = "66fc600b-dfda-50eb-8b99-91cfa97b1301" -version = "1.1.2" - -[[ModiaBase]] -deps = ["DataFrames", "DataStructures", "DiffRules", "LinearAlgebra", "Measurements", "MonteCarloMeasurements", "Unitful"] -git-tree-sha1 = "570037118f77bf198b35608e61ba9d89545adc64" -uuid = "ec7bf1ca-419d-4510-bbab-199861c55244" -version = "0.7.2" - -[[ModiaLang]] -deps = ["DataFrames", "DataStructures", "DifferentialEquations", "Measurements", "ModiaBase", "ModiaPlot", "MonteCarloMeasurements", "Reexport", "Test", "Unitful"] -git-tree-sha1 = "3e8b93fa945f5bfb719317e3ac4fcd6d7f9c913e" -uuid = "34b37210-eaa3-4b48-8781-0b87bf559981" -version = "0.7.2" - -[[ModiaPlot]] -deps = ["Colors", "DataFrames", "GLMakie", "Measurements", "MonteCarloMeasurements", "Unitful"] -git-tree-sha1 = "f69e5406e0f88d402adb0cbee1cb4533fa051001" -uuid = "951137b1-a5aa-4c03-8412-295bfee9a204" -version = "0.7.1" - -[[MonteCarloMeasurements]] -deps = ["Distributed", "Distributions", "LinearAlgebra", "MacroTools", "Random", "RecipesBase", "Requires", "SLEEFPirates", "StaticArrays", "Statistics", "StatsBase", "Test"] -git-tree-sha1 = "8d2dc50cef7583e7b27a0c66dc0a0b32eb4c1f52" -uuid = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" -version = "0.10.1" - -[[MosaicViews]] -deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] -git-tree-sha1 = "b34e3bc3ca7c94914418637cb10cc4d1d80d877d" -uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389" -version = "0.3.3" - -[[MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" - -[[MuladdMacro]] -git-tree-sha1 = "c6190f9a7fc5d9d5915ab29f2134421b12d24a68" -uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" -version = "0.2.2" - -[[MultiScaleArrays]] -deps = ["DiffEqBase", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "OrdinaryDiffEq", "Random", "RecursiveArrayTools", "SparseDiffTools", "Statistics", "StochasticDiffEq", "TreeViews"] -git-tree-sha1 = "258f3be6770fe77be8870727ba9803e236c685b8" -uuid = "f9640e96-87f6-5992-9c3b-0743c6a49ffa" -version = "1.8.1" - -[[NLSolversBase]] -deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "50608f411a1e178e0129eab4110bd56efd08816f" -uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.8.0" - -[[NLsolve]] -deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] -git-tree-sha1 = "019f12e9a1a7880459d0173c182e6a99365d7ac1" -uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" -version = "4.5.1" - -[[NaNMath]] -git-tree-sha1 = "bfe47e760d60b82b66b61d2d44128b62e3a369fb" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "0.3.5" - -[[Netpbm]] -deps = ["ColorVectorSpace", "FileIO", "ImageCore"] -git-tree-sha1 = "09589171688f0039f13ebe0fdcc7288f50228b52" -uuid = "f09324ee-3d7c-5217-9330-fc30815ba969" -version = "1.0.1" - -[[NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" - -[[NonlinearSolve]] -deps = ["ArrayInterface", "FiniteDiff", "ForwardDiff", "IterativeSolvers", "LinearAlgebra", "RecursiveArrayTools", "RecursiveFactorization", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "UnPack"] -git-tree-sha1 = "ef18e47df4f3917af35be5e5d7f5d97e8a83b0ec" -uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "0.3.8" - -[[Observables]] -git-tree-sha1 = "fe29afdef3d0c4a8286128d4e45cc50621b1e43d" -uuid = "510215fc-4207-5dde-b226-833fc4488ee2" -version = "0.4.0" - -[[OffsetArrays]] -deps = ["Adapt"] -git-tree-sha1 = "b3dfef5f2be7d7eb0e782ba9146a5271ee426e90" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.6.2" - -[[Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "a42c0f138b9ebe8b58eba2271c5053773bde52d0" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.4+2" - -[[OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" - -[[OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "71bbbc616a1d710879f5a1021bcba65ffba6ce58" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.1+6" - -[[OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9db77584158d0ab52307f8c04f8e7c08ca76b5b3" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.3+4" - -[[Optim]] -deps = ["Compat", "FillArrays", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "d34366a3abc25c41f88820762ef7dfdfe9306711" -uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.3.0" - -[[Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f9d57f4126c39565e05a2b0264df99f497fc6f37" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.1+3" - -[[OrderedCollections]] -git-tree-sha1 = "4fa2ba51070ec13fcc7517db714445b4ab986bdf" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.4.0" - -[[OrdinaryDiffEq]] -deps = ["Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "ExponentialUtilities", "FastClosures", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "Logging", "MacroTools", "MuladdMacro", "NLsolve", "RecursiveArrayTools", "Reexport", "SparseArrays", "SparseDiffTools", "StaticArrays", "UnPack"] -git-tree-sha1 = "c6395a5af098743718253c94169d4364ab722048" -uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -version = "5.52.4" - -[[PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "f82a0e71f222199de8e9eb9a09977bd0767d52a0" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.0" - -[[PNGFiles]] -deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"] -git-tree-sha1 = "520e28d4026d16dcf7b8c8140a3041f0e20a9ca8" -uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" -version = "0.3.7" - -[[Packing]] -deps = ["GeometryBasics"] -git-tree-sha1 = "f4049d379326c2c7aa875c702ad19346ecb2b004" -uuid = "19eb6ba3-879d-56ad-ad62-d5c202156566" -version = "0.4.1" - -[[PaddedViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "0fa5e78929aebc3f6b56e1a88cf505bb00a354c4" -uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" -version = "0.5.8" - -[[ParameterizedFunctions]] -deps = ["DataStructures", "DiffEqBase", "DocStringExtensions", "Latexify", "LinearAlgebra", "ModelingToolkit", "Reexport", "SciMLBase"] -git-tree-sha1 = "d290c172dae21d73ae6a19a8381abbb69ef0a624" -uuid = "65888b18-ceab-5e60-b2b9-181511a3b968" -version = "5.10.0" - -[[Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "2276ac65f1e236e0a6ea70baff3f62ad4c625345" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.2" - -[[Parsers]] -deps = ["Dates"] -git-tree-sha1 = "c8abc88faa3f7a3950832ac5d6e690881590d6dc" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "1.1.0" - -[[Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" - -[[PkgVersion]] -deps = ["Pkg"] -git-tree-sha1 = "a7a7e1a88853564e551e4eba8650f8c38df79b37" -uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" -version = "0.1.1" - -[[PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "ae9a295ac761f64d8c2ec7f9f24d21eb4ffba34d" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.0.10" - -[[PoissonRandom]] -deps = ["Random", "Statistics", "Test"] -git-tree-sha1 = "44d018211a56626288b5d3f8c6497d28c26dc850" -uuid = "e409e4f3-bfea-5376-8464-e040bb5c01ab" -version = "0.4.0" - -[[PolygonOps]] -git-tree-sha1 = "c031d2332c9a8e1c90eca239385815dc271abb22" -uuid = "647866c9-e3ac-4575-94e7-e3d426903924" -version = "0.1.1" - -[[PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "cde4ce9d6f33219465b55162811d8de8139c0414" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.2.1" - -[[PositiveFactorizations]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" -uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" -version = "0.2.4" - -[[Preferences]] -deps = ["TOML"] -git-tree-sha1 = "ea79e4c9077208cd3bc5d29631a26bc0cff78902" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.2.1" - -[[PrettyTables]] -deps = ["Crayons", "Formatting", "Markdown", "Reexport", "Tables"] -git-tree-sha1 = "574a6b3ea95f04e8757c0280bb9c29f1a5e35138" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "0.11.1" - -[[Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "6e9c89cba09f6ef134b00e10625590746ba1e036" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.5.0" - -[[QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "12fbe86da16df6679be7521dfb39fbc861e1dc7b" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.4.1" - -[[REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[Random]] -deps = ["Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[Random123]] -deps = ["Libdl", "Random", "RandomNumbers"] -git-tree-sha1 = "7c6710c8198fd4444b5eb6a3840b7d47bd3593c5" -uuid = "74087812-796a-5b5d-8853-05524746bad3" -version = "1.3.1" - -[[RandomExtensions]] -deps = ["Random", "SparseArrays"] -git-tree-sha1 = "062986376ce6d394b23d5d90f01d81426113a3c9" -uuid = "fb686558-2515-59ef-acaa-46db3789a887" -version = "0.4.3" - -[[RandomNumbers]] -deps = ["Random", "Requires"] -git-tree-sha1 = "441e6fc35597524ada7f85e13df1f4e10137d16f" -uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" -version = "1.4.0" - -[[Ratios]] -git-tree-sha1 = "37d210f612d70f3f7d57d488cb3b6eff56ad4e41" -uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" -version = "0.4.0" - -[[RecipesBase]] -git-tree-sha1 = "b3fb709f3c97bfc6e948be68beeecb55a0b340ae" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.1.1" - -[[RecursiveArrayTools]] -deps = ["ArrayInterface", "DocStringExtensions", "LinearAlgebra", "RecipesBase", "Requires", "StaticArrays", "Statistics", "ZygoteRules"] -git-tree-sha1 = "0e9e01661833e774de67723f567424a2b9e3f7d2" -uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "2.11.3" - -[[RecursiveFactorization]] -deps = ["LinearAlgebra", "LoopVectorization"] -git-tree-sha1 = "9514a935538cd568befe8520752c2fb0eef857af" -uuid = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" -version = "0.1.12" - -[[Reexport]] -git-tree-sha1 = "57d8440b0c7d98fc4f889e478e80f268d534c9d5" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.0.0" - -[[Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "4036a3bd08ac7e968e27c203d45f5fff15020621" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.1.3" - -[[ResettableStacks]] -deps = ["StaticArrays"] -git-tree-sha1 = "622b3e491fb0a85fbfeed6f17dc320a9f46d8929" -uuid = "ae5879a3-cd67-5da8-be7f-38c6eb64a37b" -version = "1.1.0" - -[[Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "bf3188feca147ce108c76ad82c2792c57abe7b1f" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.0" - -[[Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "68db32dff12bb6127bac73c209881191bf0efbb7" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.3.0+0" - -[[RuntimeGeneratedFunctions]] -deps = ["ExprTools", "SHA", "Serialization"] -git-tree-sha1 = "5975a4f824533fa4240f40d86f1060b9fc80d7cc" -uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" -version = "0.5.2" - -[[SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" - -[[SLEEFPirates]] -deps = ["IfElse", "Libdl", "VectorizationBase"] -git-tree-sha1 = "3e682ce17a16c9dfb9d2fde0ceb2347e23faafba" -uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" -version = "0.6.15" - -[[SafeTestsets]] -deps = ["Test"] -git-tree-sha1 = "36ebc5622c82eb9324005cc75e7e2cc51181d181" -uuid = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" -version = "0.0.1" - -[[SciMLBase]] -deps = ["ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "RecipesBase", "RecursiveArrayTools", "StaticArrays", "Statistics", "Tables", "TreeViews"] -git-tree-sha1 = "60470c3fadb1a1ac20e487b37baafe664124bd03" -uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "1.13.0" - -[[Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "Requires"] -git-tree-sha1 = "d5640fc570fb1b6c54512f0bd3853866bd298b3e" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "0.7.0" - -[[ShaderAbstractions]] -deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "1070bd02a427e7a3d73e0732b5d9dfc01edb6a04" -uuid = "65257c39-d410-5151-9873-9b3e5be5013e" -version = "0.2.5" - -[[SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" - -[[Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "236dd0ddad6e3764cce8d8b09c0bbba6df2e194f" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.2" - -[[SignedDistanceFields]] -deps = ["Random", "Statistics", "Test"] -git-tree-sha1 = "d263a08ec505853a5ff1c1ebde2070419e3f28e9" -uuid = "73760f76-fbc4-59ce-8f25-708e95d2df96" -version = "0.4.0" - -[[SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "daf7aec3fe3acb2131388f93a4c409b8c7f62226" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.3" - -[[Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[SortingAlgorithms]] -deps = ["DataStructures", "Random", "Test"] -git-tree-sha1 = "03f5898c9959f8115e30bc7226ada7d0df554ddd" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "0.3.1" - -[[SparseArrays]] -deps = ["LinearAlgebra", "Random"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[SparseDiffTools]] -deps = ["Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "LightGraphs", "LinearAlgebra", "Requires", "SparseArrays", "VertexSafeGraphs"] -git-tree-sha1 = "be20320958ccd298c98312137a5ebe75a654ebc8" -uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "1.13.2" - -[[SpecialFunctions]] -deps = ["ChainRulesCore", "OpenSpecFun_jll"] -git-tree-sha1 = "5919936c0e92cff40e57d0ddf0ceb667d42e5902" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "1.3.0" - -[[StackViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "46e589465204cd0c08b4bd97385e4fa79a0c770c" -uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15" -version = "0.1.1" - -[[Static]] -deps = ["IfElse"] -git-tree-sha1 = "ddec5466a1d2d7e58adf9a427ba69763661aacf6" -uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "0.2.4" - -[[StaticArrays]] -deps = ["LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "e8cd1b100d37f5b4cfd2c83f45becf61c762eaf7" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.1.1" - -[[Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics"] -git-tree-sha1 = "4bc58880426274277a066de306ef19ecc22a6863" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.5" - -[[StatsFuns]] -deps = ["LogExpFunctions", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "30cd8c360c54081f806b1ee14d2eecbef3c04c49" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "0.9.8" - -[[SteadyStateDiffEq]] -deps = ["DiffEqBase", "DiffEqCallbacks", "LinearAlgebra", "NLsolve", "Reexport", "SciMLBase"] -git-tree-sha1 = "2de51f0cae090982b3c9da88601c0e7ccb5ff2b6" -uuid = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f" -version = "1.6.2" - -[[StochasticDiffEq]] -deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqJump", "DiffEqNoiseProcess", "FillArrays", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "Logging", "MuladdMacro", "NLsolve", "OrdinaryDiffEq", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SparseArrays", "SparseDiffTools", "StaticArrays", "UnPack"] -git-tree-sha1 = "3109ce733c907b941eea4345b0644308e2c6da2d" -uuid = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0" -version = "6.33.1" - -[[StrideArraysCore]] -deps = ["ArrayInterface", "Requires", "ThreadingUtilities", "VectorizationBase"] -git-tree-sha1 = "da1091034d295c8dbaf1d6ea16529221bc24afe1" -uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" -version = "0.1.5" - -[[StructArrays]] -deps = ["Adapt", "DataAPI", "Tables"] -git-tree-sha1 = "44b3afd37b17422a62aea25f04c1f7e09ce6b07f" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.5.1" - -[[StructTypes]] -deps = ["Dates", "UUIDs"] -git-tree-sha1 = "ad4558dee74c5d26ab0d0324766b1a3ee6ae777a" -uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" -version = "1.7.1" - -[[SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" - -[[Sundials]] -deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "Reexport", "SparseArrays", "Sundials_jll"] -git-tree-sha1 = "28db9e1a8fdd1b8e95cee064a6c2066897cf39c5" -uuid = "c3572dad-4567-51f8-b174-8c6c989267f4" -version = "4.4.1" - -[[Sundials_jll]] -deps = ["CompilerSupportLibraries_jll", "Libdl", "OpenBLAS_jll", "Pkg", "SuiteSparse_jll"] -git-tree-sha1 = "013ff4504fc1d475aa80c63b455b6b3a58767db2" -uuid = "fb77eaff-e24c-56d4-86b1-d163f2edb164" -version = "5.2.0+1" - -[[SymbolicUtils]] -deps = ["AbstractAlgebra", "AbstractTrees", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "IfElse", "LabelledArrays", "LinearAlgebra", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "TimerOutputs"] -git-tree-sha1 = "b21d29589b8cc8f10cbd9839996e8ac5846fe361" -uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "0.11.1" - -[[Symbolics]] -deps = ["AbstractAlgebra", "DiffRules", "Distributions", "DocStringExtensions", "IfElse", "Latexify", "Libdl", "LinearAlgebra", "MacroTools", "NaNMath", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "SymbolicUtils", "TreeViews"] -git-tree-sha1 = "9f11dda9b5546bdbbe4639b323f8bb00a7c14489" -uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "0.1.22" - -[[TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" - -[[TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"] -git-tree-sha1 = "c9d2d262e9a327be1f35844df25fe4561d258dc9" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.4.2" - -[[Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" - -[[Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[ThreadingUtilities]] -deps = ["VectorizationBase"] -git-tree-sha1 = "063f52eee44ec303f1721cd59b4d7892cae9f1cc" -uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.4.1" - -[[TiffImages]] -deps = ["ColorTypes", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "OffsetArrays", "OrderedCollections", "PkgVersion", "ProgressMeter"] -git-tree-sha1 = "5c40c59956e873af583b8b831a877b81d49a1c9f" -uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" -version = "0.3.1" - -[[TimerOutputs]] -deps = ["Printf"] -git-tree-sha1 = "32cdbe6cd2d214c25a0b88f985c9e0092877c236" -uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.8" - -[[TreeViews]] -deps = ["Test"] -git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6" -uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7" -version = "0.3.0" - -[[UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[Unitful]] -deps = ["ConstructionBase", "Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "c6bbc170505c5ea36593a0072b61d3be8bf868ae" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.7.0" - -[[VectorizationBase]] -deps = ["ArrayInterface", "Hwloc", "IfElse", "Libdl", "LinearAlgebra", "Static"] -git-tree-sha1 = "4f9b7b3e40da418518e0282e7397fd0ca17a7527" -uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.19.28" - -[[VertexSafeGraphs]] -deps = ["LightGraphs"] -git-tree-sha1 = "b9b450c99a3ca1cc1c6836f560d8d887bcbe356e" -uuid = "19fa3120-7c27-5ec5-8db8-b0b0aa330d6f" -version = "0.1.2" - -[[WoodburyMatrices]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "59e2ad8fd1591ea019a5259bd012d7aee15f995c" -uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" -version = "0.5.3" - -[[XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "afd2b541e8fd425cd3b7aa55932a257035ab4a70" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.9.11+0" - -[[XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "2b3eac39df218762d2d005702d601cd44c997497" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.33+4" - -[[Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.6.9+4" - -[[Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.9+4" - -[[Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.3+4" - -[[Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.4+4" - -[[Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.10+4" - -[[Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.0+3" - -[[Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.13.0+3" - -[[Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.4.0+3" - -[[Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" - -[[ZygoteRules]] -deps = ["MacroTools"] -git-tree-sha1 = "9e7a1e8ca60b742e508a315c17eef5211e7fbfd7" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.1" - -[[isoband_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "a1ac99674715995a536bbce674b068ec1b7d893d" -uuid = "9a68df92-36a6-505f-a73e-abb412b6bfb4" -version = "0.2.2+0" - -[[libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "acc685bcf777b2202a904cdcb49ad34c2fa1880c" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.14.0+4" - -[[libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "7a5780a0d9c6864184b3a2eeeb833a0c871f00ab" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "0.1.6+4" - -[[libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "6abbc424248097d69c0c87ba50fcb0753f93e0ee" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.37+6" - -[[libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "fa14ac25af7a4b8a7f61b287a124df7aab601bcd" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.6+6" - -[[nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" - -[[p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" - -[[x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "d713c1ce4deac133e3334ee12f4adff07f81778f" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2020.7.14+2" - -[[x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "487da2f8f2f0c8ee0e83f39d13037d6bbf0a45ab" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.0.0+3" diff --git a/Project.toml b/Project.toml deleted file mode 100644 index d685eee..0000000 --- a/Project.toml +++ /dev/null @@ -1,18 +0,0 @@ -name = "Modia" -uuid = "cb905087-75eb-5f27-8515-1ce0ec8e839e" -authors = ["Hilding Elmqvist ", "Martin Otter "] -version = "0.7.2" - -[deps] -DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa" -ModiaLang = "34b37210-eaa3-4b48-8781-0b87bf559981" -Reexport = "189a3867-3050-52da-a836-e630ba90ab69" -Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" -Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[compat] -DifferentialEquations = "6.16" -ModiaLang = "0.7.2" -Reexport = "1.0" -Unitful = "1.6, 1.5, 1.4, 1.3" -julia = "1.6, 1.5" diff --git a/README.md b/README.md deleted file mode 100644 index cb0f236..0000000 --- a/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# Modia.jl - - -[![Travis](https://travis-ci.org/ModiaSim/Modia.jl.svg?branch=master)](https://travis-ci.org/ModiaSim/Modia.jl) -[![AppVoyer](https://ci.appveyor.com/api/projects/status/github/ModiaSim/Modia.jl?svg=true)](https://ci.appveyor.com/project/MartinOtter/modia-jl) -[![codecov.io](http://codecov.io/github/ModiaSim/Modia.jl/coverage.svg?branch=master)](http://codecov.io/github/ModiaSim/Modia.jl?branch=master) -[![The MIT License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://github.com/ModiaSim/Modia.jl/blob/master/LICENSE) - -Modia is part of [ModiaSim](https://modiasim.github.io/docs/). - -The [Modia Tutorial](https://modiasim.github.io/Modia.jl/stable/Tutorial.html) provides an introduction to Modia. - -Modia is a Julia package for modeling and simulation of multidomain engineering systems (electrical, 3D mechanical, fluid, etc.) described by differential equations, algebraic equations, and (space-discretized) partial differential equations. It shares many powerful features of the -[Modelica language](https://www.modelica.org/modelicalanguage), together with new features not available in Modelica. Simulation is performed with [DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl), units are supported via [Unitful.jl](https://github.com/PainterQubits/Unitful.jl) , uncertainty modeling is performed with [Measurements.jl](https://github.com/JuliaPhysics/Measurements.jl), Monte Carlo simulation is performed with [MonteCarloMeasurements.jl](https://github.com/baggepinnen/MonteCarloMeasurements.jl). - -Plotting is performed with package [ModiaPlot.jl](https://github.com/ModiaSim/ModiaPlot.jl) as convenient interface to GLMakie. - - -## Installation - -Modia and ModiaPlot are registered and are installed with (Julia >= 1.5 is required): - -```julia -julia> ]add Modia, ModiaPlot -``` - -It is recommended to also add the following packages, in order that all tests and examples can be executed in your standard environment: - -```julia -julia> ]add Measurements, MonteCarloMeasurements, Distributions -``` - -## Example - -The following differential equations describes a damped pendulum: - -```math -\begin{aligned} - \frac{d\varphi}{dt} &= \omega \\ - 0 &= m \cdot L^2 \cdot \frac{d\omega}{dt} + d \cdot \omega + m \cdot g \cdot L \cdot sin(\varphi) \\ - r &= \begin{pmatrix} - L*cos(\varphi) \\ - -L*sin(\varphi) - \end{pmatrix} -\end{aligned} -``` - -where ``\varphi`` is the rotation angle, ``\omega`` the angular velocity, -``m`` the mass, ``L`` the rod length, ``d`` a damping constant, -``g`` the gravity constant and ``r`` the vector from the origin of the world system -to the tip of the pendulum. These equations can be defined, simulated and plotted with: - -```julia -using Modia, ModiaPlot - -Pendulum = Model( - L = 0.8u"m", - m = 1.0u"kg", - d = 0.5u"N*m*s/rad", - g = 9.81u"m/s^2", - phi = Var(init = 1.57*u"rad"), - w = Var(init = 0u"rad/s"), - equations = :[ - w = der(phi) - 0.0 = m*L^2*der(w) + d*w + m*g*L*sin(phi) - r = [L*cos(phi), -L*sin(phi)] - ] -) - - -pendulum1 = @instantiateModel(Pendulum) -simulate!(pendulum1, Tsit5(), stopTime = 10.0u"s", log=true) -plot(pendulum1, [("phi", "w"); "r"], figure = 1) -``` - -The result is the following plot: - -![Pendulum-Figure](docs/resources/images/PendulumFigures.png) - -Normally distributed uncertainty can be added, simulated and plotted -in the following way: - -```julia -using Measurements - -PendulumWithUncertainties = Pendulum | Map(L = (0.8 ± 0.2)u"m", - m = (1.0 ± 0.2)u"kg", - d = (0.5 ± 0.2)u"N*m*s/rad") - -pendulum2 = @instantiateModel(PendulumWithUncertainties, - FloatType = Measurement{Float64}) - -simulate!(pendulum2, Tsit5(), stopTime = 10.0u"s") -plot(pendulum2, [("phi", "w"); "r"], figure = 2) -``` - -resulting in the following plot: - -![PendulumWithUncertainty](docs/resources/images/PendulumWithUncertainties.png) - - - - diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index aa7d43a..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,43 +0,0 @@ -environment: - matrix: - #- julia_version: 0.6 - - julia_version: 1 - #- julia_version: nightly - -platform: - #- x86 # 32-bit - - x64 # 64-bit - -# # Uncomment the following lines to allow failures on nightly julia -# # (tests will run but not make your overall status red) -# matrix: -# allow_failures: -# - julia_version: nightly - -branches: - only: - - main - - /release-.*/ - -notifications: - - provider: Email - on_build_success: false - on_build_failure: false - on_build_status_changed: false - -install: - - ps: iex ((new-object net.webclient).DownloadString("https://raw.githubusercontent.com/JuliaCI/Appveyor.jl/version-1/bin/install.ps1")) - -build_script: - - echo "%JL_BUILD_SCRIPT%" - - C:\julia\bin\julia -e "%JL_BUILD_SCRIPT%" - -test_script: - - echo "%JL_TEST_SCRIPT%" - - C:\julia\bin\julia -e "%JL_TEST_SCRIPT%" - -# # Uncomment to support code coverage upload. Should only be enabled for packages -# # which would have coverage gaps without running on Windows -# on_success: -# - echo "%JL_CODECOV_SCRIPT%" -# - C:\julia\bin\julia -e "%JL_CODECOV_SCRIPT%" \ No newline at end of file diff --git a/docs/resources/images/SimpleModel.png b/docs/resources/images/SimpleModel.png deleted file mode 100644 index 570da70..0000000 Binary files a/docs/resources/images/SimpleModel.png and /dev/null differ diff --git a/docs/src/Functions.md b/docs/src/Functions.md deleted file mode 100644 index 9634b67..0000000 --- a/docs/src/Functions.md +++ /dev/null @@ -1,65 +0,0 @@ -# Functions - -```@meta -CurrentModule = Modia -``` - - -## Instantiation - -```@docs -@instantiateModel -instantiateModel -``` - -## Simulation - -```@docs -simulate! -``` - -## Plotting - -The results of a simulation of a model `instantiatedModel` can be visualized with -function [ModiaPlot.plot](https://modiasim.github.io/ModiaPlot.jl/stable/Functions.html#ModiaPlot.plot) -that produces line plots of the result time series. -A variable `a.b.c` is identified by a String key `"a.b.c"`. -The legends/labels of the plots are automatically constructed by the -names and units of the variables. Example: - -```julia -using ModiaPlot -instantiatedModel = @instantiatedModel(...) -simulate!(instantiatedModel, ...) -plot(instantiatedModel, - [ ("phi", "r") ("phi", "phi2", "w"); - ("w", "w2", "phi2") "w" ], - heading="Matrix of plots") -``` - -generates the following plot: - -![Matrix-of-Plots](../resources/images/matrix-of-plots.png) - -The underlying line plot is generated by [GLMakie](https://github.com/JuliaPlots/GLMakie.jl). - - -## Inquiries - -```@meta -CurrentModule = Modia -``` - -```@docs -get_result -get_lastValue -``` - -```@meta -CurrentModule = ModiaPlot -``` - -```@docs -hasSignal -getNames -``` diff --git a/docs/src/Internal.md b/docs/src/Internal.md deleted file mode 100644 index 32b9f5e..0000000 --- a/docs/src/Internal.md +++ /dev/null @@ -1,24 +0,0 @@ -# Internal - -This chapter documents internal functions that are typically only -for use of the developers of package Modia. - -## Code Generation - -This section provides functions to **generate Julia code** of the -transformed equations. - -```@meta -CurrentModule = ModiaLang -``` - -```@docs -SimulationModel -generate_getDerivatives! -init! -outputs! -addToResult! -getFloatType -baseType -measurementToString -``` \ No newline at end of file diff --git a/docs/src/Tutorial.md b/docs/src/Tutorial.md deleted file mode 100644 index 6eba412..0000000 --- a/docs/src/Tutorial.md +++ /dev/null @@ -1,1127 +0,0 @@ -# Modia Tutorial - -# 1 Getting started - -This tutorial gives an overview of package [Modia](https://github.com/ModiaSim/Modia.jl) -to construct component-based and equation-based models with the **Modia language** -on a high level, symbolically transforming these models into ODEs -(Ordinary Differential Equations in state space form), simulating them and plotting result variables. - -!!! note - All examples in this tutorial can be executed with - `include("$(Modia.path)/examples/Tutorial.jl")` - - -A simple differential equation with $x(t) \in \R$ - -```math -T \cdot \frac{dx}{dt} + x = 1; \;\;\; x(t_0) = 0.2 -``` - -can be defined, simulated and plotted with the following commands: - -```julia -using Modia, ModiaPlot - -# Define model -SimpleModel = Model( - T = 0.4, - x = Var(init=0.2), - equation = :[T * der(x) + x = 1], -) - -# Transform to ODE form -simpleModel = @instantiateModel(SimpleModel) - -# Simulate with a default integrator of DifferentialEquations -simulate!(simpleModel, stopTime = 1.2) - -# Simulate with a specific integrator (Tsit5) and use a unit for stopTime -simulate!(simpleModel, Tsit5(), stopTime = 1.2u"s") - -# Produce a line plot with GLMakie -plot(simpleModel, ("x", "der(x)"), figure=1) -``` - -A model is defined with a constructor `Model` taking a comma separated list of name/value pairs. -The model consist of a definition of a parameter `T` with default value 0.2. -Constructor `Var` with an `init` key is used to define the initial condition 0.2 of the state `x`, and one equation. Equations can have a Julia expression on both sides of the equal sign and are given as a *quoted* array expression `:[ ]` assigned to a unique identifier such as `equation`. - -Macro `@instantiateModel(..)` symbolically processes the model, in particular solves the equation -for the derivative `der(x)`, so the following equation will be used by the integrator: - -```math -\frac{dx}{dt} = (1 - x) / T -``` - -Furthermore, a Julia function is generated and compiled to evaluate this equation. `@instantiateModel(..)` -returns an instance containing all the information needed for the further steps. - -The first [`simulate!`](@ref) function performs one simulation with an integrator of package -[DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl), that this package -automatically selects. The second `simulate!` call defines the integrator as second argument. -Integrator `Tsit5` is an [adaptive Runge-Kutta method of order 5/4 from Tsitouras](https://www.sciencedirect.com/science/article/pii/S0898122111004706). There are > 100 ODE integrators provided. For details, see [here](https://docs.sciml.ai/stable/solvers/ode_solve/). The simulation result is stored inside `simpleModel`. - -Function call `plot(..)` (or `ModiaPlot.plot(..)`) produces a line plot. Variables to be plotted -are defined as tuples or arrays of variable names. Tuples are displayed in one diagram. A Vector or -matrix of tuples or strings are displayed as vector or matrix of diagrams. The result from the above -example is: - -![SimpleModel Plot](../resources/images/SimpleModel.png) - -!!! note - `using Modia` exports all exported symbols from - - [ModiaLang.jl](https://github.com/ModiaSim/ModiaLang.jl), - - [DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl), and - - [Unitful.jl](https://github.com/PainterQubits/Unitful.jl). - - -# 2 Modeling - -## 2.1 Equation oriented models - - -A low pass filter block with input `u` and output `y` - -```math -\begin{aligned} -T \cdot \frac{dx}{dt} + x &= u\\ - y &= x \\ -x(t_0) &= 0 -\end{aligned} -``` -can be defined as: - -```julia - using Modia - - LowPassFilter = Model( - T = 0.2, - u = input, - y = output | Var(:x), - x = Var(init=0), - equation = :[T * der(x) + x = u], - ) -``` -The symbols `input` and `output` refer to predefined variable constructors to define the input and output variables. If an equation has just a unique variable in the left hand side, `y`, the right hand side can be given as a quoted expression in a Var-constructor `Var(:x)` after the `output` constructor combined with the merge operator, `|`, see below. - -## 2.2 Merging models - -It is possible to combine models by merging. If we want to change the model to become a highpass filter, an alternative output equation - -```math -y = -x + u -``` - -is defined in an anonymous model `Model( y = :(-x + u) )`. This anonymous model is merged with `LowPassFilter` using the merge operator `|`: - -```julia -HighPassFilter = LowPassFilter | Model( y = :(-x + u) ) -``` - -The merging implies that the `output` property of `y` is kept, but the binding expression is changed from `:x` to `:(-x + u)`. - -In general, recursive merging is desired and Modia provides a `mergeModels` function for that (see appendix [A.3 MergeModels algorithm](@ref)). This function is invoked as a binary operator `|` (also used for merge in Python). Note, that the order of the arguments/operands are important. - -Generalizing the block to have two outputs for both low and high pass filtering would be done as follows: - -```julia -LowAndHighPassFilter = LowPassFilter | Model( - y = nothing, - low = output | Var(:x), - high = output | Var(:(-x + u)), - ) -``` -The equation for `y` is removed by "assigning" `nothing` and two variables are defined and declared as outputs. - -Model `LowAndHighPassFilter` represents the following equations: - -```math -\begin{aligned} -T \cdot \frac{dx}{dt} + x &= u\\ - low &= x \\ - high &= -x + u \\ -x(t_0) &= 0 -\end{aligned} -``` - -By turning on logging of merging `setLogMerge(true)`, the translator gives the log: - -```julia -Adding: value = :(x) -Adding: value = :(-x + u) -Deleting: y -Adding: low = Var( - output = true, - value = :(x), - ), -Adding: high = Var( - output = true, - value = :(-x + u), - ), -``` - -The resulting model is pretty printed by calling `@showModel LowAndHighPassFilter`: - -```julia -LowAndHighPassFilter = Model( - T = 0.2, - u = Var( - input = true, - ), - x = Var( - init = 0.0 V, - ), - equations = :([T * der(x) + x = u]), - low = Var( - output = true, - value = :(x), - ), - high = Var( - output = true, - value = :(-x + u), - ), -), -``` - -## 2.3 Functions and tables - -In order to test an input/output block as defined in the previous section, an input needs to be defined. This can be made by adding an equation for `u`. Assume we want `u` to be sinousoidial with an increasing frequency: - -```julia -TestLowAndHighPassFilter = LowAndHighPassFilter | Model( - u = :(sin( (time+1u"s")*u"1/s/s" * time)*u"V"), - x = Var(init=0.2u"V") - ) -``` - -`time` is a reserved name for the independent variable. It has unit `s` for seconds. The Julia package [Unitful](https://painterqubits.github.io/Unitful.jl/stable/) provides a means for defining units and managing unit inference. It need not be explicitly defined, because its symbols are exported by `using Modia`. Definition of units is done with a string macro `u"..."`. In this case, the input signal was given unit Volt. The state x must then also have consistent unit, that is Volt. If the model equations contain systems of simultaneous equations, then approximate guess values, optionally with units, must be given `start`: `i = Var(start=0.0u"A")`. - -The input signal can also be defined by interpolation in a table: - -```julia -using Interpolations - -table = CubicSplineInterpolation(0:0.5:2.0, [0.0, 0.7, 2.0, 1.8, 1.2]) -TestLowAndHighPassFilter2 = TestLowAndHighPassFilter | Map(u = :(table(time*u"1/s")*u"V")) -``` - -A function cannot return more as one variable and a function cannot modify -one of its arguments: - -``` -equations = :[ - (y1, y1) = fc1(u1,u2) # Error: Two return arguments - fc2!(u,y) # Error: Not known that fc2! computes y - println("This is a test") # Fine -] -``` - -The first issue can be fixed by rewriting the function call: - -``` -equations = :[ - v = fc1(u1,u2) - y1 = v[1] - y2 = v[2] -] -``` - - -## 2.4 Hierarchical modeling - -Sofar, the composition of models have resulted in named tuples with values being numeric values or quoted expressions. Hierarchical models are obtained if the values themself are named tuples. A model with two filters can, for example, be defined as follows: - -```julia -TwoFilters = ( - high = HighPassFilter, - low = LowPassFilter, -) -``` - -Note, that the previous definitions of HighPassFilter and LowPassFilter was used instead of making the defintions inline. - -A band pass filter is a series connection of a high pass filter and a low pass filter and can be described as: - -```julia -BandPassFilter = ( - u = input, - y = output, - high = HighPassFilter | Map(T=0.5, x=Var(init=0.1u"V")), - low = LowPassFilter | Map(x=Var(init=0.2u"V")), - equations = :[ - high.u = u, - low.u = high.y, - y = low.y] -) -``` - -A new input has been defined which is propagated to `high.u`. The series connection itself is obtained by the equation `low.u = high.y`. Note, that dot-notation is allowed in equations. - -The input and output for the BandPassFilter when using the same input definition as for the TestLowPassFilter - -```julia -TestBandPassFilter = BandPassFilter | Map( - u = :(sin( (time+1u"s")*u"1/s/s" * time)*u"V") - ) -bandPassFilter = @instantiateModel(TestBandPassFilter) -simulate!(bandPassFilter, Tsit5(), stopTime = 50u"s") -plot(bandPassFilter, ["u", "y"], figure=2) -``` - - - is shown below: - -![Band Pass Filter Plot](../resources/images/BandPassFilterPlot.png) - -The above examples are available in file `SimpleFilters.jl`. - -## 2.5 Physically oriented modeling - -Sofar, only signal flow modeling has been used, i.e. input/output blocks coupled with equations between outputs and inputs. For object oriented modeling more high level constructs are neccessary. Coupling is then acausal and involves potentials such as electric potential, positions, pressure, etc. and flows such as electric current, forces and torques and mass flow rate. - -### 2.5.1 Connectors - -Models which contain any flow variable, i.e. a variable having an attribute `flow=true`, are considered connectors. Connectors must have equal number of flow and potential variables, i.e. variables having an attribute `potential=true`, and have matching array sizes. Connectors may not have any equations. An example of an electrical connector with potential (in Volt) and current (in Ampere) is shown below. - -```julia -Pin = Model( v = potential, i = flow ) -``` -`potential` is a shortcut for `Var(potential=true)` and similarly for `flow`. - -### 2.5.2 Components - -Components are declared in a similar ways as blocks. However, the interfaces between components are defined using connector instances. - -An electrical resistor can be descibed as follows: - -```julia -Resistor = Model( - R = 1.0u"Ω", - p = Pin, - n = Pin, - equations = :[ - 0 = p.i + n.i - v = p.v - n.v - i = p.i - R*i = v ] - ) -``` - -### 2.5.3 Inheritance - -Various physical components sometimes share common properties. One mechanism to handle this is to use inheritance. In Modia, **merging** is used. - -Electrical components such as resistors, capacitors and inductors are categorized as oneports which have two pins. Common properties are: constraint on currents at the pins and definitions of voltage over the component and current through the component. - -```julia -OnePort = Model( - p = Pin, - n = Pin, - partialEquations = :[ - 0 = p.i + n.i - v = p.v - n.v - i = p.i ] ) -``` - -Having such a OnePort definition makes it convenient to define electrical component models by merging OnePort with specific parameter definitions with default values and equations: - -```julia -Resistor = OnePort | Model( R = 1.0u"Ω", equation = :[ R*i = v ], ) - -Capacitor = OnePort | Model( C = 1.0u"F", v=Map(init=0.0u"V"), equation = :[ C*der(v) = i ] ) - -Inductor = OnePort | Model( L = 1.0u"H", i=Map(init=0.0u"A"), equation = :[ L*der(i) = v ] ) - -ConstantVoltage = OnePort | Model( V = 1.0u"V", equation = :[ v = V ] ) -``` -The merged `Resistor` is shown below: - -```julia -Resistor = Model( - p = Model( - v = Var( - potential = true, - ), - i = Var( - flow = true, - ), - ), - n = Model( - v = Var( - potential = true, - ), - i = Var( - flow = true, - ), - ), - partialEquations = :([v = p.v - n.v; 0 = p.i + n.i; i = p.i]), - R = 1.0 Ω, - equations = :([R * i = v]), -), -``` - -### 2.5.4 Connections - -Connections are described as an array of tuples listing the connectors that are connected: -```julia - ( , , ... ) -``` -A connect reference has either the form 'connect instance name' or 'component instance name'.'connect instance name' with 'connect instance name' being either a connector instance, input or output variable. - -Examples -```julia - connect = :[ - (V.p, R1.p) - (R1.n, p) - (C1.n, V.n, R2.p) - ... - ] -``` - -For connectors, all the potentials of the connectors in the same connect tuple are set equal and the sum of all incoming flows to the model are set equal to the sum of the flows into sub-components. - -### 2.5.5 Connected models - -Having the above electrical component models, enables defining a filter - -![Filter Circuit](../resources/images/Filter.png) - -by instanciating components, setting parameters and defining connections. - - -```julia -Filter = ( - R = Resistor | Map(R=0.5u"Ω"), - C = Capacitor | Map(C=2.0u"F"), - V = ConstantVoltage | Map(V=10.0u"V"), - connect = :[ - (V.p, R.p) - (R.n, C.p) - (C.n, V.n) - ] -) -``` - -The connect tuples are translated to: - -```julia - V.p.v = R.p.v - 0 = V.p.i + R.p.i - R.n.v = C.p.v - 0 = R.n.i + C.p.i - C.n.v = V.n.v - 0 = C.n.i + V.n.i -``` - -### 2.5.6 Parameter propagation - -Hierarchical modification of parameters is powerful but sometimes a bit inconvenient. It is also possible to propagate parameters intoduced on a high level down in the hierarchy. The following Filter model defines three parameters, `r`, `c` and `v`. The `r` parameter is used to set the resistance of the resistor R: `Map(R=:r)`. - -```julia -Filter2 = Model( - r = 2.0u"Ω", - c = 1.0u"F", - v = 10u"V", - R = Resistor | Map(R=:r), - C = Capacitor | Map(C=:c), - V = ConstantVoltage | Map(V=:v), - connect = :[ - (V.p, R.p) - (R.n, C.p) - (C.n, V.n) - ] -) -``` - -Two separate filters can then be defined with: - -```julia -TwoFilters = Model( f1 = Filter | Map( r = 10.0, c = 2.0), f2 = Filter ) -``` - -### 2.5.7 Redeclarations - -It is possible to reuse a particular model topology by redeclaring the model of particular components. For example, changing the filter `f1` to a voltage divider by changing C from a Capacitor to a Resistor. A predefined model `Redeclare` is used for this purpose. - -```julia -VoltageDividerAndFilter = TwoFilters | Map(f1 = Map(C = Redeclare | Resistor | Map(R = 20.0))) -``` - -By using `Redeclare`, a new model based on a Resistor is used for `C` and the usual merge semantics with the previously defined model of `C` is not used. - -The above examples are available in file `FilterCircuit.jl`. - - -### 2.5.8 Drive train example - -A larger example that utilizes most of the previously described features of -Modia is available as `$(Modia.path)/examples/ServoSystem.jl`. -This is a textual (Modia) representation of a Modelica model - -![ServoSystem](../resources/images/ServoSystem.png) - -and demonstrates how to build up a hierarchical, multi-domain model consisting -of a servo-system with a load, where the servo-system consists of -an electric motor with a current and speed controller, as well with a more -detailed model of a gearbox. - - -## 2.6 Arrays - -Model parameters and variables can be arrays. For example a linear state space system with -$\boldsymbol{x}(t) \in \R^{n_x}, \boldsymbol{u}(t) \in \R^{n_u}, \boldsymbol{y}(t) \in \R^{n_y}, - \boldsymbol{A} \in \R^{n_x \times n_x}, \boldsymbol{B} \in \R^{n_x \times n_u}, - \boldsymbol{C} \in \R^{n_y \times n_x}, \boldsymbol{D} \in \R^{n_y \times n_u}$ - -```math -\begin{aligned} -\frac{d\boldsymbol{x}}{dt} &= \boldsymbol{A} \cdot \boldsymbol{x} + \boldsymbol{B} \cdot \boldsymbol{u}\\ - \boldsymbol{y} &= \boldsymbol{C} \cdot \boldsymbol{x} + \boldsymbol{D} \cdot \boldsymbol{u} -\end{aligned} -``` - -can be defined as: - -```julia -StateSpace = Model( - A = fill(0.0,0,0), - B = fill(0.0,0,0), - C = fill(0.0,0,0), - D = fill(0.0,0,0), - u = input, - y = output, - x = Var(init = zeros(0)), - equations = :[ - der(x) = A*x + B*u - y = C*x + D*u - ] -) -``` - -and used as: - -```julia -col(args...) = hvcat(1, args...) # Construct a column matrix from a vector - -SecondOrder = Model( - w = 20.0, - D = 0.1, - k = 2.0, - sys = StateSpace | Map(A = :([ 0 1; - -w^2 -2*D*w]), - B = :(col([0; w^2])), - C = :([k 0]), - D = :(zeros(1,1)), - x = Var(init = zeros(2)) ), - equations = :[sys.u = [1.0]] -) -``` -Variables `sys.u` and `sys.y` are vectors with one element each. - -Note, `[0; w^2]` is a vector in Julia and not a column matrix -(see the discussion [here](https://discourse.julialang.org/t/construct-a-2-d-column-array/30617)). -In order that `B` is defined as column matrix, the function `col(..)` is used. - -Array equations remain array equations during symbolic transformation and in the generated code, -so the code is both compact and efficient. In order that this is reasonably possible, the definition -of an array cannot be split in different statements: - -```julia -equations = :[ # error, vector v is not defined as one symbol - m1*der(v[1]) = 2.0 - m2*der(v[2]) = 3.0 -] -``` - -If scalar equations are needed in which arrays are used, then the arrays have -to be first defined and then elements can be used. - -```julia -v = Var(init=zeros(2)), -equations = :[ - a = der(v) - a1 = a[1] - a2 = a[2] - m1*a1 = 2.0 - m2*a2 = 3.0 -] -``` - -## 2.7 Model libraries - -Modia provides a small set of pre-defined model components in directory -`$(Modia.path)/models`: - -- `AllModels.jl` - Include all model libraries -- `Blocks.jl` - Input/output control blocks -- `ELectric.jl` - Electric component models -- `HeatTransfer.jl` - 1D heat transfer component models -- `Rotational.jl` - 1D rotational, mechanical component models - -These models are included in package `Modia`, but are not exported, so must -be access with `Modia.xxx". - -The circuit of section [2.5.5 Connected models](@ref) can be for example -constructed with these libraries in the following way: - -```julia -using Modia, ModiaPlot - -FilterCircuit = Model( - R = Modia.Resistor | Map(R=0.5u"Ω"), - C = Modia.Capacitor | Map(C=2.0u"F", v=Var(init=0.1u"V")), - V = Modia.ConstantVoltage | Map(V=10.0u"V"), - ground = Modia.Ground, - connect = :[ - (V.p, R.p) - (R.n, C.p) - (C.n, V.n, ground.p) - ] -) - -filterCircuit = @instantiateModel(FilterCircuit) -simulate!(filterCircuit, Tsit5(), stopTime=10.0) -plot(filterCircuit, ["C.v", "C.i"], figure=3) -``` - -It is planned to support a much larger set of predefined model components in the future. - - -# 3 Simulation - -A particular model is instantiated, simulated and results plotted with the commands: - -```julia - using Modia, ModiaPlot - - filter = @instantiateModel(Filter) - simulate!(filter, stopTime=10.0) - plot(filter, "y", figure=1) -``` - -## 3.1 Instantiating - -The `@instantiateModel` macro takes additional arguments: - -```julia -modelInstance = @instantiateModel(model; - FloatType = Float64, aliasReduction=true, unitless=false, - log=false, logModel=false, logDetails=false, logStateSelection=false, - logCode=false, logExecution=false, logTiming=false) -``` - -The macro performs structural and symbolic transformations, generates a function for -calculation of derivatives suitable for use with [DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl) -and returns `modelInstance::SimulationModel` that can be used in other functions, -for example to simulate or plot results: - -* `model`: model (declarations and equations). -* `FloatType`: Variable type for floating point numbers (see below). -* `aliasReduction`: Perform alias elimination and remove singularities. -* `unitless`: Remove units (useful while debugging models and needed for MonteCarloMeasurements). -* `log`: Log the different phases of translation. -* `logModel`: Log the variables and equations of the model. -* `logDetails`: Log internal data during the different phases of translation. -* `logStateSelection`: Log details during state selection. -* `logCode`: Log the generated code. -* `logExecution`: Log the execution of the generated code (useful for finding unit bugs). -* `logTiming`: Log timing of different phases. -* `return modelInstance prepared for simulation` - -## 3.2 Simulating - -The [`simulate!`](@ref) function performs one simulation with -[DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl) using the default integrator -that this package automatically selects and stores the result in `modelInstance`. - It is also possible to specify the integrator as second argument of `simulate!`: - -```julia - using Modia, ModiaPlot - - filter = @instantiateModel(Filter) - simulate!(filter, Tsit5(), stopTime=10.0, merge=Map(T=0.5, x=0.8)) - plot(filter, ["y", "x"], figure=1) -``` - -Integrator `DifferentialEquations.Tsit5` is an -[adaptive Runge-Kutta method of order 5/4 from Tsitouras](https://www.sciencedirect.com/science/article/pii/S0898122111004706). -There are > 100 ODE integrators provided. For details, see [here](https://docs.sciml.ai/stable/solvers/ode_solve/). - -Parameters and init/start values can be changed with the `merge` keyword. -The effect is the same, as if the filter would have been instantiated with: - -```julia - filter = @instantiateModel(Filter | Map(T=0.5, x=Var(init=0.8)) -``` - -Note, with the `merge` keyword in simulate!, init/start values are directly -given as a value (`x = 0.8`) and are not defined with `Var(..)`. - -Function `simulate!` returns the value that is returned by function -[DifferentialEquations.solve](https://diffeq.sciml.ai/stable/features/ensemble/#Solving-the-Problem). -Functions of `DifferentialEquations` that operate on this return argument can therefore also be -used on the return argument of `simulate!`. - - -## 3.3 Plotting - -The [plot](https://modiasim.github.io/ModiaPlot.jl/stable/Functions.html#ModiaPlot.plot) function -generates a line plot with [GLMakie](https://github.com/JuliaPlots/GLMakie.jl). - -A short overview of the most important plot commands is given in section -section [Plotting](@ref) - - -## 3.4 State selection (DAEs) - -Modia has a sophisticated symbolic engine to transform high index DAEs -(Differential Algebraic Equations) automatically to ODEs (Ordinary Differential Equations in -state space form). During the transformation, equations might be analytically -differentiated and code might be generated to solve linear equation systems -numerically during simulation. The current engine **cannot** transform a DAE to ODE form, if the -**DAE contains nonlinear algebraic equations**. There is an (internal) prototype available to transform -nearly any DAE system to a special index 1 DAE system that can be solved with standard DAE integrators. -After a clean-up phase, this engine will be made publicly available at some time in the future. -Some of the algorithms used in Modia are -described in [Otter and Elmqvist (2017)](https://modelica.org/events/modelica2017/proceedings/html/submissions/ecp17132565_OtterElmqvist.pdf). Some algorithms are not yet published. - -Usually, the symbolic engine is only visible to the modeler, when the model has errors, -or when the number of ODE states is less than the number of DAE states. The latter case -is discussed in this section. - -The following object diagram shows two rotational inertias that are connected -by an ideal gear. One inertia is actuated with a sinusoidal torque: - -![TwoInertiasAndIdealGear](../resources/images/TwoInertiasAndIdealGear.png) - -In order to most easily understand the issues, this model -is provided in a compact, "flattened" form: - -```julia -TwoInertiasAndIdealGearTooManyInits = Model( - J1 = 50, - J2 = 100, - ratio = 2, - f = 3, # Hz - - phi1 = Var(init = 0.0), # Absolute angle of inertia1 - w1 = Var(init = 0.0), # Absolute angular velocity of inertia1 - phi2 = Var(init = 0.0), # Absolute angle of inertia2 - w2 = Var(init = 0.0), # Absolute angular velocity of inertia2 - - equations = :[ - tau = 2.0*sin(2*3.14*f*time/u"s") - - # inertia1 - w1 = der(phi1) - J1*der(w1) = tau - tau1 - - # ideal gear - phi1 = ratio*phi2 - ratio*tau1 = tau2 - - # inertia2 - w2 = der(phi2) - J2*der(w2) = tau2 - ] -) - -drive1 = @instantiateModel(TwoInertiasAndIdealGearTooManyInits) -simulate!(drive1, Tsit5(), stopTime = 1.0, logStates=true) -plot(drive1, [("phi1", "phi2"), ("w1", "w2")]) -``` - -The option `logStates=true` results in the following output: - -``` -... Simulate model TwoInertiasAndIdealGearTooManyInits - -│ # │ state │ init │ unit │ nominal │ -├───┼────────┼──────┼──────┼─────────┤ -│ 1 │ phi2 │ 0.0 │ │ NaN │ -│ 2 │ w2 │ 0.0 │ │ NaN │ -``` - -This model translates and simulates without problems. - -Changing the init-value of `w2` to `1.0` and resimulating: - -```julia -simulate!(drive1, Tsit5(), stopTime = 1.0, logStates=true, merge = Map(w2=1.0)) -``` - -results in the following error: - -``` -... Simulate model TwoInertiasAndIdealGearTooManyInits - -│ # │ state │ init │ unit │ nominal │ -├───┼───────┼──────┼──────┼─────────┤ -│ 1 │ phi2 │ 0.0 │ │ NaN │ -│ 2 │ w2 │ 1.0 │ │ NaN │ - - -Error from simulate!: -The following variables are explicitly solved for, have init-values defined -and after initialization the init-values are not respected -(remove the init-values in the model or change them to start-values): - -│ # │ name │ beforeInit │ afterInit │ -├───┼──────┼────────────┼───────────┤ -│ 1 │ w1 │ 0.0 │ 2.0 │ -``` - -The issue is the following: - -Every variable that is used in the `der` operator is a **potential ODE state**. -When an `init` value is defined for such a variable, then Modia either utilizes -this initial condition (so the variable has this value after initialization), or an -error is triggered, as in the example above. - -The model contains the equation: - -```julia -phi1 = ratio*phi2 -``` - -So the potential ODE states `phi1` and `phi2` are constrained, and only one of them -can be selected as ODE state, and the other variable is computed from this equation. -Since parameter `ratio` can be changed before simulation is started, it can be changed -also to a value of `ratio = 0`. Therefore, only when `phi2` is selected as ODE state, -`phi1` can be uniquely computed from this equation. If `phi1` would be selected as ODE state, -then a division by zero would occur, if `ratio = 0`, since `phi2 = phi1/ratio`. For this -reason, Modia selects `phi2` as ODE state. This means the **`init` value of `phi1` -has no effect**. This is uncritical, as long as initialization computes this init value -from the constraint equation above, as done in the example above. - -When differentiating the equation above: - -```julia -der(phi1) = ratio*der(phi2) # differentiated constraint equation - w1 = der(phi1) - w2 = der(phi2) -``` - -it becomes obvious, that there is also a hidden constraint equation for `w1, w2`: - -```julia -w1 = ratio*w2 # hidden constraint equation -``` - -Again, Modia selects `w2` as ODE state, and ignores the `init` value of `w1`. -In the second simulation, the `init` value of `w1` (= 0.0) is no longer consistent to the -init value of `w2` (= 1.0). Therefore, an error occurs. - -The remedy is to remove the `init` values of `phi1, w1` from the model: - -```julia -drive2 = @instantiateModel(TwoInertiasAndIdealGearTooManyInits | - Map(phi1 = Var(init=nothing), - w1 = Var(init=nothing)) ) -simulate!(drive2, Tsit5(), stopTime = 1.0, logStates=true, merge = Map(w2=1.0)) -``` - -and simulation is successful! - -Modia tries to respect `init` values during symbolic transformation. -In cases as above, this is not possible and the reported issue occurs. -In some cases, it might not be obvious, why Modia selects a particular -variable as an ODE state. You can get more information by setting -`logStateSelection=true`: - -```julia -drive1 = @instantiateModel(TwoInertiasAndIdealGearTooManyInits, logStateSelection=true) -``` - - - -# 4 Floating point types - -The types of the floating point numbers in a Modia model can be -parameterized with argument `FloatType` of macro [`@instantiateModel`](@ref): - -```julia - filter = @instantiateModel(Filter; FloatType = Float64) -``` - -By default, a floating point number has type `Float64`. - -!!! warning - Using another floating point type requires that - a DifferentialEquations.jl integrator is used that is implemented - in **native Julia**. An integrator that interfaces an integrator - implemented in C (such as `CVODE_BDF()` the popular Sundials BDF method), - cannot be used. - - -## 4.1 Lower and higher precision - -In principal, any floating point type of Julia (so any type that -is derived from `AbstractFloat`) can be used in the model and -the integrators. Examples - -| Type | Precision | Package | Usage | -|:---------|:----------|:-------------|:------------------ | -| Float32 | 7 digits | built-in | Embedded system | -| Float64 | 16 digits | built-in | Offline simulation | -| Double64 | 30 digits | [DoubleFloats](https://github.com/JuliaMath/DoubleFloats.jl) | High precision needed | -| BigFloat | arbitrary | [built-in](https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/#Arbitrary-Precision-Arithmetic) | Very high precision needed (very slow) | - -- The `Float32` type might be used to test the execution and numerics of a model - that shall later run on an embedded system target - (there is no automatic way, yet, to translate a Modia model to `C`). - -- `Double64` is a type that is constructed from two Float64 types. - The execution is much faster as the comparable Julia built-in type - [BigFloat](https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/#Arbitrary-Precision-Arithmetic-1) when set to 128 bit precision. - The `Double64` type might be used, when simulation - with `Float64` fails due to numerical reasons (for example the model is very - sensitive, or equation systems are close to singularity) or when - very stringent relative tolerances are needed, for example relative tolerance = 1e-15 - as needed for some space applications. - -In the following example, simulation is performed with a `Float32` floating point type -used for model and integrator and utilizing a Runge-Kutta integrator of -order 4 with a fixed step size of 0.01 s: - -```julia - filter = @instantiateModel(Filter, FloatType = Float32) - simulate!(filter, RK4(), adaptive=false, stopTime=10.0, interval=0.01) -``` - - -## 4.2 Uncertainties - -Package [Measurements](https://github.com/JuliaPhysics/Measurements.jl) -provides a floating point type designed for error propagation. -A floating point number is defined with a nominal value and an -uncertainty: - -```julia -using Measurements - -m1 = 2.1 ± 0.4 -m2 = 2*m1 # 4.2 ± 0.8 -m3 = m2 - m1 # 2.1 ± 0.4 -``` - -The statement `m1 = 2.1 ± 0.4` defines that `m1` has a nominal value -of `2.1` with a [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation) of `0.4`. -This means that the probability is about 95 % that the value of `m1` is in the -range `1.3 .. 2.9`. Package -[Measurements](https://github.com/JuliaPhysics/Measurements.jl) -computes the error propagation with first-order theory -(so this is typically an **approximation**) by computing -the partial derivatives of all variables with respect to all -source error definitions and computing the propagated error -with this information. The benefit is that the error bounds are typically -reasonably propagated and the computation is reasonably fast. -The drawback is that it is an approximation and will be not correct, -if the uncertainty is too large and/or the signals change too quickly -(for example are discontinuous). - -The following model defines a simple pendulum where a mass point is attached via a -rod and a revolute joint to the environment. It is described by the equations - -```math -\begin{aligned} - \frac{d\varphi}{dt} &= \omega \\ - 0 &= m \cdot L^2 \cdot \frac{d\omega}{dt} + d \cdot \omega + m \cdot g \cdot L \cdot sin(\varphi) -\end{aligned} -``` - -where ``\varphi`` is the rotation angle, ``\omega`` the angular velocity, -``m`` the mass, ``L`` the rod length, ``d`` a damping constant and -``g`` the gravity constant. This model can be defined with the commands: - -```julia -Pendulum = Model( - L = (0.8±0.1)u"m", - m = (1.0±0.1)u"kg", - d = (0.5±0.05)u"N*m*s/rad", - g = 9.81u"m/s^2", - phi = Var(init = (pi/2±0.1)*u"rad"), - w = Var(init = 0u"rad/s"), - equations = :[ - w = der(phi) - 0.0 = m*L^2*der(w) + d*w + m*g*L*sin(phi) - ] -) - -pendulum = @instantiateModel(Pendulum, FloatType=Measurements.Measurement{Float64}) -simulate!(pendulum, Tsit5(), stopTime = 10.0) -plot(pendulum, "phi") -``` - -and simulates the pendulum with uncertain parameter and init values and -results in the following plot: - -![PendulumWithUncertaintities](../resources/images/PendulumWithUncertaintities.png) - -The area around the nominal value of a variable characterizes the standard deviation. - - -## 4.3 Monte-Carlo Simulation - -The Julia package [MonteCarloMeasurements.jl](https://github.com/baggepinnen/MonteCarloMeasurements.jl) -provides calculations with particles. -A value can be defined with a distribution of say 2000 values randomly chosen according to a desired distribution and then all calculations are performed with 2000 values at the same time (corresponds to 2000 simulations that are carried out). - -In the example below, a modest form of 100 particles (100 simulations) with Uniform distributions of some -parameters and init values are defined that correspond roughly to the definition with uncertainties of the -previous section (but using uniform instead for normal distributions): - -```julia -using Modia -using DifferentialEquations -using ModiaPlot -using MonteCarloMeasurements -using Distributions -using Unitful - -const nparticles = 100 -uniform(vmin,vmax) = StaticParticles(nparticles,Distributions.Uniform(vmin,vmax)) - -Pendulum = Model( - L = uniform(0.6, 1.0), - m = uniform(0.8, 1.2), - d = uniform(0.4, 0.6), - g = 9.81, - phi = Var(init = uniform(pi/2-0.2, pi/2+0.2)), - w = Var(init = 0), - equations = :[ - w = der(phi) - 0.0 = m*L^2*der(w) + d*w + m*g*L*sin(phi) - ] -) - -pendulum = @instantiateModel(Pendulum,FloatType=StaticParticles{Float64,nparticles}) -simulate!(pendulum, Tsit5(), stopTime = 10.0) -plot(pendulum, "phi", MonteCarloAsArea=false) -``` - -The simulation result is shown in the next figure: - -![PendulumWithMonteCarlo.png](../resources/images/PendulumWithMonteCarlo.png) - -Since plot option `MonteCarloAsArea=false` is used, all 100 simulations are -shown in the plot, together with the mean value of all simulations. -The default plot behavior is to show the mean value and the area in which -all simulations are contained (this is useful, if there are much more simulations, -because GLMakie crashes when there are too many curves in a diagram). - -There are currently a few restrictions, in particular units are not yet supported in the combination -of Modia and MonteCarloMeasurements, so units are not defined in the model above. - - -# Appendix A - -## A.1 Var constructor - -The constructor `Var(..)` defines attributes of a variable with key/value pairs. -In column 1 the keys are shown. The default is that none of the keys are defined -(meaning `key = nothing`). Most of the keys are also provided as predefined constants as shown -in column 2 and 3. These constants can be used as shortcuts: - -| Var key | ShortCut | Shortcut value | Description | -|:---------- |:----------|:----------------------|:---------------------------------------------------| -| parameter | parameter | Var(parameter = true) | If true, value is fixed during simulation | -| input | input | Var(input = true) | If true, input signal | -| output | output | Var(output = true) | If true, output signal | -| potential | potential | Var(potential = true) | If true, potential variable | -| flow | flow | Var(flow = true) | If true, flow variable | -| init | -- | -- | Initial value of ODE state (defines unit and size) | -| start | -- | -- | Start value of variable (defines unit and size) | - -Example: - -```julia -v = output | Var(start = zeros(3)u"N*m") - -# Same as: v = Var(output = true, start = zeros(3)u"N*m") -``` - -An attribute can be removed by using a value of `nothing`. Example: - -```julia -System1 = Model(v = input | Var(init = 1.0), ...) - -# System2 = Model(v = input, ...) -System2 = System1 | Map(v = Var(init = nothing), ...) -``` - -The following attributes are also defined for constructor `Var`, -but have **no effect yet**. -Using `min, max, info` already now, might be useful for model libraries: - -| Var Key | Shortcut | Shortcut value | Description | -|:--------- |:------------------|:----------------------|:---------------------------------| -| constant | constant | Var(constant = true) | If true, value cannot be changed | -| min, max | interval(a,b) | Var(min = a, max = b) | Allowed variable value range | -| info | info"..." | Var(info="...") | Description | - -Example: -```julia -v = output | interval(0.0,1.0) | Var(start = zeros(3)u"N*m") | info"An output variable" - -# Same as: v = Var(output = true, min = 0.0, max = 1.0, -# start = zeros(3)u"N*m", info = "An output variable") -``` - - -## A.2 Named tuples and quoted expressions - -The fundamental mechanism for defining models in Modia are named tuples which is a list of key/value pairs enclosed in parentheses: - -```julia -julia> S=(p=5, q=10) -(p = 5, q = 10) - -julia> typeof(S) -NamedTuple{(:p, :q),Tuple{Int64,Int64}} -``` - -Named tuples are conceptually similar to dictionaries (Dict), but the constructor syntax is simpler. Note that if only one key/value pair is given, a comma must preceed the final parentheses: `(p = 5, )`. It is also possible to define named tuples using a keyword argument list, i.e. a list starting with a semi-colon: `z=(;p=5)`. - -The values can also be a quoted expression, i.e. an expression enclosed in `:( )`, an array of quoted expressions encloded in `:[ ]` or just a quoted symbol, `:x`. This mechanism is used to encode equations and expressions of the model which needs to be manipulated before the model can be simulated. - -Julia defines a very useful merge operation between named tuples (and dictionaries): - -```julia -julia> T=(q=100, r=200) -(q = 100, r = 200) - -julia> merge(S, T) -(p = 5, q = 100, r = 200) -``` - -If a key already exists `q` in the first named tuple, it's value is overwritten otherwise it's added, `r`. Such a merge semantics allows for unification of parameter modifications and inheritance as will be demonstrated below. - -## A.3 MergeModels algorithm - -The `mergeModels` algorithm is defined as follows (without logging): - -```julia -function mergeModels(m1::NamedTuple, m2::NamedTuple, env=Symbol()) - mergedModels = OrderedDict{Symbol,Any}(pairs(m1)) # Convert the named tuple m1 to an OrderedDict - for (k,v) in collect(pairs(m2)) - if typeof(v) <: NamedTuple - if k in keys(mergedModels) && ! (:_redeclare in keys(v)) - mergedModels[k] = mergeModels(mergedModels[k], v, k) - else - mergedModels[k] = v - end - elseif v === nothing - delete!(mergedModels, k) - else - mergedModels[k] = v - end - end - return (; mergedModels...) # Transform OrderedDict to named tuple -end - -|(m::NamedTuple, n::NamedTuple) = mergeModels(m, n) - -Redeclare = ( _redeclare = true, ) -``` diff --git a/docs/src/index.md b/docs/src/index.md deleted file mode 100644 index b901e60..0000000 --- a/docs/src/index.md +++ /dev/null @@ -1,64 +0,0 @@ -# Modia Documentation - -[Modia](https://github.com/ModiaSim/Modiajl) is a Julia package for modeling and simulation of multidomain engineering systems (electrical, 3D mechanical, fluid, etc.) described by differential equations, algebraic equations, and (space-discretized) partial differential equations. It shares many powerful features of the -[Modelica language](https://www.modelica.org/modelicalanguage), together with new features not available in Modelica. -A user defines a model on a high level with model components (like a mechanical body, an electrical resistance, or a pipe) that are physically connected together. A model component is constructed by "expression = expression" equations. The defined model is symbolically processed (for example, equations might be analytically differentiated) -From the transformed model a Julia function is generated that is used to simulate the model with integrators from [DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl). -Units are supported via [Unitful.jl](https://github.com/PainterQubits/Unitful.jl) , uncertainty modeling is performed with [Measurements.jl](https://github.com/JuliaPhysics/Measurements.jl), Monte Carlo simulation is performed with [MonteCarloMeasurements.jl](https://github.com/baggepinnen/MonteCarloMeasurements.jl). - -Plotting is performed with package [ModiaPlot](https://github.com/ModiaSim/ModiaPlot.jl) as convenient interface to GLMakie. - - -## Installation - -Modia and ModiaPlot are registered and are installed with (Julia >= 1.5 is required): - -```julia -julia> ]add Modia, ModiaPlot -``` - -It is recommended to also add the following packages, in order that all tests and examples can be executed in your standard environment: - -```julia -julia> ]add Measurements, MonteCarloMeasurements, Distributions -``` - -## Release Notes - -### Version 0.7.2 - -- Missing dependency of Test package added. - -### Version 0.7.1 - -- Variable constructor `Var(...)` introduced. For example: - `v = input | Var(init = 1.2u"m")`. - For details see section [A.1 Var constructor](@ref). - -- Functions are called in the scope where macro [`@instantiateModel`](@ref) is called. - -- New arguments of function [`simulate!`](@ref): - - Parameter and init/start values can be changed with argument `merge`. - - A simulation can be checked with argument `requiredFinalStates`. - - Argument `logParameters` lists the parameter and init/start values used for the simulation. - - Argument `logStates` lists the states, init, and nominal values used for the simulation. - -- `end` in array ranges is supported, for example `v[2:end]`. - -- New (small) model library `Modia/models/HeatTransfer.jl`. - -- [Modia Tutorial](@ref) improved. - -- [Functions](@ref) docu improved. - -### Version 0.7.0 - -- Initial version, based on code developed for Modia 0.6 and ModiaMath 0.6. - - -## Main developers - -- [Hilding Elmqvist](mailto:Hilding.Elmqvist@Mogram.net), [Mogram](http://www.mogram.net/). - -- [Martin Otter](https://rmc.dlr.de/sr/en/staff/martin.otter/), - [DLR - Institute of System Dynamics and Control](https://www.dlr.de/sr/en). \ No newline at end of file diff --git a/examples/Pendulum.jl b/examples/Pendulum.jl deleted file mode 100644 index b0b28af..0000000 --- a/examples/Pendulum.jl +++ /dev/null @@ -1,36 +0,0 @@ -module PendulumSimulation - -using Modia, ModiaPlot, Measurements - -Pendulum = Model( - L = 0.8u"m", - m = 1.0u"kg", - d = 0.5u"N*m*s/rad", - g = 9.81u"m/s^2", - phi = Var(init = 1.57*u"rad"), - w = Var(init = 0u"rad/s"), - equations = :[ - w = der(phi) - 0.0 = m*L^2*der(w) + d*w + m*g*L*sin(phi) - r = [L*cos(phi), -L*sin(phi)] - ] -) - - -pendulum1 = @instantiateModel(Pendulum) -simulate!(pendulum1, Tsit5(), stopTime = 10.0u"s", log=true) -plot(pendulum1, [("phi", "w"); "r"], figure = 1) - - -PendulumWithUncertainties = Pendulum | Map(L = (0.8 ± 0.2)u"m", - m = (1.0 ± 0.2)u"kg", - d = (0.5 ± 0.2)u"N*m*s/rad") - -pendulum2 = @instantiateModel(PendulumWithUncertainties, - FloatType = Measurement{Float64}) - -simulate!(pendulum2, Tsit5(), stopTime = 10.0u"s") -plot(pendulum2, [("phi", "w"); "r"], figure = 2) - - -end \ No newline at end of file diff --git a/examples/Tutorial.jl b/examples/Tutorial.jl deleted file mode 100644 index b56ca68..0000000 --- a/examples/Tutorial.jl +++ /dev/null @@ -1,234 +0,0 @@ -module Tutorial - -using Modia, ModiaPlot - -# 1 Getting started - -using Modia, ModiaPlot - -# Define model -SimpleModel = Model( - T = 0.4, - x = Var(init=0.2), - equation = :[T * der(x) + x = 1], -) - -# Transform to ODE form -simpleModel = @instantiateModel(SimpleModel) - -# Simulate with a default integrator of DifferentialEquations -simulate!(simpleModel, stopTime = 1.2) - -# Simulate with a specific integrator (Tsit5) and use a unit for stopTime -simulate!(simpleModel, Tsit5(), stopTime = 1.2u"s") - -# Produce a line plot with GLMakie -plot(simpleModel, ("x", "der(x)"), figure=1) - - - -# 2.1 - Equation oriented models - -using Modia - -LowPassFilter = Model( - T = 0.2, - u = input, - y = output | Var(:x), - x = Var(init=0), - equation = :[T * der(x) + x = u], -) - - - -# 2.2 Merging models - -HighPassFilter = LowPassFilter | Model( y = :(-x + u) ) - -setLogMerge(true) - -LowAndHighPassFilter = LowPassFilter | Model( - y = nothing, - low = output | Var(:x), - high = output | Var(:(-x + u)), - ) - -setLogMerge(false) - -@showModel LowAndHighPassFilter - - - -# 2.3 Functions and tables - -TestLowAndHighPassFilter = LowAndHighPassFilter | Model( - u = :(sin( (time+1u"s")*u"1/s/s" * time)*u"V"), - x = Var(init=0.2u"V") - ) - - -using Interpolations - -table = CubicSplineInterpolation(0:0.5:2.0, [0.0, 0.7, 2.0, 1.8, 1.2]) -TestLowAndHighPassFilter2 = TestLowAndHighPassFilter | Map(u = :(table(time*u"1/s")*u"V")) - - - -# 2.4 Hierarchical modeling - -TwoFilters = ( - high = HighPassFilter, - low = LowPassFilter, -) - -BandPassFilter = ( - u = input, - y = output, - high = HighPassFilter | Map(T=0.5, x=Var(init=0.1u"V")), - low = LowPassFilter | Map(x=Var(init=0.2u"V")), - equations = :[ - high.u = u, - low.u = high.y, - y = low.y] -) - -TestBandPassFilter = BandPassFilter | Map( - u = :(sin( (time+1u"s")*u"1/s/s" * time)*u"V") - ) - -#bandPassFilter = @instantiateModel(TestBandPassFilter) -#simulate!(bandPassFilter, Tsit5(), stopTime = 50u"s") -#plot(bandPassFilter, ["u", "y"], figure=2) - - -# 2.5 Physically oriented modeling - -# 2.5.1 Connectors - -Pin = Model( v = potential, i = flow ) - - -# 2.5.2 Components - -Resistor = Model( - R = 1.0u"Ω", - p = Pin, - n = Pin, - equations = :[ - 0 = p.i + n.i - v = p.v - n.v - i = p.i - R*i = v ] - ) - - -# 2.5.3 Inheritance - -OnePort = Model( - p = Pin, - n = Pin, - partialEquations = :[ - 0 = p.i + n.i - v = p.v - n.v - i = p.i ] ) - -Resistor = OnePort | Model( R = 1.0u"Ω", equation = :[ R*i = v ], ) - -Capacitor = OnePort | Model( C = 1.0u"F", v=Map(init=0.0u"V"), equation = :[ C*der(v) = i ] ) - -Inductor = OnePort | Model( L = 1.0u"H", i=Map(init=0.0u"A"), equation = :[ L*der(i) = v ] ) - -ConstantVoltage = OnePort | Model( V = 1.0u"V", equation = :[ v = V ] ) - - - -# 2.5.5 Connected models - -Filter = ( - R = Resistor | Map(R=0.5u"Ω"), - C = Capacitor | Map(C=2.0u"F"), - V = ConstantVoltage | Map(V=10.0u"V"), - connect = :[ - (V.p, R.p) - (R.n, C.p) - (C.n, V.n) - ] -) - - -# 2.5.6 Parameter propagation - -Filter2 = Model( - r = 2.0u"Ω", - c = 1.0u"F", - v = 10u"V", - R = Resistor | Map(R=:r), - C = Capacitor | Map(C=:c), - V = ConstantVoltage | Map(V=:v), - connect = :[ - (V.p, R.p) - (R.n, C.p) - (C.n, V.n) - ] -) - -TwoFilters = Model( f1 = Filter | Map( r = 10.0, c = 2.0), f2 = Filter ) - - -# 2.5.7 Redeclarations - -VoltageDividerAndFilter = TwoFilters | Map(f1 = Map(C = Redeclare | Resistor | Map(R = 20.0))) - - -# 2.6 Arrays - - -StateSpace = Model( - A = fill(0.0,0,0), - B = fill(0.0,0,0), - C = fill(0.0,0,0), - D = fill(0.0,0,0), - u = input, - y = output, - x = Var(init = zeros(0)), - equations = :[ - der(x) = A*x + B*u - y = C*x + D*u - ] -) - -col(args...) = hvcat(1, args...) # Construct a column matrix from a vector - -SecondOrder = Model( - w = 20.0, - D = 0.1, - k = 2.0, - sys = StateSpace | Map(A = :([ 0 1; - -w^2 -2*D*w]), - B = :(col([0; w^2])), - C = :([k 0]), - D = :(zeros(1,1)), - x = Var(init = zeros(2)) ), - equations = :[sys.u = [1.0]] -) - - -# 2.7 Model libraries - -FilterCircuit = Model( - R = Modia.Resistor | Map(R=0.5u"Ω"), - C = Modia.Capacitor | Map(C=2.0u"F", v=Var(init=0.1u"V")), - V = Modia.ConstantVoltage | Map(V=10.0u"V"), - ground = Modia.Ground, - connect = :[ - (V.p, R.p) - (R.n, C.p) - (C.n, V.n, ground.p) - ] -) - -filterCircuit = @instantiateModel(FilterCircuit) -simulate!(filterCircuit, Tsit5(), stopTime=10.0) -plot(filterCircuit, ["C.v", "C.i"], figure=3) - -end \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..d7d02bb --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + +Home · Modia + + +

+Switch to stable documentation
+

+ + diff --git a/models/AllModels.jl b/models/AllModels.jl deleted file mode 100644 index c048d8b..0000000 --- a/models/AllModels.jl +++ /dev/null @@ -1,5 +0,0 @@ -include("Blocks.jl") -include("Electric.jl") -include("Rotational.jl") -include("HeatTransfer.jl") -include("Rotational.jl") \ No newline at end of file diff --git a/models/Blocks.jl b/models/Blocks.jl deleted file mode 100644 index d63746a..0000000 --- a/models/Blocks.jl +++ /dev/null @@ -1,149 +0,0 @@ -""" -Modia module with block component models (inspired from Modelica Standard Library). - -* Developer: Hilding Elmqvist, Mogram AB, Martin Otter, DLR -* Copyright (c) 2016-2021: Hilding Elmqvist, Martin Otter -* License: MIT (expat) - -""" -#module Blocks - -using Modia - -#export Gain, FirstOrder, Feedback, PI, Step, Ramp # Sine, Switch, MIMO - - -# Single-Input-Single-Output continuous control block -SISO = Model( - u = input, - y = output -) - -# Gain -Gain = SISO | Model( - k = 1, # (info = "Gain") - equations = :[ - y = k*u ] -) - -# First-order transfer function block (= 1 pole) -FirstOrder = SISO | Model( - k = 1.0, - T = 1.0*u"s", - x = Var(init=0.0), - equations = :[ - der(x) = (k * u - x) / T - y = x ] -) - -# Output difference between commanded and feedback input -Feedback = Model( - u1 = input | info"Input 1", - u2 = input | info"Input 2", - y = output | info"Output signal", - equations = :[ - y = u1 - u2 ] -) - -# Proportional-Integral controller -PI = SISO | Model( - k = 1.0, # (info = "Gain") - T = 1.0u"s", # (min = 1E-10, info = "Time Constant (T>0 required)") - x = Var(init=0.0), - equations = :[ - der(x) = u / T - y = k * (x + u) ] -) - -# Single-Output continuous control block -SO = Model( - y = output -) - -# Base class for a continuous signal source -SignalSource = SO | Model( - offset = 0.0, # info = "Offset of output signal y" - startTime = 0.0*u"s" # info = "Output y = offset for time < startTime") -) - -# Step signal -Step = SignalSource | Model( - height = 1.0, - equations = :[ - y = offset + (time < startTime ? 0*height : height) ] # 0*height is needed, if height has a unit -) - -# Ramp signal -Ramp = SignalSource | Model( - height = 1.0, - duration = 2.0u"s", - equations = :[ - y = offset + (time < startTime ? 0.0*height : # 0*height is needed, if height has a unit - (time < startTime + duration ? (time - startTime)*height/duration : - height)) ] -) - - -# Linear state space system -StateSpace = Model( - A = fill(0.0,0,0), - B = fill(0.0,0,0), - C = fill(0.0,0,0), - D = fill(0.0,0,0), - u = input, - y = output, - x = Var(init = zeros(0)), - equations = :[ - der(x) = A*x + B*u - y = C*x + D*u - ] -) - - - - -# ------------------------------------------------------- - -#= -# Sinusoidal signal -@model Sine begin - amplitude = Parameter(1.0, info = "Amplitude of sine wave") - freqHz = Parameter(1.0,info = "Frequency of sine wave") - phase = Parameter(0.0, info = "Phase of sine wave") - offset = Parameter(0.0, info = "Offset of output signal y") - startTime = Parameter(0.0, info = "Output y = offset for time < startTime") - SO() -equations - y = offset + if time < startTime; 0 else amplitude*sin(2*pi*freqHz*(time - startTime) + phase) end -end - -@model Sine2 begin - # Generate sine signal - amplitude = Parameter(1.0, info = "Amplitude of sine wave") - freqHz = Parameter(1.0,info = "Frequency of sine wave") - phase = Parameter(0.0, info = "Phase of sine wave") - SignalSource() -equations - y = offset + if time < startTime; 0 else amplitude * sin(2 * pi * freqHz * (time - startTime) + phase) end -end - -# Switch -@model Switch begin - sw = Input(Boolean(info = "Switch position (if `true`, use `u1`, else use `u2`)")) - u1 = Input(info = "Input 1") - u2 = Input(info = "Input 2") - y = Output(info = "Output signal") -equations - y = if sw; u1 else u2 end -end - -# ABCD model -@model ABCD(A = -1, B = 1, C = 1, D = 0) begin - u = Input(info = "Input signal"); y = Output(info = "Output signal") - x = Float(start = 0) -equations - der(x) = A * x + B * u - y = C * x + D * u -end -=# -#end diff --git a/models/Electric.jl b/models/Electric.jl deleted file mode 100644 index de2a15b..0000000 --- a/models/Electric.jl +++ /dev/null @@ -1,165 +0,0 @@ -""" -Modia module with electric component models (inspired from Modelica Standard Library). - -* Developer: Hilding Elmqvist, Mogram AB -* Copyright (c) 2016-2021: Hilding Elmqvist -* License: MIT (expat) - -""" -#module Electric - -using Modia - -Pin = Model( v = potential, i = flow ) - -OnePort = Model( p = Pin, n = Pin, partialEquations = :[ - v = p.v - n.v - 0 = p.i + n.i - i = p.i ] - ) - -""" - Resistor(R=1.0u"Ω") - -Electrical resistor - -`R` - Resistance Ω -""" -Resistor = OnePort | Model( R = 1.0u"Ω", equations = :[ R*i = v ] ) -# @showModel(Resistor) - -Capacitor = OnePort | Model( C = 1.0u"F", v=Var(init=0.0u"V"), equations = :[ C*der(v) = i ] ) - -Inductor = OnePort | Model( L = 1.0u"H", i=Var(init=0.0u"A"), equations = :[ L*der(i) = v ] ) - -ConstantVoltage = OnePort | Model( V = 1.0u"V", equations = :[ v = V ] ) - -Ground = Model( p = Pin, equations = :[ p.v = 0.0u"V" ] ) - -# Ideal operational amplifier (norator-nullator pair), but 3 pins -IdealOpAmp3Pin = Model( - in_p = Pin, - in_n = Pin, - out = Pin, - equations = :[ - in_p.v = in_n.v - in_p.i = 0u"A" - in_n.i = 0u"A" ] -) - -# Partial generic voltage source using the input signal as source voltage -PartialSignalVoltage = Model( - v = input, - p = Pin, - n = Pin -) - -# Generic voltage source using the input signal (without and with unit) as source voltage -SignalVoltage = PartialSignalVoltage | Model( - equations = :[ - p.v - n.v = v - 0 = p.i + n.i - i = p.i ] -) -UnitlessSignalVoltage = PartialSignalVoltage | Model( - equations = :[ - p.v - n.v = v*u"V" - 0 = p.i + n.i - i = p.i ] -) - - -# Partial sensor to measure the current in a branch -PartialCurrentSensor = Model( - i = output, - p = Pin, # (info = "Positive pin") - n = Pin, # (info = "Negative pin") -) - -# Sensor to measure the current in a branch -CurrentSensor = PartialCurrentSensor | Model( - equations = :[ - p.v = n.v - 0 = p.i + n.i - i = p.i] -) -UnitlessCurrentSensor = PartialCurrentSensor | Model( - equations = :[ - p.v = n.v - 0 = p.i + n.i - i = p.i/u"A"] -) - - -#= -# Step voltage source -@model StepVoltage begin - V = Parameter(1.0, start = 1.0, info = "Voltage") #, T = Unitful.V) - startTime = Parameter(0.0, start = 0.0, info = "Start time") # , T = Unitful.s) - OnePort() -equations - v = if time < startTime; 0 else V end -end - -@model VoltageSource begin - OnePort() - offset = Par(0.0) # Voltage offset - startTime = Par(0.0) # Time offset - signalSource = SignalSource(offset=offset, startTime=startTime) -equations - v = signalSource.y -end - -#= -@model SineVoltage1 begin - # Sine voltage source - V = Parameter() # Amplitude of sine wave - phase = Par(0.0) # Phase of sine wave - freqHz = Parameter() # Frequency of sine wave - VoltageSource(signalSource=Sine(amplitude=V, freqHz=freqHz, phase=phase)) -end -=# - -# Sinusoidal voltage source -@model SineVoltage begin - V = Parameter() # Amplitude of sine wave - phase = Par(0.0) # Phase of sine wave - freqHz = Parameter() # Frequency of sine wave - VoltageSource() -equations - v = V*sin(10*time) -end - - -# Ideal diode -@model IdealDiode begin # Ideal diode - OnePort() - Ron = Par(1.0E-2) # Forward state-on differential resistance (closed diode resistance) - Goff = Par(1.0E-2) # Backward state-off conductance (opened diode conductance) - Vknee = Par(0) # Forward threshold voltage - # off = Variable(start=true) # Switching state - s = Float(start=0.0) # Auxiliary variable for actual position on the ideal diode characteristic - #= - s = 0: knee point - s < 0: below knee point, diode conducting - s > 0: above knee point, diode locking - =# -equations - # off := s < 0 -# v = s * if !positive(s); 1 else Ron end + Vknee -# i = s * if !positive(s); Goff else 1 end + Goff * Vknee - v = s * if !(s>0); 1 else Ron end + Vknee - i = s * if !(s>0); Goff else 1 end + Goff * Vknee -end - -@model Diode begin - OnePort() - Ids=Par(1.e-6) # "Saturation current"; - Vt=Par(0.04) # "Voltage equivalent of temperature (kT/qn)"; - Maxexp = Par(15) # "Max. exponent for linear continuation"; - R=Par(1.e8) # "Parallel ohmic resistance"; -equations - i = if v/Vt > Maxexp; Ids*(exp(Maxexp)*(1 + v/Vt - Maxexp) - 1) else Ids*(exp(v/Vt) - 1) end + v/R -end -=# -#end diff --git a/models/ElectricTest.jl b/models/ElectricTest.jl deleted file mode 100644 index f642f23..0000000 --- a/models/ElectricTest.jl +++ /dev/null @@ -1,199 +0,0 @@ -""" -Modia module with electric component models (inspired from Modelica Standard Library). - -* Developer: Hilding Elmqvist, Mogram AB -* Copyright (c) 2016-2021: Hilding Elmqvist -* License: MIT (expat) - -""" -#module Electric - -using Modia - -Var(args...; kwargs...) = (;args..., kwargs...) -Var(value::Union{Float64, Int64, Bool, String, Expr}, args...; kwargs...) = (;value = value, args..., kwargs...) - -parameter = :parameter => true -input = :input => true -output = :output => true -potential = :potential => true -flow = :flow => true - -v = Var(potential, nominal=10) -@show v - -v = Var(5, parameter, min=0) -@show v - -v = Var(potential, min=0, flow, nominal=10) -@show v - -Pin = Model( v = Var(potential, nominal=10), i = Var(flow) ) -@show Pin - - -Input(; kwargs...) = (;input=true, kwargs...) -Output(; kwargs...) = (;output=true, kwargs...) -Potential(; kwargs...) = (;potential=true, kwargs...) -Flow(; kwargs...) = (;flow=true, kwargs...) - - -Pin = Model( v = Potential(nominal=10), i = Flow() ) - -@show Pin - - - -#Pin = Model( potentials = :[v], flows = :[i] ) -Pin = Model( v = Var(;pot), i = Var(;flow) ) - -OnePort = Model( p = Pin, n = Pin, partialEquations = :[ - v = p.v - n.v - 0 = p.i + n.i - i = p.i ] - ) - -""" - Resistor(R=1.0u"Ω") - -Electrical resistor - -`R` - Resistance Ω -""" -Resistor = OnePort | Model( R = 1.0u"Ω", equations = :[ R*i = v ] ) - -Capacitor = OnePort | Model( C = 1.0u"F", v = Map(init=0.0u"V"), equations = :[ C*der(v) = i ] ) - -Inductor = OnePort | Model( L = 1.0u"H", init=Map(i=0.0u"A"), equations = :[ L*der(i) = v ] ) - -ConstantVoltage = OnePort | Model( V = 1.0u"V", equations = :[ v = V ] ) - -Ground = Model( p = Pin, equations = :[ p.v = 0.0u"V" ] ) - -# Ideal operational amplifier (norator-nullator pair), but 3 pins -IdealOpAmp3Pin = Model( - in_p = Pin, - in_n = Pin, - out = Pin, - equations = :[ - in_p.v = in_n.v - in_p.i = 0u"A" - in_n.i = 0u"A" ] -) - -# Partial generic voltage source using the input signal as source voltage -PartialSignalVoltage = Model( - inputs = :[v], - p = Pin, - n = Pin -) - -# Generic voltage source using the input signal (without and with unit) as source voltage -SignalVoltage = PartialSignalVoltage | Model( - equations = :[ - p.v - n.v = v - 0 = p.i + n.i - i = p.i ] -) -UnitlessSignalVoltage = PartialSignalVoltage | Model( - equations = :[ - p.v - n.v = v*u"V" - 0 = p.i + n.i - i = p.i ] -) - - -# Partial sensor to measure the current in a branch -PartialCurrentSensor = Model( - outputs = :[i], - p = Pin, # (info = "Positive pin") - n = Pin, # (info = "Negative pin") -) - -# Sensor to measure the current in a branch -CurrentSensor = PartialCurrentSensor | Model( - equations = :[ - p.v = n.v - 0 = p.i + n.i - i = p.i] -) -UnitlessCurrentSensor = PartialCurrentSensor | Model( - equations = :[ - p.v = n.v - 0 = p.i + n.i - i = p.i/u"A"] -) - - -#= -# Step voltage source -@model StepVoltage begin - V = Parameter(1.0, start = 1.0, info = "Voltage") #, T = Unitful.V) - startTime = Parameter(0.0, start = 0.0, info = "Start time") # , T = Unitful.s) - OnePort() -equations - v = if time < startTime; 0 else V end -end - -@model VoltageSource begin - OnePort() - offset = Par(0.0) # Voltage offset - startTime = Par(0.0) # Time offset - signalSource = SignalSource(offset=offset, startTime=startTime) -equations - v = signalSource.y -end - -#= -@model SineVoltage1 begin - # Sine voltage source - V = Parameter() # Amplitude of sine wave - phase = Par(0.0) # Phase of sine wave - freqHz = Parameter() # Frequency of sine wave - VoltageSource(signalSource=Sine(amplitude=V, freqHz=freqHz, phase=phase)) -end -=# - -# Sinusoidal voltage source -@model SineVoltage begin - V = Parameter() # Amplitude of sine wave - phase = Par(0.0) # Phase of sine wave - freqHz = Parameter() # Frequency of sine wave - VoltageSource() -equations - v = V*sin(10*time) -end - - -# Ideal diode -@model IdealDiode begin # Ideal diode - OnePort() - Ron = Par(1.0E-2) # Forward state-on differential resistance (closed diode resistance) - Goff = Par(1.0E-2) # Backward state-off conductance (opened diode conductance) - Vknee = Par(0) # Forward threshold voltage - # off = Variable(start=true) # Switching state - s = Float(start=0.0) # Auxiliary variable for actual position on the ideal diode characteristic - #= - s = 0: knee point - s < 0: below knee point, diode conducting - s > 0: above knee point, diode locking - =# -equations - # off := s < 0 -# v = s * if !positive(s); 1 else Ron end + Vknee -# i = s * if !positive(s); Goff else 1 end + Goff * Vknee - v = s * if !(s>0); 1 else Ron end + Vknee - i = s * if !(s>0); Goff else 1 end + Goff * Vknee -end - -@model Diode begin - OnePort() - Ids=Par(1.e-6) # "Saturation current"; - Vt=Par(0.04) # "Voltage equivalent of temperature (kT/qn)"; - Maxexp = Par(15) # "Max. exponent for linear continuation"; - R=Par(1.e8) # "Parallel ohmic resistance"; -equations - i = if v/Vt > Maxexp; Ids*(exp(Maxexp)*(1 + v/Vt - Maxexp) - 1) else Ids*(exp(v/Vt) - 1) end + v/R -end -=# -#end diff --git a/models/HeatTransfer.jl b/models/HeatTransfer.jl deleted file mode 100644 index 061891a..0000000 --- a/models/HeatTransfer.jl +++ /dev/null @@ -1,73 +0,0 @@ -#= -Modia library with 1D heat transfer component models (inspired from Modelica Standard Library). - -Developer: Martin Otter, DLR-SR -Copyright 2021, DLR Institute of System Dynamics and Control -License: MIT (expat) -=# - -using Modia - -HeatPort = Model( T = potential, # Absolute temperature - Q_flow = flow ) # Heat flow into the component - -FixedTemperature = Model( - T = 293.15u"K", - port = HeatPort, - equations = :[port.T = T] -) - - -FixedHeatFlow = Model( - Q_flow = 0.0u"W", # Fixed heat flow into the connected component - port = HeatPort, - equations = :[port.Q_flow = -Q_flow] -) - - -HeatCapacitor = Model( - C = 1.0u"J/K", - port = HeatPort, - T = Var(init = 293.15u"K"), - equations = :[T = port.T, - der(T) = port.Q_flow/C] -) - - -ThermalConductor = Model( - G = 1.0u"W/K", - port_a = HeatPort, - port_b = HeatPort, - equations = :[dT = port_a.T - port_b.T - 0 = port_a.Q_flow + port_b.Q_flow - port_a.Q_flow = G*dT] -) - - - -# Fully insulated rod with 1D heat transfer and port_a/port_b on left/right side - -T_grad1(T,Ta,dx,i) = i == 1 ? (Ta - T[1])/(dx/2) : (T[i-1] - T[i] )/dx -T_grad2(T,Tb,dx,i) = i == length(T) ? (T[i] - Tb)/(dx/2) : (T[i] - T[i+1])/dx - -InsulatedRod = Model( - L = 1.0u"m", # Length of rod - A = 0.0004u"m^2", # Rod area - rho = 7500.0u"kg/m^3", # Density of rod material - lambda = 74.0u"W/(m*K)", # Thermal conductivity of rod material - c = 450.0u"J/(kg*K)", # Specific heat capacity of rod material - port_a = HeatPort, # Heat port on left side - port_b = HeatPort, # Heat port on right side - T = Map(init = fill(293.15u"K", 1)), # Initial temperature and number of nodes - equations = :[ - n = length(T) - dx = L/n - Ce = c*rho*A*dx - k = lambda*A/Ce - der(T) = k*[T_grad1(T,port_a.T,dx,i) - T_grad2(T,port_b.T,dx,i) for i in eachindex(T)] - port_a.Q_flow = lambda*A*(port_a.T - T[1])/(dx/2) - port_b.Q_flow = lambda*A*(port_b.T - T[n])/(dx/2) - ] -) - - diff --git a/models/Rotational.jl b/models/Rotational.jl deleted file mode 100644 index 358f082..0000000 --- a/models/Rotational.jl +++ /dev/null @@ -1,181 +0,0 @@ -""" -Modia module with rotational component models (inspired from Modelica Standard Library). - -* Developer: Hilding Elmqvist, Mogram AB, Martin Otter, DLR -* Copyright (c) 2016-2021: Hilding Elmqvist, Martin Otter -* License: MIT (expat) - -""" -#module Rotational - -#export Flange, Inertia, Spring, SpringDamper, EMF, IdealGear, Torque, CurrentSensor, Fixed, Damper, IdealGear_withSupport, SpeedSensor - -using Modia - -# Connector for 1D rotational systems -Flange = Model( - phi = potential, - tau = flow -) - -# Flange fixed in housing at a given angle -#= -Fixed = Model( - flange = Flange, - phi0 = 0.0u"rad", - equations = :[ - flange.phi = 0.0u"rad"] -) -=# -Fixed = Model( - flange = Flange, - equations = :[ - flange.phi = 0.0] -) - -# 1D-rotational component with inertia -Inertia = Model( - flange_a = Flange, # (info = "Left flange of shaft") - flange_b = Flange, # (info = "Right flange of shaft") - J = 1.0u"kg*m^2", # (0, min=0, info = "Moment of inertia") #, T = u"kg*m^2") - phi = Var(init=0.0u"rad"), - w = Var(init=0.0u"rad/s"), - equations = :[ - phi = flange_a.phi - phi = flange_b.phi - w = der(phi) - a = der(w) - J * a = flange_a.tau + flange_b.tau ] -) - -# Partial model for the compliant connection of two rotational 1-dim. shaft flanges -PartialCompliant = Model( - flange_a = Flange, - flange_b = Flange, - partialEquations = :[ - phi_rel = flange_b.phi - flange_a.phi - flange_b.tau = tau - flange_a.tau = -tau ] -) - -# Linear 1D rotational spring -Spring = PartialCompliant | Model( - c = 1.0u"N*m/rad", # (min = 0, info = "Spring constant") - phi_rel0 = 0u"rad", # (info = "Unstretched spring angle") - equations = :[ - tau = c * (phi_rel - phi_rel0) ] -) - -# Linear 1D rotational spring with damper -SpringDamper = PartialCompliant | Model( - c = 1.0*u"N*m/rad", # (min = 0, info = "Spring constant") - d = 0.0u"N*m*s/rad", # (info = "Damping constant") - phi_rel0 = 0u"rad", # (info = "Unstretched spring angle") - equations = :[ - tau = c * (phi_rel - phi_rel0) + d * der(phi_rel) ] -) - -# Electromotoric force (electric/mechanic) transformer -EMF = Model( - k = 1.0u"N*m/A", # (info = "Transformation coefficient") - p = Pin, - n = Pin, - flange = Flange, - - equations = :[ - v = p.v - n.v - 0 = p.i + n.i - i = p.i - - phi = flange.phi - w = der(phi) - k * w = v - flange.tau = -k * i ] -) - -# Ideal gear -IdealGear = Model( - flange_a = Flange, # "Left flange of shaft" - flange_b = Flange, # "Right flange of shaft" - ratio = 1.0, # "Transmission ratio (flange_a.phi/flange_b.phi)" - equations = :[ - phi_a = flange_a.phi - phi_b = flange_b.phi - phi_a = ratio * phi_b - 0 = ratio * flange_a.tau + flange_b.tau ] -) - -# Ideal gear with support -IdealGear_withSupport = Model( - flange_a = Flange, # "Left flange of shaft" - flange_b = Flange, # "Right flange of shaft" - support = Flange, # "Support flange" - ratio = 1.0, # "Transmission ratio" - equations = :[ - phi_a = flange_a.phi - support.phi - phi_b = flange_b.phi - support.phi - phi_a = ratio * phi_b - 0 = ratio * flange_a.tau + flange_b.tau - 0 = flange_a.tau + flange_b.tau + support.tau ] -) - - -# Partial input signal acting as external torque on a flange -PartialTorque = Model( - tau = input, - flange = Flange -) - -# Input signal acting as external torque on a flange -Torque = PartialTorque | Model(equations = :[flange.tau = -tau]) -UnitlessTorque = PartialTorque | Model(equations = :[flange.tau = -tau*u"N*m"]) - -#= -# Partial model for the compliant connection of two rotational 1-dim. shaft flanges where the relative angle and speed are used as preferred states -PartialCompliantWithRelativeStates = Model( - flange_a = Flange, - flange_b = Flange, - init = Map(phi_rel=0.0u"rad", w_rel=0.0u"rad/s"), - equations = :[ - phi_rel = flange_b.phi - flange_a.phi - w_rel = der(phi_rel) - a_rel = der(w_rel) - flange_b.tau = tau - flange_a.tau = -tau ] -) - -# Linear 1D rotational damper -Damper = PartialCompliantWithRelativeStates | Model( - d = 1.0u"N*m*s/rad", # (info = "Damping constant"), - equation = :[ - tau = d * w_rel ] -) -=# -# Linear 1D rotational damper -Damper = Model( - flange_a = Flange, - flange_b = Flange, - phi_rel = Var(start=0.0u"rad"), - d = 1.0u"N*m*s/rad", # (info = "Damping constant"), - equation = :[ - phi_rel = flange_b.phi - flange_a.phi - w_rel = der(phi_rel) - flange_b.tau = tau - flange_a.tau = -tau - tau = d * w_rel ] -) - - - -# Partial model to measure a single absolute flange variable -PartialAbsoluteSensor = Model( - flange = Flange, - equation = :[flange.tau = 0] -) - -# Ideal sensor to measure the absolute flange angular velocity -SpeedSensor = PartialAbsoluteSensor | Model(w = output, equations = :[w = der(flange.phi)]) -UnitlessSpeedSensor = PartialAbsoluteSensor | Model(w = output, equations = :[w = der(flange.phi)*u"s/rad"]) - - -#end diff --git a/resources/fileio/firstOrder.json b/resources/fileio/firstOrder.json new file mode 100644 index 0000000..0660796 --- /dev/null +++ b/resources/fileio/firstOrder.json @@ -0,0 +1,2546 @@ +{ + "_class": "SignalTable", + "_classVersion": "0.3.1", + "time": { + "_class": "Var", + "unit": "s", + "independent": true, + "values": [ + 0.0, + 0.02, + 0.04, + 0.06, + 0.08, + 0.1, + 0.12, + 0.14, + 0.16, + 0.18, + 0.2, + 0.22, + 0.24, + 0.26, + 0.28, + 0.3, + 0.32, + 0.34, + 0.36, + 0.38, + 0.4, + 0.42, + 0.44, + 0.46, + 0.48, + 0.5, + 0.52, + 0.54, + 0.56, + 0.58, + 0.6, + 0.62, + 0.64, + 0.66, + 0.68, + 0.7, + 0.72, + 0.74, + 0.76, + 0.78, + 0.8, + 0.82, + 0.84, + 0.86, + 0.88, + 0.9, + 0.92, + 0.94, + 0.96, + 0.98, + 1.0, + 1.02, + 1.04, + 1.06, + 1.08, + 1.1, + 1.12, + 1.14, + 1.16, + 1.18, + 1.2, + 1.22, + 1.24, + 1.26, + 1.28, + 1.3, + 1.32, + 1.34, + 1.36, + 1.38, + 1.4, + 1.42, + 1.44, + 1.46, + 1.48, + 1.5, + 1.52, + 1.54, + 1.56, + 1.58, + 1.6, + 1.62, + 1.64, + 1.66, + 1.68, + 1.7, + 1.72, + 1.74, + 1.76, + 1.78, + 1.8, + 1.82, + 1.84, + 1.86, + 1.88, + 1.9, + 1.92, + 1.94, + 1.96, + 1.98, + 2.0, + 2.02, + 2.04, + 2.06, + 2.08, + 2.1, + 2.12, + 2.14, + 2.16, + 2.18, + 2.2, + 2.22, + 2.24, + 2.26, + 2.28, + 2.3, + 2.32, + 2.34, + 2.36, + 2.38, + 2.4, + 2.42, + 2.44, + 2.46, + 2.48, + 2.5, + 2.52, + 2.54, + 2.56, + 2.58, + 2.6, + 2.62, + 2.64, + 2.66, + 2.68, + 2.7, + 2.72, + 2.74, + 2.76, + 2.78, + 2.8, + 2.82, + 2.84, + 2.86, + 2.88, + 2.9, + 2.92, + 2.94, + 2.96, + 2.98, + 3.0, + 3.02, + 3.04, + 3.06, + 3.08, + 3.1, + 3.12, + 3.14, + 3.16, + 3.18, + 3.2, + 3.22, + 3.24, + 3.26, + 3.28, + 3.3, + 3.32, + 3.34, + 3.36, + 3.38, + 3.4, + 3.42, + 3.44, + 3.46, + 3.48, + 3.5, + 3.52, + 3.54, + 3.56, + 3.58, + 3.6, + 3.62, + 3.64, + 3.66, + 3.68, + 3.7, + 3.72, + 3.74, + 3.76, + 3.78, + 3.8, + 3.82, + 3.84, + 3.86, + 3.88, + 3.9, + 3.92, + 3.94, + 3.96, + 3.98, + 4.0, + 4.02, + 4.04, + 4.06, + 4.08, + 4.1, + 4.12, + 4.14, + 4.16, + 4.18, + 4.2, + 4.22, + 4.24, + 4.26, + 4.28, + 4.3, + 4.32, + 4.34, + 4.36, + 4.38, + 4.4, + 4.42, + 4.44, + 4.46, + 4.48, + 4.5, + 4.52, + 4.54, + 4.56, + 4.58, + 4.6, + 4.62, + 4.64, + 4.66, + 4.68, + 4.7, + 4.72, + 4.74, + 4.76, + 4.78, + 4.8, + 4.82, + 4.84, + 4.86, + 4.88, + 4.9, + 4.92, + 4.94, + 4.96, + 4.98, + 5.0, + 5.02, + 5.04, + 5.06, + 5.08, + 5.1, + 5.12, + 5.14, + 5.16, + 5.18, + 5.2, + 5.22, + 5.24, + 5.26, + 5.28, + 5.3, + 5.32, + 5.34, + 5.36, + 5.38, + 5.4, + 5.42, + 5.44, + 5.46, + 5.48, + 5.5, + 5.52, + 5.54, + 5.56, + 5.58, + 5.6, + 5.62, + 5.64, + 5.66, + 5.68, + 5.7, + 5.72, + 5.74, + 5.76, + 5.78, + 5.8, + 5.82, + 5.84, + 5.86, + 5.88, + 5.9, + 5.92, + 5.94, + 5.96, + 5.98, + 6.0, + 6.02, + 6.04, + 6.06, + 6.08, + 6.1, + 6.12, + 6.14, + 6.16, + 6.18, + 6.2, + 6.22, + 6.24, + 6.26, + 6.28, + 6.3, + 6.32, + 6.34, + 6.36, + 6.38, + 6.4, + 6.42, + 6.44, + 6.46, + 6.48, + 6.5, + 6.52, + 6.54, + 6.56, + 6.58, + 6.6, + 6.62, + 6.64, + 6.66, + 6.68, + 6.7, + 6.72, + 6.74, + 6.76, + 6.78, + 6.8, + 6.82, + 6.84, + 6.86, + 6.88, + 6.9, + 6.92, + 6.94, + 6.96, + 6.98, + 7.0, + 7.02, + 7.04, + 7.06, + 7.08, + 7.1, + 7.12, + 7.14, + 7.16, + 7.18, + 7.2, + 7.22, + 7.24, + 7.26, + 7.28, + 7.3, + 7.32, + 7.34, + 7.36, + 7.38, + 7.4, + 7.42, + 7.44, + 7.46, + 7.48, + 7.5, + 7.52, + 7.54, + 7.56, + 7.58, + 7.6, + 7.62, + 7.64, + 7.66, + 7.68, + 7.7, + 7.72, + 7.74, + 7.76, + 7.78, + 7.8, + 7.82, + 7.84, + 7.86, + 7.88, + 7.9, + 7.92, + 7.94, + 7.96, + 7.98, + 8.0, + 8.02, + 8.04, + 8.06, + 8.08, + 8.1, + 8.12, + 8.14, + 8.16, + 8.18, + 8.2, + 8.22, + 8.24, + 8.26, + 8.28, + 8.3, + 8.32, + 8.34, + 8.36, + 8.38, + 8.4, + 8.42, + 8.44, + 8.46, + 8.48, + 8.5, + 8.52, + 8.54, + 8.56, + 8.58, + 8.6, + 8.62, + 8.64, + 8.66, + 8.68, + 8.7, + 8.72, + 8.74, + 8.76, + 8.78, + 8.8, + 8.82, + 8.84, + 8.86, + 8.88, + 8.9, + 8.92, + 8.94, + 8.96, + 8.98, + 9.0, + 9.02, + 9.04, + 9.06, + 9.08, + 9.1, + 9.12, + 9.14, + 9.16, + 9.18, + 9.2, + 9.22, + 9.24, + 9.26, + 9.28, + 9.3, + 9.32, + 9.34, + 9.36, + 9.38, + 9.4, + 9.42, + 9.44, + 9.46, + 9.48, + 9.5, + 9.52, + 9.54, + 9.56, + 9.58, + 9.6, + 9.62, + 9.64, + 9.66, + 9.68, + 9.7, + 9.72, + 9.74, + 9.76, + 9.78, + 9.8, + 9.82, + 9.84, + 9.86, + 9.88, + 9.9, + 9.92, + 9.94, + 9.96, + 9.98, + 10.0 + ] + }, + "x": { + "_class": "Var", + "start": 0.9, + "fixed": true, + "state": true, + "der": "der(x)", + "values": [ + 0.9, + 0.8565982352579431, + 0.8162883820630357, + 0.7789190587163852, + 0.7443458777011582, + 0.7124311042983924, + 0.6830433294226499, + 0.6560571694793818, + 0.6313529650339109, + 0.6088165023811362, + 0.5883387697791976, + 0.5698156586748554, + 0.5531477894255408, + 0.5382402268804796, + 0.5250022785568708, + 0.5133473362556056, + 0.5031926025645421, + 0.49445894621024844, + 0.4870707648647274, + 0.4809557373191824, + 0.4760446980414887, + 0.47227153157238916, + 0.469572971191424, + 0.46788845051080363, + 0.4671600298285677, + 0.46733227310406295, + 0.46835205074468017, + 0.4701684897066516, + 0.4727328932570714, + 0.4759985975073567, + 0.47992084745107716, + 0.4844567599176045, + 0.48956525641887577, + 0.4952069214566648, + 0.501343922798723, + 0.5079399800981385, + 0.5149603111381504, + 0.5223715140773448, + 0.5301414941682792, + 0.5382394474729053, + 0.5466358107705377, + 0.5553021917721903, + 0.5642112745509354, + 0.5733368144605867, + 0.5826535948996154, + 0.5921374050400957, + 0.6017649386395428, + 0.6115137661081619, + 0.6213623287533296, + 0.6312898950755759, + 0.6412765434628062, + 0.6513030780922622, + 0.6613510175674602, + 0.6714025919084436, + 0.6814407009289839, + 0.6914489088759876, + 0.7014113771519744, + 0.7113128491916927, + 0.7211386504621206, + 0.7308746713545446, + 0.740507332873744, + 0.7500235761425502, + 0.7594108188077999, + 0.7686569539211948, + 0.7777503499393023, + 0.7866798398289473, + 0.7954346754723045, + 0.8040045313438655, + 0.8123794742996325, + 0.8205499612275748, + 0.8285068390476285, + 0.8362413447116959, + 0.8437451018026174, + 0.8510100596918102, + 0.8580284838992834, + 0.8647929695155617, + 0.8712964380981615, + 0.8775321376715912, + 0.8834936427273516, + 0.8891748542239352, + 0.894569981275442, + 0.8996734513176099, + 0.9044799697719661, + 0.9089845255747637, + 0.9131823890745424, + 0.917069112032129, + 0.9206405276206373, + 0.9238927389903993, + 0.9268220415096394, + 0.9294249535733635, + 0.9316982463939087, + 0.9336389439467769, + 0.9352443229706352, + 0.9365119129673148, + 0.9374394878040079, + 0.9380249806578439, + 0.9382665136992564, + 0.9381624393231933, + 0.9377113395419854, + 0.9369120259853461, + 0.9357635399003719, + 0.9342651434790417, + 0.9324162365495077, + 0.9302163856721876, + 0.9276653688973338, + 0.9247631759271093, + 0.9215100081155881, + 0.9179062784687546, + 0.9139526001975913, + 0.9096496994395332, + 0.9049984579386919, + 0.8999999527842305, + 0.8946554561677271, + 0.8889664353831751, + 0.882934552826982, + 0.8765616484770593, + 0.8698496546023675, + 0.8628006540506648, + 0.8554169092246189, + 0.8477008618666222, + 0.839655133058792, + 0.8312825232229709, + 0.822585983259938, + 0.8135685405799888, + 0.8042333704121106, + 0.7945838111043143, + 0.7846233640808712, + 0.7743556938423126, + 0.7637846277017275, + 0.7529141091488882, + 0.7417481544265105, + 0.7302909203806491, + 0.7185467098676414, + 0.7065199717541081, + 0.6942153009169525, + 0.6816374354895186, + 0.668791192537012, + 0.6556814671331432, + 0.6423132819604379, + 0.6286917874920527, + 0.6148222619917771, + 0.6007101115140321, + 0.5863608594815349, + 0.5717800766688449, + 0.5569734194749433, + 0.5419466534565509, + 0.5267056525809867, + 0.5112563992261692, + 0.49560498418061344, + 0.4797575800236832, + 0.46372039199894377, + 0.4474997099733483, + 0.4311019117586864, + 0.41453346309060657, + 0.3978009176286149, + 0.38091091541280087, + 0.3638701363511825, + 0.3466852977115287, + 0.32936318523635466, + 0.3119106511883391, + 0.2943346143503238, + 0.2766420600253153, + 0.25884003062392225, + 0.24093557830526974, + 0.2229357961478195, + 0.20484782269914156, + 0.18667884095239334, + 0.1684360783463202, + 0.15012680667461548, + 0.13175831611183625, + 0.1133379011889344, + 0.0948728837713298, + 0.07637060773512665, + 0.057838438967112944, + 0.0392837653647616, + 0.020713992509908945, + 0.0021365128572256144, + -0.016441275555525704, + -0.03501197285625358, + -0.05356817959563506, + -0.07210249674711632, + -0.09060752572214205, + -0.10907588442297514, + -0.12750020951774438, + -0.1458731504873097, + -0.16418737963608498, + -0.18243559209203808, + -0.20061050580669063, + -0.21870486357680444, + -0.23671145627870127, + -0.2546230848423538, + -0.27243258772257795, + -0.2901328521672389, + -0.3077168142172515, + -0.325177458706579, + -0.34250781926223484, + -0.35970097830428, + -0.37675007873538097, + -0.393648309883841, + -0.4103888987156194, + -0.42696514719500556, + -0.4433704328316828, + -0.45959820868073104, + -0.47564200334262163, + -0.491495420963224, + -0.5071521457963817, + -0.5226059046121583, + -0.5378504948059546, + -0.5528798122916981, + -0.5676878515040037, + -0.5822687053981777, + -0.5966165654502144, + -0.6107257227284227, + -0.6245905477809309, + -0.6382054622383442, + -0.6515649989450867, + -0.664663809420763, + -0.6774966638601544, + -0.6900584511332215, + -0.7023441787851026, + -0.714348965719734, + -0.7260679857528834, + -0.7374965162724549, + -0.7486299702577763, + -0.7594638963099389, + -0.7699939786517939, + -0.7802160371279548, + -0.7901260247916257, + -0.799719972051436, + -0.8089939969914384, + -0.8179443648636598, + -0.8265674902966469, + -0.8348599372954619, + -0.842818419241687, + -0.8504397981839735, + -0.8577210370045906, + -0.8646591754709685, + -0.871251405933291, + -0.8774950804665336, + -0.8833877108704655, + -0.8889269686696483, + -0.8941106848834469, + -0.8989368084781059, + -0.9034033611363448, + -0.9075085192260695, + -0.9112506258017946, + -0.9146281906046424, + -0.9176398900623441, + -0.9202845671464538, + -0.9225611909855597, + -0.9244688032893533, + -0.9260066020962575, + -0.927173955676972, + -0.9279704025344732, + -0.9283956514040145, + -0.9284495810098127, + -0.9281321951520967, + -0.927443572452179, + -0.9263839500292788, + -0.9249537354448624, + -0.9231535067026436, + -0.9209840122485841, + -0.9184461701916481, + -0.915541013263216, + -0.9122696542939989, + -0.908633366068284, + -0.9046335888257583, + -0.9002719302615096, + -0.895550165526026, + -0.890470234617942, + -0.8850341737438407, + -0.8792441088220262, + -0.8731023241555405, + -0.8666112654447986, + -0.8597735397875871, + -0.8525919156790652, + -0.8450693155335764, + -0.8372087357714905, + -0.8290132758548727, + -0.8204861873259481, + -0.8116308741429792, + -0.8024508926802633, + -0.7929499517281349, + -0.7831318943007293, + -0.7730006190773465, + -0.7625601403777232, + -0.7518146134408926, + -0.7407683342424489, + -0.7294257394945517, + -0.7177914065894163, + -0.7058700154875813, + -0.693666298035065, + -0.6811851050615423, + -0.6684314139983423, + -0.6554103288784512, + -0.6421270803365093, + -0.6285870231763357, + -0.6147955765328467, + -0.6007582218829027, + -0.5864805507151761, + -0.5719682648164878, + -0.5572271762718043, + -0.5422632074642364, + -0.5270823796283539, + -0.5116907477541665, + -0.49609444084863424, + -0.48029968069814943, + -0.46431278122802233, + -0.44814014850247574, + -0.4317882806966074, + -0.41526373704079633, + -0.3985731025625752, + -0.381723034020657, + -0.36472026064003366, + -0.3475715841119704, + -0.3302838785940118, + -0.3128640873824501, + -0.2953191750953447, + -0.27765614022168666, + -0.25988203485861616, + -0.2420039627478515, + -0.22402907927569585, + -0.2059645914730311, + -0.18781774295442497, + -0.1695957779746208, + -0.1513059740466132, + -0.1329556390075606, + -0.11455211075450134, + -0.09610275724435705, + -0.07761497523320811, + -0.05909615940200198, + -0.04055370827305208, + -0.02199503262462688, + -0.0034275513567013534, + 0.015141308509036711, + 0.03370411182919006, + 0.05225342484657266, + 0.07078183496667288, + 0.08928193218910896, + 0.10774631974590226, + 0.12616761457784567, + 0.14453844733450982, + 0.1628514642394603, + 0.18109934606759245, + 0.1992747886045692, + 0.21737051876240307, + 0.23537930027204537, + 0.25329393368339287, + 0.2711072563652812, + 0.28881214250549, + 0.3064015286598028, + 0.32386838931524714, + 0.34120570360437136, + 0.3584065171401999, + 0.37546394278284284, + 0.3923711606394899, + 0.4091214180644169, + 0.4257080296589782, + 0.4421243772716159, + 0.45836391003030735, + 0.4744201342035553, + 0.49028660146227837, + 0.5059569473886251, + 0.5214248983715758, + 0.5366842716069499, + 0.5517289750973985, + 0.5665530076556223, + 0.5811504685728967, + 0.5955154997625265, + 0.6096423188371141, + 0.6235252569417028, + 0.6371587587537729, + 0.6505373824832462, + 0.6636557998724812, + 0.6765087962109143, + 0.6890912495763188, + 0.7013980893463508, + 0.7134243606246256, + 0.7251652391373933, + 0.7366160312335435, + 0.7477721738845997, + 0.7586292346847249, + 0.7691829077796379, + 0.7794289515251445, + 0.7893632225778422, + 0.7989817232326639, + 0.8082806018818076, + 0.8172561530147402, + 0.8259048172181935, + 0.8342231797248292, + 0.8422079165012685, + 0.8498557839713899, + 0.8571636907306843, + 0.8641287024894667, + 0.8707480420728747, + 0.8770190894208698, + 0.8829393813762016, + 0.8885065704267063, + 0.8937183802081385, + 0.8985726877257645, + 0.9030675352803323, + 0.9072011304680742, + 0.9109718461807045, + 0.9143782205550706, + 0.9174189211082179, + 0.9200926842485485, + 0.9223983992726965, + 0.9243351251605426, + 0.9259020905752148, + 0.9270986938630881, + 0.9279245030210196, + 0.9283792201712311, + 0.9284626169989881, + 0.9281746185248785, + 0.9275153206424119, + 0.9264849901180203, + 0.9250840645910577, + 0.9233131524572371, + 0.9211729909983937, + 0.9186643888508338, + 0.9157883098203079, + 0.9125458864064132, + 0.9089384198025945, + 0.9049673798961436, + 0.9006344046282564, + 0.8959412463731505, + 0.8908897339296598, + 0.8854818518501539, + 0.879719748164385, + 0.8736057343794883, + 0.86714228547998, + 0.8603320373284216, + 0.8531777182035908, + 0.8456821425375541, + 0.837848277385476, + 0.829679245039067, + 0.821178323026584, + 0.8123489441128317, + 0.8031946882751377, + 0.7937192035100462, + 0.7839262372763351, + 0.7738196812273413, + 0.7634035712719819, + 0.7526820875747576, + 0.7416595545557513, + 0.7303404209172931, + 0.7187291850912106, + 0.7068304561386672, + 0.6946489740364391, + 0.6821896094970831, + 0.6694573639689315, + 0.6564573694596935, + 0.6431948472263584, + 0.6296750671307768, + 0.6159034093460247, + 0.6018853690184681, + 0.5876265562677679, + 0.5731326961868758, + 0.5584096252891738, + 0.5434632308696737, + 0.5282994599379637, + 0.5129243573939016, + 0.49734406540302156, + 0.48156482339652507, + 0.4655929680712877, + 0.44943491881888914, + 0.43309711934760076, + 0.41658608147155246, + 0.3999083954212266, + 0.38307072937987535, + 0.3660798294835263, + 0.3489425195221907, + 0.3316656655045036, + 0.3142561562916227, + 0.29672093984541875, + 0.279067021519296, + 0.2613014640581988, + 0.24343138759860874, + 0.225463964154063, + 0.2074063728313271, + 0.18926582203186845, + 0.17104955782117817, + 0.15276486222791397, + 0.13441905324390668, + 0.11601948482414896, + 0.09757352708822618, + 0.07908854621696682, + 0.060571928817045075, + 0.042031075567069184, + 0.023473401215096345, + 0.004906334578627861, + -0.013662684535363366, + -0.03222623331367467, + -0.05077689019980227, + -0.06930723863534724, + -0.08780986991095488, + -0.10627738316632404, + -0.12470238539149257, + -0.14307750364175914, + -0.1613953927014523, + -0.17964872595554732 + ] + }, + "der(x)": { + "_class": "Var", + "unit": "1/s", + "values": [ + -2.25, + -2.091498921411525, + -1.9407476196910036, + -1.7973876305923515, + -1.6610779593299636, + -1.5314942191289105, + -1.4083278053343262, + -1.291285137087863, + -1.1800868960491622, + -1.07446732238828, + -0.974173597460341, + -0.8789650889849651, + -0.7886129074960154, + -0.702899187470811, + -0.6216165749818925, + -0.5445678239856651, + -0.4715651048710609, + -0.4024296351735851, + -0.3369913289740936, + -0.27508816976549927, + -0.21656588933209542, + -0.16127769628204752, + -0.10908376531356095, + -0.05985085886320962, + -0.013452135717712116, + 0.03023316375035015, + 0.07132021774764144, + 0.10991875486615399, + 0.14613326165952997, + 0.1800633482112922, + 0.21180406485989553, + 0.24144600154925144, + 0.2690754623587908, + 0.29477482629192253, + 0.31862275304936405, + 0.3406942678488814, + 0.36106090208330666, + 0.37979099387700055, + 0.3969498773556804, + 0.4125999293187621, + 0.42680070032246276, + 0.4396090948867637, + 0.45107961354980963, + 0.46126437108672563, + 0.4702132099983847, + 0.47797376146846926, + 0.484591703492058, + 0.49011083574238085, + 0.49457309886917156, + 0.4980186885409865, + 0.5004861033627258, + 0.5020123596427519, + 0.5026330241896956, + 0.5023822260913565, + 0.501292764889909, + 0.49939612796361943, + 0.49672266256132663, + 0.4933016173104762, + 0.48916114577411574, + 0.4843283526336892, + 0.4788293827337056, + 0.47268945044129346, + 0.46593295160434756, + 0.45858346917330234, + 0.45066377587480666, + 0.44219586397061417, + 0.4332010616149018, + 0.4237000258786347, + 0.4137128203392093, + 0.4032589228619621, + 0.39235722735207923, + 0.3810260453500597, + 0.36928311597267255, + 0.35714575929958664, + 0.3446309015958915, + 0.3317550427212318, + 0.3185342646935538, + 0.3049842323347196, + 0.29112019375653664, + 0.2769569806870123, + 0.26250905441515787, + 0.24779073038228516, + 0.23281602886801894, + 0.21759866085443252, + 0.20215203280883387, + 0.18648924605084882, + 0.1706230959601604, + 0.1545660996128856, + 0.1383306890699476, + 0.12192913308670283, + 0.105373461210716, + 0.08867546233419843, + 0.07184668295453223, + 0.0548984252789983, + 0.03784176616896867, + 0.02068776757392643, + 0.003447399965171294, + -0.013868563252482091, + -0.03124954688454279, + -0.0486851767588406, + -0.06616528268672539, + -0.08367987989103598, + -0.10121896399032021, + -0.11877258714053374, + -0.13633097347454326, + -0.15388452319558904, + -0.17142381640677995, + -0.18893961708027235, + -0.2064228485472705, + -0.2238643795453979, + -0.2412551352977546, + -0.2585862013703599, + -0.27584882770826824, + -0.2930344334076229, + -0.3101346116151499, + -0.32714109075084763, + -0.34404552643029024, + -0.36083965245384625, + -0.3775153586361066, + -0.39406469577421444, + -0.4104798812691027, + -0.4267533048594255, + -0.4428774623139181, + -0.4588447764602416, + -0.4746477815159972, + -0.4902791675008947, + -0.5057317863919732, + -0.5209986584840245, + -0.5360729781865022, + -0.5509480039831677, + -0.5656169565126159, + -0.5800731949220264, + -0.5943102371974827, + -0.6083217670594072, + -0.6221016409377034, + -0.635643888139222, + -0.6489425571624868, + -0.6619917205867276, + -0.6747856063384555, + -0.687318605477274, + -0.6995852795896801, + -0.7115803682424456, + -0.7232987704367563, + -0.7347353771306453, + -0.745885174534581, + -0.7567433106064211, + -0.7673051008896743, + -0.7775660362609965, + -0.7875217907159512, + -0.7971681626405686, + -0.8065009598476913, + -0.8155161373567963, + -0.8242098136052113, + -0.8325782783258436, + -0.8406180004967543, + -0.8483256324487759, + -0.8556979015627162, + -0.8627316119876046, + -0.8694237304235211, + -0.8757713892339362, + -0.8817718944447597, + -0.8874227337404513, + -0.8927215609225773, + -0.8976660854927178, + -0.9022541585476158, + -0.9064837921059744, + -0.9103531644831336, + -0.913860628202475, + -0.9170047176549878, + -0.9197840920218331, + -0.922197508039414, + -0.9242438852361345, + -0.9259223003767356, + -0.9272319951752078, + -0.9281723839637391, + -0.928743050498822, + -0.9289436785042567, + -0.9287741059655115, + -0.928234323220408, + -0.9273244747198689, + -0.9260448663693402, + -0.9243959727671406, + -0.9223784042809193, + -0.9199929084977513, + -0.9172403921710351, + -0.914121903181021, + -0.9106386374431227, + -0.9067919457341985, + -0.9025833353798459, + -0.8980144188226565, + -0.8930870152509127, + -0.8878030883917883, + -0.8821647247166748, + -0.8761741397191336, + -0.8698336840924566, + -0.8631458498043473, + -0.8561132760663135, + -0.8487387259714738, + -0.8410251273886463, + -0.832975600571638, + -0.8245933702823066, + -0.8158817698308525, + -0.8068442463648043, + -0.797484366036938, + -0.7878058190500412, + -0.7778124131700714, + -0.7675081724980315, + -0.7568972718605999, + -0.7459839716096908, + -0.7347726220168421, + -0.7232676675385263, + -0.7114736509452774, + -0.6993952146339144, + -0.6870371547606169, + -0.6744044959451531, + -0.6615023445109205, + -0.6483358732560623, + -0.6349103247327204, + -0.6212310143797158, + -0.6073033335074018, + -0.5931327704244551, + -0.5787250542409691, + -0.5640860357521543, + -0.549221609772327, + -0.5341377172880873, + -0.5188403475332578, + -0.5033355399089012, + -0.48762939178058434, + -0.4717281997192363, + -0.4556384351520715, + -0.4393665969245114, + -0.42291920691399615, + -0.40630281100657833, + -0.38952397991452975, + -0.37258931160827624, + -0.35550555139877565, + -0.33827965214764, + -0.32091858520223615, + -0.3034293225597015, + -0.28581883672606945, + -0.26809410041548104, + -0.25026208666456107, + -0.23232987208201689, + -0.21430474914506253, + -0.19619402033900224, + -0.17800496705634467, + -0.1597448483412403, + -0.14142089947616232, + -0.1230403307683875, + -0.10461042678992699, + -0.08613867843446282, + -0.06763257151027546, + -0.049099549789092256, + -0.030547012660388784, + -0.011982312633207759, + 0.006587246705200556, + 0.025154301207074292, + 0.043711303476171026, + 0.06225073515730983, + 0.08076514004156932, + 0.09924712745622621, + 0.1176893757989042, + 0.1360846342664343, + 0.1544255890716817, + 0.17270478109395554, + 0.19091480961095697, + 0.2090483552862782, + 0.22709818453722552, + 0.24505715403580403, + 0.26291820882290345, + 0.280674215469634, + 0.29831795072616296, + 0.3158422782193204, + 0.33324016112285526, + 0.350504667417699, + 0.36762897527168326, + 0.3846063598411234, + 0.40142999910008387, + 0.4180930521545878, + 0.4345887876744117, + 0.4509105906766439, + 0.46705196857544234, + 0.4830065573352277, + 0.49876808224430497, + 0.5143301678709447, + 0.5296864944502141, + 0.5448308676231208, + 0.5597572246125504, + 0.574459640944123, + 0.5889323371112118, + 0.6031695901845598, + 0.6171656140740873, + 0.6309147343203659, + 0.6444114142600035, + 0.6576502622174932, + 0.6706260387656833, + 0.6833336579707328, + 0.6957680451858561, + 0.7079241395271697, + 0.7197970205539563, + 0.7313819165439047, + 0.7426742121033384, + 0.753669455825193, + 0.764363339374986, + 0.7747515424950938, + 0.7848298414413459, + 0.794594163707488, + 0.8040405942744094, + 0.8131653834898142, + 0.8219649549037739, + 0.8304358355582498, + 0.8385745757899061, + 0.8463778720298207, + 0.8538425766191355, + 0.8609657057970811, + 0.8677444476959038, + 0.8741761620206925, + 0.8802582685060569, + 0.885988286285514, + 0.8913638912250834, + 0.8963829189958628, + 0.9010433730432338, + 0.9053434325406075, + 0.9092814226722724, + 0.9128557326879128, + 0.9160649053360717, + 0.9189076373891014, + 0.9213827868113111, + 0.9234893805534236, + 0.9252266191576944, + 0.9265938072884495, + 0.9275903761959076, + 0.9282159123784043, + 0.928470154822715, + 0.9283530025271065, + 0.9278645219685205, + 0.9270049307410605, + 0.9257745554613236, + 0.9241738854714533, + 0.922203553457493, + 0.9198643414019061, + 0.9171571876536063, + 0.9140831892586762, + 0.9106435614317737, + 0.9068396932404345, + 0.9026731140644928, + 0.8981454860257082, + 0.8932586105589655, + 0.8880144348909366, + 0.8824150584236093, + 0.8764626751474656, + 0.8701596409190357, + 0.8635085627581677, + 0.8565121502384956, + 0.8491732194412874, + 0.841494698715965, + 0.8334796343284621, + 0.8251311959951888, + 0.8164526823003498, + 0.8074475259133566, + 0.7981193241139946, + 0.7884718731923371, + 0.7785090771063696, + 0.7682349350456488, + 0.7576535461050751, + 0.7467691138279148, + 0.7355859506081985, + 0.7241084577954862, + 0.7123412744762697, + 0.7002891987831139, + 0.6879570971748102, + 0.6753499081585276, + 0.6624726458696084, + 0.6493304035075942, + 0.6359283565904983, + 0.6222718179960501, + 0.6083663446795073, + 0.5942175794562085, + 0.5798312164575592, + 0.5652130036775666, + 0.5503687453672165, + 0.5353043042757222, + 0.5200256139154624, + 0.5045388363480441, + 0.4888502787342966, + 0.4729662766108411, + 0.45689319420620544, + 0.4406374257466891, + 0.42420539660415313, + 0.4076035679135917, + 0.3908385721833413, + 0.37391723965784496, + 0.3568464195432272, + 0.33963296800097215, + 0.32228374833974865, + 0.3048056310472555, + 0.2872054941921817, + 0.26949032628039826, + 0.2516673370500047, + 0.23374375130983366, + 0.2157267783576236, + 0.19762361105402387, + 0.1794414247378942, + 0.16118737610919198, + 0.14286869149054277, + 0.12449281649134447, + 0.10606720430098693, + 0.08759927183080385, + 0.06909639768839876, + 0.05056591999760468, + 0.03201513414688384, + 0.01345137911604899, + -0.005117803755554928, + -0.023684882987884404, + -0.042242383741703804, + -0.0607828909043176, + -0.07929905232226447, + -0.09778358188831104, + -0.11622915838857106, + -0.13462828533902987, + -0.1529735043300684, + -0.17125743278452288, + -0.18947276804307134, + -0.20761229158635347, + -0.22566887179225392, + -0.2436353343741507, + -0.26150437198182636, + -0.27926874727535134, + -0.2969213171140267, + -0.3144550375614963, + -0.33186296901466655, + -0.34913827495600874, + -0.36627405616928205, + -0.38326334056998423, + -0.4000992549829732, + -0.4167750373922091, + -0.43328404276766597, + -0.4496197490006634, + -0.46577574288523244, + -0.48174552827988965, + -0.49752261096143363, + -0.5131006168006793, + -0.5284732983561224, + -0.5436345414086036, + -0.5585783715869402, + -0.5732989111485212, + -0.5877901993970266, + -0.6020463518144903, + -0.6160616177396355, + -0.6298303869582859, + -0.6433471968179373, + -0.6566067389730146, + -0.6696037633647391, + -0.6823329839311205, + -0.6947892402568928, + -0.7069675166727899, + -0.7188629497567074, + -0.730470835888935, + -0.741786629976278, + -0.7528058015093749, + -0.7635238645942901, + -0.7739364811328651, + -0.7840394670410963, + -0.7938288000646789, + -0.803300627627076, + -0.8124512382795686, + -0.8212769236599138, + -0.8297740958920776, + -0.8379393213091516, + -0.8457693272578377, + -0.8532610100754213, + -0.8604114423301553, + -0.8672177922273383, + -0.8736772831925296, + -0.8797872924912331, + -0.8855453549527633, + -0.8909491709613994, + -0.8959966144387083, + -0.9006857270276462, + -0.905014614088065, + -0.9089815081371202, + -0.9125847976876885, + -0.9158230308866316, + -0.9186949233773026, + -0.9211993661310176, + -0.9233353837479216, + -0.925102091958644, + -0.9264987662554203, + -0.9275248336834908, + -0.9281798804644783, + -0.9284636595763907, + -0.9283760905810482, + -0.9279171971377372, + -0.9270871537589748, + -0.9258862838085069, + -0.9243150596609162, + -0.9223741099211393, + -0.9200642265704191, + -0.917386341504988, + -0.9143415143765843, + -0.9109309623345561 + ] + }, + "u": { + "_class": "Var", + "values": [ + 0.0, + 0.01999866669333308, + 0.03998933418663416, + 0.059964006479444595, + 0.0799146939691727, + 0.09983341664682815, + 0.11971220728891936, + 0.1395431146442365, + 0.15931820661424598, + 0.17902957342582418, + 0.19866933079506122, + 0.21822962308086932, + 0.23770262642713458, + 0.2570805518921551, + 0.27635564856411376, + 0.29552020666133955, + 0.31456656061611776, + 0.3334870921408144, + 0.35227423327508994, + 0.3709204694129827, + 0.3894183423086505, + 0.40776045305957015, + 0.4259394650659996, + 0.4439481069655198, + 0.46177917554148284, + 0.479425538604203, + 0.49688013784373675, + 0.5141359916531132, + 0.5311861979208834, + 0.5480239367918736, + 0.5646424733950354, + 0.5810351605373051, + 0.5971954413623921, + 0.6131168519734338, + 0.6287930240184686, + 0.644217687237691, + 0.6593846719714731, + 0.674287911628145, + 0.6889214451105513, + 0.7032794192004101, + 0.7173560908995228, + 0.7311458297268958, + 0.7446431199708593, + 0.757842562895277, + 0.7707388788989693, + 0.7833269096274834, + 0.795601620036366, + 0.8075581004051142, + 0.8191915683009983, + 0.8304973704919705, + 0.8414709848078965, + 0.852108021949363, + 0.8624042272433384, + 0.8723554823449863, + 0.8819578068849475, + 0.8912073600614354, + 0.9001004421765051, + 0.9086334961158832, + 0.9168031087717669, + 0.9246060124080203, + 0.9320390859672263, + 0.9390993563190676, + 0.945783999449539, + 0.9520903415905158, + 0.9580158602892249, + 0.963558185417193, + 0.9687151001182652, + 0.9734845416953194, + 0.9778646024353163, + 0.9818535303723597, + 0.9854497299884601, + 0.9886517628517197, + 0.9914583481916864, + 0.9938683634116449, + 0.99588084453764, + 0.9974949866040544, + 0.998710143975583, + 0.9995258306054791, + 0.9999417202299663, + 0.9999576464987401, + 0.9995736030415051, + 0.998789743470524, + 0.9976063813191737, + 0.9960239899165367, + 0.994043202198076, + 0.9916648104524686, + 0.9888897660047015, + 0.9857191788355535, + 0.9821543171376185, + 0.9781966068080447, + 0.9738476308781951, + 0.9691091288804563, + 0.9639829961524481, + 0.9584712830789142, + 0.9525761942715953, + 0.9463000876874145, + 0.9396454736853249, + 0.9326150140222005, + 0.9252115207881683, + 0.9174379552818098, + 0.9092974268256817, + 0.9007931915226273, + 0.8919286509533796, + 0.8827073508159741, + 0.8731329795075164, + 0.8632093666488737, + 0.8529404815528762, + 0.8423304316366457, + 0.8313834607786831, + 0.8201039476213741, + 0.8084964038195901, + 0.7965654722360865, + 0.7843159250844198, + 0.7717526620201259, + 0.758880708180922, + 0.7457052121767203, + 0.7322314440302514, + 0.7184647930691263, + 0.7044107657701763, + 0.6900749835569364, + 0.675463180551151, + 0.6605812012792007, + 0.6454349983343708, + 0.6300306299958922, + 0.6143742578057118, + 0.5984721441039564, + 0.5823306495240819, + 0.5659562304487028, + 0.5493554364271266, + 0.5325349075556212, + 0.5155013718214642, + 0.49826164241183857, + 0.48082261498864826, + 0.4631912649303452, + 0.44537464454187115, + 0.4273798802338298, + 0.4092141696720173, + 0.3908847788984522, + 0.3723990394250557, + 0.3537643453011431, + 0.3349881501559051, + 0.3160779642170538, + 0.2970413513068324, + 0.2778859258165868, + 0.25861934966111083, + 0.23924932921398243, + 0.21978361222511694, + 0.20022998472177053, + 0.18059626789423291, + 0.16089031496745576, + 0.1411200080598672, + 0.12129325503062975, + 0.10141798631660187, + 0.08150215176026912, + 0.06155371742991315, + 0.04158066243329049, + 0.02159097572609596, + 0.0015926529164868282, + -0.01840630693305381, + -0.03839790450523538, + -0.058374143427580086, + -0.0783270334708653, + -0.09824859374510868, + -0.11813085589181738, + -0.13796586727122684, + -0.1577456941432482, + -0.17746242484086014, + -0.19710817293466984, + -0.21667508038737962, + -0.236155320696897, + -0.2555411020268312, + -0.274824670323124, + -0.2939983124155676, + -0.3130543591029702, + -0.3319851882207341, + -0.35078322768961984, + -0.3694409585444771, + -0.3879509179417303, + -0.4063057021444168, + -0.4244979694835826, + -0.44252044329485246, + -0.4603659148289983, + -0.47802724613534286, + -0.4954973729168449, + -0.5127693073557238, + -0.5298361409084934, + -0.5466910470692872, + -0.56332728410037, + -0.5797381977287428, + -0.5959172238077639, + -0.6118578909427189, + -0.6275538230792933, + -0.6429987420539088, + -0.6581864701049049, + -0.6731109323435617, + -0.6877661591839738, + -0.7021462887308054, + -0.7162455691239705, + -0.7300583608392995, + -0.7435791389442746, + -0.7568024953079282, + -0.7697231407640238, + -0.7823359072266528, + -0.7946357497573968, + -0.8066177485832405, + -0.8182771110644103, + -0.8296091736113709, + -0.8406094035501945, + -0.8512734009355745, + -0.8615969003107405, + -0.8715757724135882, + -0.8812060258283253, + -0.8904838085819885, + -0.8994054096851777, + -0.9079672606164054, + -0.9161659367494549, + -0.9239981587231879, + -0.9314607937532425, + -0.9385508568851079, + -0.9452655121880633, + -0.9516020738895161, + -0.9575580074492711, + -0.9631309305733167, + -0.9683186141667072, + -0.9731189832251739, + -0.977530117665097, + -0.9815502530915153, + -0.9851777815038595, + -0.9884112519391305, + -0.991249371052267, + -0.9936910036334644, + -0.9957351730622453, + -0.9973810616980933, + -0.9986280112074989, + -0.999475522827284, + -0.9999232575641008, + -0.9999710363300245, + -0.9996188400141854, + -0.9988668094904142, + -0.9977152455608933, + -0.9961646088358407, + -0.9942155195492713, + -0.9918687573109126, + -0.9891252607943698, + -0.9859861273616704, + -0.9824526126243325, + -0.9785261299411385, + -0.9742082498528091, + -0.9695006994538088, + -0.9644053617015305, + -0.9589242746631385, + -0.9530596307003677, + -0.9468137755926089, + -0.9401892075986287, + -0.9331885764572976, + -0.9258146823277325, + -0.918070474669267, + -0.9099590510617106, + -0.9014836559663548, + -0.8926476794282346, + -0.8834546557201531, + -0.8739082619290224, + -0.8640123164850744, + -0.8537707776345433, + -0.8431877418564167, + -0.8322674422239013, + -0.821014246711247, + -0.8094326564466194, + -0.7975273039117043, + -0.7853029510887806, + -0.7727644875559871, + -0.759916928531561, + -0.7467654128678123, + -0.7333152009956565, + -0.7195716728205075, + -0.7055403255703919, + -0.6912267715971271, + -0.6766367361314569, + -0.6617760549930376, + -0.6466506722561834, + -0.6312666378723216, + -0.6156301052500863, + -0.5997473287940438, + -0.5836246614030073, + -0.5672685519289686, + -0.5506855425976376, + -0.5338822663916443, + -0.5168654443974288, + -0.49964188311690244, + -0.48221847174493154, + -0.46460217941375737, + -0.44680005240543, + -0.4288192113333959, + -0.41066684829434086, + -0.39235022399145386, + -0.373876664830236, + -0.35525355998804264, + -0.3364883584585042, + -0.31758856607203484, + -0.2985617424935936, + -0.27941549819892586, + -0.2601574914304689, + -0.2407954251341592, + -0.22133704387835954, + -0.2017901307561289, + -0.18216250427209588, + -0.1624620152151542, + -0.14269654351825858, + -0.12287399510655005, + -0.10300229873509785, + -0.0830894028174964, + -0.06314327224661277, + -0.04317188520872868, + -0.02318322999237945, + -0.0031853017931379904, + 0.016813900484349713, + 0.03680637742582692, + 0.05678413230707805, + 0.07673917429251892, + 0.09666352163141724, + 0.11654920485049364, + 0.13638826994159764, + 0.1561727815432119, + 0.175894826114484, + 0.19554651510054427, + 0.21511998808781552, + 0.23460741594807993, + 0.2540010039700231, + 0.27329299497701237, + 0.2924756724298697, + 0.31154136351337786, + 0.3304824422053109, + 0.34929133232673487, + 0.36796051057238466, + 0.38648250951987934, + 0.4048499206165983, + 0.42305539714299684, + 0.44109165715120235, + 0.4589514863776903, + 0.4766277411288995, + 0.49411335113860816, + 0.5114013223959524, + 0.5284847399429308, + 0.545356770640302, + 0.562010665900743, + 0.5784397643882002, + 0.5946374946823286, + 0.6105973779069791, + 0.6263130303216559, + 0.6417781658749337, + 0.6569865987187891, + 0.6719322456828615, + 0.6866091287076385, + 0.7010113772355981, + 0.7151332305593578, + 0.7289690401258759, + 0.7425132717958017, + 0.7557605080570537, + 0.7687054501917558, + 0.78134292039565, + 0.7936678638491531, + 0.8056753507392133, + 0.8173605782311729, + 0.8287188723898353, + 0.8397456900489799, + 0.8504366206285644, + 0.8607873878989017, + 0.8707938516910911, + 0.8804520095530344, + 0.8897579983503596, + 0.8987080958116269, + 0.907298722017184, + 0.9155264408310896, + 0.9233879612755189, + 0.9308801388471136, + 0.9379999767747389, + 0.9447446272181538, + 0.951111392407109, + 0.957097725720417, + 0.9627012327045701, + 0.9679196720314863, + 0.9727509563950137, + 0.9771931533458229, + 0.9812444860643621, + 0.9849033340715608, + 0.9881682338770004, + 0.9910378795642898, + 0.9935111233134158, + 0.9955869758598548, + 0.9972646068902659, + 0.998543345374605, + 0.9994226798345279, + 0.9999022585479752, + 0.9999818896898556, + 0.9996615414087742, + 0.998941341839772, + 0.9978215790530743, + 0.9963027009388656, + 0.9943853150281404, + 0.992070188249698, + 0.9893582466233818, + 0.9862505748896837, + 0.9827484160758622, + 0.9788531709987474, + 0.974566397704435, + 0.9698898108450863, + 0.9648252809930913, + 0.9593748338928642, + 0.9535406496505743, + 0.94732506186213, + 0.9407305566797731, + 0.9337597718176507, + 0.9264154954967662, + 0.9187006653297247, + 0.9106183671457304, + 0.9021718337562933, + 0.893364443662152, + 0.8841997197019127, + 0.8746813276429652, + 0.8648130747152218, + 0.8545989080882805, + 0.8440429132926041, + 0.833149312585366, + 0.8219224632616022, + 0.8103668559113548, + 0.7984871126234903, + 0.7862879851369292, + 0.7737743529400134, + 0.7609512213187744, + 0.7478237193548898, + 0.7343970978741133, + 0.7206767273460181, + 0.706668095735878, + 0.6923768063095604, + 0.6778085753922867, + 0.6629692300821833, + 0.6478647059195176, + 0.6325010445125663, + 0.6168843911210448, + 0.6010209921980904, + 0.5849171928917617, + 0.5685794345070696, + 0.5520142519295329, + 0.5352282710113162, + 0.5182282059209752, + 0.5010208564578846, + 0.4836131053324, + 0.4660119154128711, + 0.4482243269405849, + 0.4302574547137687, + 0.4121184852417566, + 0.39381467387048763, + 0.37535334188046277, + 0.3567418735583286, + 0.3379877132432676, + 0.3190983623493521, + 0.300081376365085, + 0.2809443618313018, + 0.2616949732986626, + 0.24234091026592378, + 0.22288991410024764, + 0.20334976494075557, + 0.183728278586583, + 0.1640333033706535, + 0.14427271702045727, + 0.1244544235070617, + 0.10458634988363526, + 0.08467644311472142, + 0.06473266689756589, + 0.04476299847674028, + 0.024775425453357765, + 0.0047779425901285115, + -0.015221451386431743, + -0.03521475698538918, + -0.05519397715107451, + -0.0751511204618093, + -0.09507820432636095, + -0.11496725817687455, + -0.1348103266569955, + -0.15459947280389894, + -0.17432678122297965, + -0.19398436125389723, + -0.2135643501267387, + -0.2330589161070144, + -0.2524602616282581, + -0.27176062641094245, + -0.2909522905664908, + -0.310027577685123, + -0.32897885790632714, + -0.347798550970695, + -0.3664791292519284, + -0.38501312076778266, + -0.4033931121687696, + -0.42161175170339216, + -0.43966175215875003, + -0.4575358937753214, + -0.4752270271347798, + -0.49272807601966023, + -0.5100320402437544, + -0.527131998452086, + -0.5440211108893698 + ] + }, + "y": { + "_class": "Var", + "values": [ + 1.8, + 1.7131964705158862, + 1.6325767641260713, + 1.5578381174327705, + 1.4886917554023165, + 1.4248622085967848, + 1.3660866588452998, + 1.3121143389587635, + 1.2627059300678218, + 1.2176330047622723, + 1.1766775395583953, + 1.1396313173497108, + 1.1062955788510815, + 1.0764804537609591, + 1.0500045571137415, + 1.0266946725112112, + 1.0063852051290842, + 0.9889178924204969, + 0.9741415297294548, + 0.9619114746383648, + 0.9520893960829774, + 0.9445430631447783, + 0.939145942382848, + 0.9357769010216073, + 0.9343200596571354, + 0.9346645462081259, + 0.9367041014893603, + 0.9403369794133032, + 0.9454657865141428, + 0.9519971950147134, + 0.9598416949021543, + 0.968913519835209, + 0.9791305128377515, + 0.9904138429133296, + 1.002687845597446, + 1.015879960196277, + 1.0299206222763009, + 1.0447430281546897, + 1.0602829883365583, + 1.0764788949458106, + 1.0932716215410754, + 1.1106043835443806, + 1.128422549101871, + 1.1466736289211734, + 1.1653071897992309, + 1.1842748100801914, + 1.2035298772790857, + 1.2230275322163238, + 1.2427246575066593, + 1.2625797901511517, + 1.2825530869256123, + 1.3026061561845244, + 1.3227020351349204, + 1.3428051838168873, + 1.3628814018579678, + 1.3828978177519753, + 1.4028227543039489, + 1.4226256983833854, + 1.4422773009242411, + 1.4617493427090893, + 1.481014665747488, + 1.5000471522851004, + 1.5188216376155999, + 1.5373139078423896, + 1.5555006998786045, + 1.5733596796578946, + 1.590869350944609, + 1.608009062687731, + 1.624758948599265, + 1.6410999224551497, + 1.657013678095257, + 1.6724826894233917, + 1.6874902036052348, + 1.7020201193836204, + 1.7160569677985669, + 1.7295859390311235, + 1.742592876196323, + 1.7550642753431824, + 1.7669872854547033, + 1.7783497084478703, + 1.789139962550884, + 1.7993469026352198, + 1.8089599395439322, + 1.8179690511495274, + 1.8263647781490848, + 1.834138224064258, + 1.8412810552412746, + 1.8477854779807985, + 1.8536440830192789, + 1.858849907146727, + 1.8633964927878175, + 1.8672778878935539, + 1.8704886459412704, + 1.8730238259346297, + 1.8748789756080158, + 1.8760499613156878, + 1.8765330273985128, + 1.8763248786463866, + 1.8754226790839708, + 1.8738240519706921, + 1.8715270798007437, + 1.8685302869580833, + 1.8648324730990153, + 1.8604327713443751, + 1.8553307377946675, + 1.8495263518542187, + 1.8430200162311763, + 1.8358125569375092, + 1.8279052003951826, + 1.8192993988790664, + 1.8099969158773839, + 1.799999905568461, + 1.7893109123354543, + 1.7779328707663502, + 1.765869105653964, + 1.7531232969541186, + 1.739699309204735, + 1.7256013081013295, + 1.7108338184492378, + 1.6954017237332444, + 1.679310266117584, + 1.6625650464459418, + 1.645171966519876, + 1.6271370811599777, + 1.6084667408242213, + 1.5891676222086286, + 1.5692467281617424, + 1.5487113876846252, + 1.527569255403455, + 1.5058282182977765, + 1.483496308853021, + 1.4605818407612983, + 1.4370934197352827, + 1.4130399435082162, + 1.388430601833905, + 1.3632748709790372, + 1.337582385074024, + 1.3113629342662865, + 1.2846265639208758, + 1.2573835749841054, + 1.2296445239835543, + 1.2014202230280642, + 1.1727217189630699, + 1.1435601533376898, + 1.1139468389498866, + 1.0838933069131018, + 1.0534113051619733, + 1.0225127984523383, + 0.9912099683612269, + 0.9595151600473664, + 0.9274407839978875, + 0.8949994199466966, + 0.8622038235173728, + 0.8290669261812131, + 0.7956018352572298, + 0.7618218308256017, + 0.727740272702365, + 0.6933705954230573, + 0.6587263704727093, + 0.6238213023766782, + 0.5886692287006476, + 0.5532841200506305, + 0.5176800612478445, + 0.4818711566105395, + 0.445871592295639, + 0.4096956453982831, + 0.3733576819047867, + 0.3368721566926404, + 0.30025361334923095, + 0.2635166322236725, + 0.2266758023778688, + 0.1897457675426596, + 0.1527412154702533, + 0.11567687793422589, + 0.0785675307295232, + 0.04142798501981789, + 0.004273025714451229, + -0.03288255111105141, + -0.07002394571250715, + -0.10713635919127013, + -0.14420499349423263, + -0.1812150514442841, + -0.21815176884595028, + -0.25500041903548876, + -0.2917463009746194, + -0.32837475927216997, + -0.36487118418407616, + -0.40122101161338125, + -0.4374097271536089, + -0.47342291255740254, + -0.5092461696847076, + -0.5448651754451559, + -0.5802657043344778, + -0.615433628434503, + -0.650354917413158, + -0.6850156385244697, + -0.71940195660856, + -0.7535001574707619, + -0.787296619767682, + -0.8207777974312388, + -0.8539302943900111, + -0.8867408656633656, + -0.9191964173614621, + -0.9512840066852433, + -0.982990841926448, + -1.0143042915927634, + -1.0452118092243166, + -1.0757009896119092, + -1.1057596245833963, + -1.1353757030080074, + -1.1645374107963553, + -1.1932331309004287, + -1.2214514454568455, + -1.2491810955618619, + -1.2764109244766884, + -1.3031299978901734, + -1.329327618841526, + -1.3549933277203088, + -1.380116902266443, + -1.4046883575702052, + -1.428697931439468, + -1.452135971505767, + -1.4749930325449099, + -1.4972599405155527, + -1.5189277926198779, + -1.5399879573035877, + -1.5604320742559097, + -1.5802520495832515, + -1.599439944102872, + -1.6179879939828767, + -1.6358887297273197, + -1.6531349805932938, + -1.6697198745909239, + -1.685636838483374, + -1.700879596367947, + -1.7154420740091811, + -1.729318350941937, + -1.742502811866582, + -1.7549901609330671, + -1.766775421740931, + -1.7778539373392965, + -1.7882213697668938, + -1.7978736169562117, + -1.8068067222726896, + -1.815017038452139, + -1.8225012516035892, + -1.8292563812092848, + -1.8352797801246883, + -1.8405691342929076, + -1.8451223819711193, + -1.8489376065787066, + -1.852013204192515, + -1.854347911353944, + -1.8559408050689463, + -1.856791302808029, + -1.8568991620196253, + -1.8562643903041933, + -1.854887144904358, + -1.8527679000585575, + -1.8499074708897247, + -1.8463070134052872, + -1.8419680244971681, + -1.8368923403832962, + -1.831082026526432, + -1.8245393085879977, + -1.817266732136568, + -1.8092671776515166, + -1.8005438605230193, + -1.791100331052052, + -1.780940469235884, + -1.7700683474876815, + -1.7584882176440524, + -1.746204648311081, + -1.7332225308895972, + -1.7195470795751742, + -1.7051838313581305, + -1.690138631067153, + -1.674417471542981, + -1.6580265517097454, + -1.6409723746518963, + -1.6232617482859584, + -1.6049017853605265, + -1.5858999034562697, + -1.5662637886014585, + -1.546001238154693, + -1.5251202807554465, + -1.5036292268817852, + -1.4815366684848978, + -1.4588514789891034, + -1.4355828131788326, + -1.4117400309751627, + -1.38733259607013, + -1.3623702101230846, + -1.3368628279966845, + -1.3108206577569024, + -1.2842541606730187, + -1.2571740463526715, + -1.2295911530656933, + -1.2015164437658055, + -1.1729611014303523, + -1.1439365296329755, + -1.1144543525436086, + -1.0845264149284728, + -1.0541647592567078, + -1.023381495508333, + -0.9921888816972685, + -0.9605993613962989, + -0.9286255624560447, + -0.8962802970049515, + -0.8635765613932148, + -0.8305274740815927, + -0.7971462051251504, + -0.763446068041314, + -0.7294405212800673, + -0.6951431682239408, + -0.6605677571880236, + -0.6257281747649002, + -0.5906383501906894, + -0.5553122804433733, + -0.5197640697172323, + -0.484007925495703, + -0.4480581585513917, + -0.4119291829460622, + -0.37563548590884993, + -0.3391915559492416, + -0.3026119480932264, + -0.2659112780151212, + -0.22910422150900267, + -0.1922055144887141, + -0.15522995046641622, + -0.11819231880400397, + -0.08110741654610416, + -0.04399006524925376, + -0.006855102713402707, + 0.030282617018073422, + 0.06740822365838012, + 0.10450684969314532, + 0.14156366993334576, + 0.17856386437821792, + 0.21549263949180453, + 0.25233522915569134, + 0.28907689466901965, + 0.3257029284789206, + 0.3621986921351849, + 0.3985495772091384, + 0.43474103752480614, + 0.47075860054409074, + 0.5065878673667857, + 0.5422145127305624, + 0.57762428501098, + 0.6128030573196056, + 0.6477367786304943, + 0.6824114072087427, + 0.7168130342803998, + 0.7509278855656857, + 0.7847423212789798, + 0.8182428361288338, + 0.8514160593179564, + 0.8842487545432318, + 0.9167278200606147, + 0.9488402684071106, + 0.9805732029245567, + 1.0119138947772501, + 1.0428497967431516, + 1.0733685432138997, + 1.103457950194797, + 1.1331060153112447, + 1.1623009371457933, + 1.191030999525053, + 1.2192846376742281, + 1.2470505138834056, + 1.2743175175075458, + 1.3010747649664924, + 1.3273115997449625, + 1.3530175924218286, + 1.3781824991526377, + 1.4027961786927017, + 1.426848721249251, + 1.4503304782747866, + 1.473232062467087, + 1.4955443477691994, + 1.5172584693694497, + 1.5383658155592759, + 1.558857903050289, + 1.5787264451556844, + 1.5979634464653278, + 1.6165612037636152, + 1.6345123060294804, + 1.651809634436387, + 1.6684463594496584, + 1.684415833002537, + 1.6997115679427799, + 1.7143273814613686, + 1.7282574049789334, + 1.7414960841457494, + 1.7540381788417396, + 1.7658787627524033, + 1.7770131408534127, + 1.787436760416277, + 1.797145375451529, + 1.8061350705606647, + 1.8144022609361483, + 1.821943692361409, + 1.8287564411101411, + 1.8348378422164358, + 1.840185368497097, + 1.844796798545393, + 1.8486702503210852, + 1.8518041811504296, + 1.8541973877261761, + 1.8558490060420392, + 1.8567584403424622, + 1.8569252339979763, + 1.856349237049757, + 1.8550306412848239, + 1.8529699802360406, + 1.8501681291821155, + 1.8466263049144742, + 1.8423459819967873, + 1.8373287777016676, + 1.8315766196406158, + 1.8250917728128264, + 1.817876839605189, + 1.8099347597922872, + 1.8012688092565128, + 1.791882492746301, + 1.7817794678593195, + 1.7709637037003079, + 1.75943949632877, + 1.7472114687589766, + 1.73428457095996, + 1.7206640746568431, + 1.7063554364071816, + 1.6913642850751083, + 1.675696554770952, + 1.659358490078134, + 1.642356646053168, + 1.6246978882256633, + 1.6063893765502755, + 1.5874384070200924, + 1.5678524745526703, + 1.5476393624546827, + 1.5268071425439638, + 1.5053641751495153, + 1.4833191091115026, + 1.4606808418345862, + 1.4374583701824213, + 1.4136609122773345, + 1.3892979480728782, + 1.3643792189941661, + 1.338914727937863, + 1.312914738919387, + 1.286389694452717, + 1.2593501342615536, + 1.2318068186920494, + 1.2037707380369362, + 1.1752531125355359, + 1.1462653923737516, + 1.1168192505783476, + 1.0869264617393475, + 1.0565989198759274, + 1.0258487147878033, + 0.9946881308060431, + 0.9631296467930501, + 0.9311859361425754, + 0.8988698376377783, + 0.8661942386952015, + 0.8331721629431049, + 0.7998167908424532, + 0.7661414587597507, + 0.7321596589670526, + 0.6978850390443814, + 0.6633313310090072, + 0.6285123125832454, + 0.5934418796908375, + 0.558134043038592, + 0.5226029281163976, + 0.4868627751972175, + 0.450927928308126, + 0.4148127456626542, + 0.3785316440637369, + 0.34209911564235634, + 0.30552972445582793, + 0.26883810648781337, + 0.23203896964829793, + 0.19514705417645237, + 0.15817709243393363, + 0.12114385763409015, + 0.08406215113413837, + 0.04694680243019269, + 0.009812669157255722, + -0.027325369070726732, + -0.06445246662734934, + -0.10155378039960454, + -0.13861447727069448, + -0.17561973982190976, + -0.21255476633264808, + -0.24940477078298515, + -0.2861550072835183, + -0.3227907854029046, + -0.35929745191109463 + ] + }, + "T": { + "_class": "Par", + "value": 0.4, + "unit": "s" + } +} diff --git a/resources/fileio/pendulum1.json b/resources/fileio/pendulum1.json new file mode 100644 index 0000000..7d7303e --- /dev/null +++ b/resources/fileio/pendulum1.json @@ -0,0 +1,3595 @@ +{ + "_class": "SignalTable", + "_classVersion": "0.3.5", + "time": { + "_class": "Var", + "unit": "s", + "independent": true, + "values": [ + 0.0, + 0.02, + 0.04, + 0.06, + 0.08, + 0.1, + 0.12, + 0.14, + 0.16, + 0.18, + 0.2, + 0.22, + 0.24, + 0.26, + 0.28, + 0.3, + 0.32, + 0.34, + 0.36, + 0.38, + 0.4, + 0.42, + 0.44, + 0.46, + 0.48, + 0.5, + 0.52, + 0.54, + 0.56, + 0.58, + 0.6, + 0.62, + 0.64, + 0.66, + 0.68, + 0.7, + 0.72, + 0.74, + 0.76, + 0.78, + 0.8, + 0.82, + 0.84, + 0.86, + 0.88, + 0.9, + 0.92, + 0.94, + 0.96, + 0.98, + 1.0, + 1.02, + 1.04, + 1.06, + 1.08, + 1.1, + 1.12, + 1.14, + 1.16, + 1.18, + 1.2, + 1.22, + 1.24, + 1.26, + 1.28, + 1.3, + 1.32, + 1.34, + 1.36, + 1.38, + 1.4, + 1.42, + 1.44, + 1.46, + 1.48, + 1.5, + 1.52, + 1.54, + 1.56, + 1.58, + 1.6, + 1.62, + 1.64, + 1.66, + 1.68, + 1.7, + 1.72, + 1.74, + 1.76, + 1.78, + 1.8, + 1.82, + 1.84, + 1.86, + 1.88, + 1.9, + 1.92, + 1.94, + 1.96, + 1.98, + 2.0, + 2.02, + 2.04, + 2.06, + 2.08, + 2.1, + 2.12, + 2.14, + 2.16, + 2.18, + 2.2, + 2.22, + 2.24, + 2.26, + 2.28, + 2.3, + 2.32, + 2.34, + 2.36, + 2.38, + 2.4, + 2.42, + 2.44, + 2.46, + 2.48, + 2.5, + 2.52, + 2.54, + 2.56, + 2.58, + 2.6, + 2.62, + 2.64, + 2.66, + 2.68, + 2.7, + 2.72, + 2.74, + 2.76, + 2.78, + 2.8, + 2.82, + 2.84, + 2.86, + 2.88, + 2.9, + 2.92, + 2.94, + 2.96, + 2.98, + 3.0, + 3.02, + 3.04, + 3.06, + 3.08, + 3.1, + 3.12, + 3.14, + 3.16, + 3.18, + 3.2, + 3.22, + 3.24, + 3.26, + 3.28, + 3.3, + 3.32, + 3.34, + 3.36, + 3.38, + 3.4, + 3.42, + 3.44, + 3.46, + 3.48, + 3.5, + 3.52, + 3.54, + 3.56, + 3.58, + 3.6, + 3.62, + 3.64, + 3.66, + 3.68, + 3.7, + 3.72, + 3.74, + 3.76, + 3.78, + 3.8, + 3.82, + 3.84, + 3.86, + 3.88, + 3.9, + 3.92, + 3.94, + 3.96, + 3.98, + 4.0, + 4.02, + 4.04, + 4.06, + 4.08, + 4.1, + 4.12, + 4.14, + 4.16, + 4.18, + 4.2, + 4.22, + 4.24, + 4.26, + 4.28, + 4.3, + 4.32, + 4.34, + 4.36, + 4.38, + 4.4, + 4.42, + 4.44, + 4.46, + 4.48, + 4.5, + 4.52, + 4.54, + 4.56, + 4.58, + 4.6, + 4.62, + 4.64, + 4.66, + 4.68, + 4.7, + 4.72, + 4.74, + 4.76, + 4.78, + 4.8, + 4.82, + 4.84, + 4.86, + 4.88, + 4.9, + 4.92, + 4.94, + 4.96, + 4.98, + 5.0, + 5.02, + 5.04, + 5.06, + 5.08, + 5.1, + 5.12, + 5.14, + 5.16, + 5.18, + 5.2, + 5.22, + 5.24, + 5.26, + 5.28, + 5.3, + 5.32, + 5.34, + 5.36, + 5.38, + 5.4, + 5.42, + 5.44, + 5.46, + 5.48, + 5.5, + 5.52, + 5.54, + 5.56, + 5.58, + 5.6, + 5.62, + 5.64, + 5.66, + 5.68, + 5.7, + 5.72, + 5.74, + 5.76, + 5.78, + 5.8, + 5.82, + 5.84, + 5.86, + 5.88, + 5.9, + 5.92, + 5.94, + 5.96, + 5.98, + 6.0, + 6.02, + 6.04, + 6.06, + 6.08, + 6.1, + 6.12, + 6.14, + 6.16, + 6.18, + 6.2, + 6.22, + 6.24, + 6.26, + 6.28, + 6.3, + 6.32, + 6.34, + 6.36, + 6.38, + 6.4, + 6.42, + 6.44, + 6.46, + 6.48, + 6.5, + 6.52, + 6.54, + 6.56, + 6.58, + 6.6, + 6.62, + 6.64, + 6.66, + 6.68, + 6.7, + 6.72, + 6.74, + 6.76, + 6.78, + 6.8, + 6.82, + 6.84, + 6.86, + 6.88, + 6.9, + 6.92, + 6.94, + 6.96, + 6.98, + 7.0, + 7.02, + 7.04, + 7.06, + 7.08, + 7.1, + 7.12, + 7.14, + 7.16, + 7.18, + 7.2, + 7.22, + 7.24, + 7.26, + 7.28, + 7.3, + 7.32, + 7.34, + 7.36, + 7.38, + 7.4, + 7.42, + 7.44, + 7.46, + 7.48, + 7.5, + 7.52, + 7.54, + 7.56, + 7.58, + 7.6, + 7.62, + 7.64, + 7.66, + 7.68, + 7.7, + 7.72, + 7.74, + 7.76, + 7.78, + 7.8, + 7.82, + 7.84, + 7.86, + 7.88, + 7.9, + 7.92, + 7.94, + 7.96, + 7.98, + 8.0, + 8.02, + 8.04, + 8.06, + 8.08, + 8.1, + 8.12, + 8.14, + 8.16, + 8.18, + 8.2, + 8.22, + 8.24, + 8.26, + 8.28, + 8.3, + 8.32, + 8.34, + 8.36, + 8.38, + 8.4, + 8.42, + 8.44, + 8.46, + 8.48, + 8.5, + 8.52, + 8.54, + 8.56, + 8.58, + 8.6, + 8.62, + 8.64, + 8.66, + 8.68, + 8.7, + 8.72, + 8.74, + 8.76, + 8.78, + 8.8, + 8.82, + 8.84, + 8.86, + 8.88, + 8.9, + 8.92, + 8.94, + 8.96, + 8.98, + 9.0, + 9.02, + 9.04, + 9.06, + 9.08, + 9.1, + 9.12, + 9.14, + 9.16, + 9.18, + 9.2, + 9.22, + 9.24, + 9.26, + 9.28, + 9.3, + 9.32, + 9.34, + 9.36, + 9.38, + 9.4, + 9.42, + 9.44, + 9.46, + 9.48, + 9.5, + 9.52, + 9.54, + 9.56, + 9.58, + 9.6, + 9.62, + 9.64, + 9.66, + 9.68, + 9.7, + 9.72, + 9.74, + 9.76, + 9.78, + 9.8, + 9.82, + 9.84, + 9.86, + 9.88, + 9.9, + 9.92, + 9.94, + 9.96, + 9.98, + 10.0 + ] + }, + "w": { + "_class": "Var", + "unit": "rad*s^-1", + "start": { + "_class": "Number", + "unit": "rad*s^-1", + "type": "Int64", + "value": 0 + }, + "fixed": true, + "state": true, + "der": "der(w)", + "values": [ + 0.0, + -0.24334354268427189, + -0.4829091222923825, + -0.7187330700262486, + -0.9508179820797097, + -1.1791177490675304, + -1.4035244043579782, + -1.623854831640678, + -1.8398408412377623, + -2.0511191385237644, + -2.2572241029699196, + -2.457583088386393, + -2.6515141273232508, + -2.8382269526285064, + -3.0168276567340473, + -3.1863297569945397, + -3.345664608214144, + -3.493702020824554, + -3.6292754961613354, + -3.751203299188763, + -3.858325036528251, + -3.949535994915892, + -4.023814939329319, + -4.080265883637331, + -4.118149357684467, + -4.136906380563856, + -4.1361865482865525, + -4.115862715600211, + -4.076037774887587, + -4.017044658414996, + -3.9394395010298218, + -3.843982734894812, + -3.7316159146058956, + -3.6034365689507304, + -3.460660732942429, + -3.3045948285467475, + -3.1366008890157038, + -2.9580605926321635, + -2.7703534249597994, + -2.57482821710403, + -2.3727798354808285, + -2.16543932870218, + -1.9539591639019553, + -1.739407279157327, + -1.5227645652682498, + -1.3049260596046575, + -1.0867042106066447, + -0.8688374817273598, + -0.6519955404042485, + -0.436789074253642, + -0.22378245323596432, + -0.013502647836341126, + 0.19355201598154437, + 0.3968990331430209, + 0.5960622785801125, + 0.790565763531305, + 0.9799243737394835, + 1.1636374027860052, + 1.3411858765338365, + 1.512027900845946, + 1.6755990983091282, + 1.8313132394239033, + 1.9785648381324203, + 2.116732870433136, + 2.2451936283457785, + 2.3633236245087073, + 2.4705109128363674, + 2.5661684953926995, + 2.649750285734049, + 2.7207577861103664, + 2.778755658028044, + 2.823387516513761, + 2.854384386629065, + 2.871573153918681, + 2.8748857300328976, + 2.8643644022449495, + 2.8401623504228675, + 2.8025428335514526, + 2.7518757470652697, + 2.6886320740842433, + 2.613373297601232, + 2.526741380012639, + 2.429448222711208, + 2.3222599836416227, + 2.2059854744648906, + 2.081464182303667, + 1.9495511981541238, + 1.8111074148292543, + 1.6669905298968555, + 1.5180447165319775, + 1.3650939707625533, + 1.2089383759377577, + 1.050349318424375, + 0.8900673467217383, + 0.728801762090723, + 0.5672309040447774, + 0.40600373402287027, + 0.2457410500604563, + 0.08703867523017168, + -0.06952952358565559, + -0.22340967159303413, + -0.3740643849768578, + -0.5209703282544974, + -0.6636166706761738, + -0.8015030119343693, + -0.934138953236297, + -1.0610440831876153, + -1.181748038028198, + -1.2957931830186382, + -1.4027361743088278, + -1.5021504096944183, + -1.5936315875888956, + -1.6768008548142086, + -1.7513088639386405, + -1.8168419535158982, + -1.8731275030727317, + -1.9199372242366144, + -1.9570924790134356, + -1.9844694149281223, + -2.002000840504578, + -2.0096790141589236, + -2.0075577249147742, + -1.995752520907482, + -1.9744397906530329, + -1.943855014650096, + -1.9042907805619056, + -1.8560924464010236, + -1.799653444243807, + -1.7354112658805845, + -1.6638410829050325, + -1.5854496366864481, + -1.5007706048625327, + -1.4103576635989117, + -1.3147786964269228, + -1.2146117723432805, + -1.110439398436539, + -1.002843893600038, + -0.8924048182925605, + -0.7796952572326823, + -0.6652788713599821, + -0.5497086299215316, + -0.43352515975973355, + -0.3172553473595381, + -0.20141191173500844, + -0.08649316221809693, + 0.027017550595880162, + 0.13865182610777085, + 0.24795605295658932, + 0.35449186521729115, + 0.45783611036269506, + 0.5575812075923078, + 0.6533359840270225, + 0.7447260205217919, + 0.8313950292119183, + 0.9130062031818875, + 0.9892431756365555, + 1.0598122700688668, + 1.124444390264061, + 1.182896370340596, + 1.234953469848088, + 1.280431661150534, + 1.3191788070968418, + 1.351076657843216, + 1.3760428676531409, + 1.3940316099197503, + 1.4050344690475536, + 1.409081274249036, + 1.406239973250078, + 1.3966160437104633, + 1.3803517225098716, + 1.357625003442722, + 1.3286475921934948, + 1.2936627617345355, + 1.252943495910814, + 1.2067894000534785, + 1.1555237690983553, + 1.0994912468300793, + 1.0390542668134986, + 0.9745899295080134, + 0.906487734341766, + 0.8351461923539001, + 0.7609699126042081, + 0.6843677853151791, + 0.6057502714209279, + 0.5255269441127758, + 0.4441052241324484, + 0.361888478835755, + 0.2792741503167584, + 0.19665289537479924, + 0.11440736189494966, + 0.032910787092237014, + -0.047473596396209086, + -0.12639346950085675, + -0.20350853633087712, + -0.2784910124390274, + -0.35102659552730286, + -0.4208154055394709, + -0.4875725164209327, + -0.5510292074984604, + -0.6109338008992877, + -0.6670523235033795, + -0.719169926655224, + -0.7670917110992514, + -0.8106433997530351, + -0.8496727181732776, + -0.8840501641324522, + -0.9136694924945633, + -0.9384486886477874, + -0.9583305999061232, + -0.9732830260923288, + -0.9832990307805113, + -0.9883971640199768, + -0.9886211034381801, + -0.9840391909818643, + -0.9747440162090099, + -0.960851642527593, + -0.9425004094061497, + -0.9198498796963532, + -0.8930797002583766, + -0.8623878432759783, + -0.8279891357575853, + -0.7901138593553868, + -0.7490056815807883, + -0.704919985444263, + -0.658122444871864, + -0.6088869356958448, + -0.557493773825967, + -0.5042284791929955, + -0.4493799086996017, + -0.3932385225125707, + -0.3360954058951385, + -0.2782407286722714, + -0.21996217691118994, + -0.16154416602052643, + -0.10326662643801864, + -0.04540365219654241, + 0.011777145849757632, + 0.06801565053017149, + 0.12306036022609296, + 0.1766689439239296, + 0.22860919694934295, + 0.27865992132985, + 0.32661142674445887, + 0.37226651434285, + 0.4154411512151985, + 0.45596491792136956, + 0.49368193015343426, + 0.5284513966393805, + 0.5601479458521224, + 0.5886623854849664, + 0.6139021565705348, + 0.6357914667604881, + 0.6542717238389159, + 0.6693018641566256, + 0.6808582569357754, + 0.6889347146707504, + 0.6935425566534125, + 0.6947103162421288, + 0.6924833206779878, + 0.6869233524704866, + 0.6781082014622162, + 0.6661308744742874, + 0.6510988430564454, + 0.6331334475348627, + 0.6123688419800469, + 0.5889509263911189, + 0.5630366141997933, + 0.5347926729182669, + 0.5043943880529789, + 0.4720248470583212, + 0.4378737081152657, + 0.40213582101761086, + 0.36501044599845356, + 0.32670016070718844, + 0.2874095192503512, + 0.24734420901493173, + 0.20671016784728688, + 0.1657123658180781, + 0.12455393055882759, + 0.08343545683152716, + 0.04255393564699579, + 0.0021019286604679437, + -0.037732998423738694, + -0.07676921451551731, + -0.11483172403301706, + -0.151752665066734, + -0.18737214344987976, + -0.22153877677263561, + -0.254110111934957, + -0.2849533881632234, + -0.31394592350641654, + -0.3409754280849455, + -0.3659406303247259, + -0.38875157253023807, + -0.4093297631755781, + -0.42760860631635866, + -0.4435336285780803, + -0.4570624529547619, + -0.46816494823419147, + -0.4768233633908305, + -0.48303216236934393, + -0.4867978702913459, + -0.48813900277622674, + -0.487085833079364, + -0.483679974830403, + -0.4779740240748693, + -0.47003128162180624, + -0.45992513426198384, + -0.4477384570224144, + -0.43356321618567484, + -0.4174997801934042, + -0.3996561280948794, + -0.3801473100925318, + -0.35909477663670714, + -0.3366254924392133, + -0.31287121643457316, + -0.2879679261827333, + -0.26205494572498045, + -0.2352740525718308, + -0.20776900374796256, + -0.17968474009261598, + -0.15116643985779998, + -0.12235907395963663, + -0.09340671292173902, + -0.06445165735953945, + -0.035633955275062204, + -0.007090849206446558, + 0.02104400164970133, + 0.04864099199058598, + 0.0755750210790152, + 0.10172616575444945, + 0.12698008683958995, + 0.151228383730053, + 0.1743691939649201, + 0.1963074913843253, + 0.21695534363646918, + 0.23623239677799301, + 0.25406610842797434, + 0.27039187367241624, + 0.2851533560673762, + 0.29830268045445857, + 0.30980042783008355, + 0.3196157553389233, + 0.3277265372609374, + 0.3341192783538348, + 0.3387890112283337, + 0.3417392894791708, + 0.34298209423931275, + 0.34253754238525597, + 0.3404336848262623, + 0.33670635453450065, + 0.3313988085414357, + 0.32456134650524754, + 0.3162509959715676, + 0.3065311860628226, + 0.2954712508394457, + 0.283145916551724, + 0.26963501760054165, + 0.2550229428642503, + 0.23939801294050894, + 0.22285213113097455, + 0.20548027949660833, + 0.18737989152281073, + 0.168650324306391, + 0.149392486317964, + 0.12970825619844006, + 0.10969982407768714, + 0.08946939871137237, + 0.06911868970474035, + 0.0487482656308076, + 0.028457229761158918, + 0.008342809844214736, + -0.011500212377604114, + -0.03097985809835686, + -0.0500072603622096, + -0.06849715287922159, + -0.08636820631942635, + -0.103543255489687, + -0.11994970677247485, + -0.1355198289709383, + -0.1501908980395065, + -0.16390548830684237, + -0.17661173594155646, + -0.18826340510860556, + -0.1988200262087044, + -0.20824712159893666, + -0.21651622452966493, + -0.22360486193503504, + -0.22949666688705433, + -0.23418139882895045, + -0.23765481734936483, + -0.23991862319370574, + -0.24098042637523118, + -0.24085361837227912, + -0.23955715514180936, + -0.2371153831818506, + -0.2335579345610813, + -0.228919428818835, + -0.22323919494399533, + -0.21656103472114022, + -0.20893299366684412, + -0.2004070059721382, + -0.19103849395797998, + -0.18088618965876754, + -0.170011747041929, + -0.15847932203689455, + -0.14635523898139716, + -0.13370771919486735, + -0.12060647482653573, + -0.1071222223701954, + -0.0933264881679655, + -0.07929122514081388, + -0.06508835464216411, + -0.05078946708842774, + -0.036465555530396564, + -0.02218661941675742, + -0.00802127569523896, + 0.005963427461108474, + 0.019702325630534596, + 0.03313253500711806, + 0.04619361347829394, + 0.058827794479040636, + 0.07098033137691447, + 0.0825996543224088, + 0.09363751604780389, + 0.10404926505296208, + 0.11379400120322888, + 0.12283464249704532, + 0.1311380799449915, + 0.1386753437709603, + 0.14542161965303718, + 0.15135626677496788, + 0.15646293891160806, + 0.1607296022080224, + 0.1641484589718968, + 0.16671593753730693, + 0.16843269691313204, + 0.16930355627082197, + 0.1693373472225907, + 0.1685468243108555, + 0.16694860518457355, + 0.16456299342948225, + 0.16141379953554513, + 0.15752815207448456, + 0.1529364097087378, + 0.14767189511623965, + 0.14177066052480586, + 0.13527128686485607, + 0.12821471343323848, + 0.1206439673384799, + 0.11260383444653431, + 0.10414072224123128, + 0.09530240025097932, + 0.08613770977073387, + 0.07669625259787866, + 0.06702825728295358, + 0.057184295518197675, + 0.04721494479323122, + 0.03717060304207139, + 0.02710128889563522, + 0.017056365672874173, + 0.007084248329098743, + -0.0027677167063872633, + -0.012453465768924758, + -0.021928514956939964, + -0.03115008713353021, + -0.04007725772591784, + -0.048671184257720684, + -0.056895273346231595, + -0.06471526116130662, + -0.07209935236100641, + -0.07901841036999777, + -0.08544600042695646, + -0.09135843986176864, + -0.09673493762632462, + -0.1015576570717266, + -0.10581170745162057, + -0.10948516408197678, + -0.11256913864719906, + -0.11505777308773335, + -0.11694816450674257, + -0.11824035196589387, + -0.1189373051406328, + -0.1190448747643783, + -0.11857166132529236, + -0.11752894235886306, + -0.11593061186482452, + -0.11379307974649293, + -0.11113511482476822, + -0.10797769368956735, + -0.1043439250691746, + -0.1002588954617163, + -0.09574950197821297, + -0.09084423542177801, + -0.08557310933614111, + -0.07996746393688654, + -0.07405978031393581, + -0.06788344784040566, + -0.06147269820692716, + -0.05486236458287652, + -0.048087688148172325 + ] + }, + "der(w)": { + "_class": "Var", + "unit": "rad*s^-2", + "values": [ + -12.262496111951622, + -12.07232364873871, + -11.884550654870011, + -11.697878375290795, + -11.510239050823, + -11.31885322078342, + -11.12028926419015, + -10.910530342806444, + -10.685049543610917, + -10.438900899038877, + -10.166827224477101, + -9.86338919698609, + -9.523119518361511, + -9.140699142989627, + -8.711159908028195, + -8.230103544987292, + -7.693935820848642, + -7.100104014733294, + -6.447318605597315, + -5.735759761215892, + -4.967233249202266, + -4.145264573828484, + -3.275135697399441, + -2.3638168529281414, + -1.4198155440096356, + -0.4529509840607299, + 0.5259761101831895, + 1.5055547613645086, + 2.4741751237325316, + 3.4204655949663576, + 4.333692336007976, + 5.204127719084806, + 6.0233499676097075, + 6.784456893115939, + 7.482194043249652, + 8.112991691376092, + 8.674919073709157, + 9.167564043000883, + 9.591865553319508, + 9.949901134459827, + 10.244650479191364, + 10.479766350674032, + 10.659340893359987, + 10.78768590276064, + 10.869148373890404, + 10.907952472888486, + 10.908056122593926, + 10.87305225314179, + 10.806092930102363, + 10.709835916568146, + 10.586417939294442, + 10.437447197932372, + 10.264011811868073, + 10.066706288323529, + 9.845671945027922, + 9.600646799190436, + 9.331029844495228, + 9.035955049582139, + 8.714371136460807, + 8.365133782556462, + 7.987101578429365, + 7.579234744720058, + 7.1406986688568015, + 6.670968819455353, + 6.169919367626047, + 5.637914353189308, + 5.075884687634485, + 4.485383521149953, + 3.868612738149615, + 3.228442088056049, + 2.5683925042596294, + 1.8925782899086476, + 1.205639724099024, + 0.512648332640662, + -0.18102045166938707, + -0.8698252349116533, + -1.5481941506939152, + -2.2106757615769888, + -2.8520809772225135, + -3.467602214649865, + -4.05292343130344, + -4.604303560024303, + -5.118630257454677, + -5.593449729099732, + -6.026969798301627, + -6.4180367476456395, + -6.766091337803128, + -7.071110809318297, + -7.333536476776749, + -7.554192258846566, + -7.734203764181192, + -7.874917571890795, + -7.977820699792873, + -8.044470610787283, + -8.07643519331331, + -8.075237525073582, + -8.042315477578958, + -7.978992682247907, + -7.886457394783661, + -7.765754275057248, + -7.61778591979225, + -7.443322305915316, + -7.243019196233368, + -7.017443421488849, + -6.767104082806376, + -6.492487510916549, + -6.194096347717905, + -5.872490727317132, + -5.528326691367345, + -5.162396410365844, + -4.775665512723627, + -4.369300262657569, + -3.9446939341714176, + -3.5034858539321414, + -3.0475666298835704, + -2.5790750771143487, + -2.100391162218525, + -1.6141130543017577, + -1.1230214101891207, + -0.6300463046707282, + -0.13822022232112643, + 0.3493780677506467, + 0.8296721206030857, + 1.299642945835755, + 1.7563854280967504, + 2.197153772311021, + 2.6194050060482144, + 3.0208370879056488, + 3.399414299888776, + 3.7533857940324884, + 4.081296514418237, + 4.3819863082679955, + 4.654582034473432, + 4.898484206211415, + 5.113345865639257, + 5.29904676815801, + 5.45566677240509, + 5.58345669122941, + 5.682807352458338, + 5.754222105385105, + 5.798291235129291, + 5.81566689301833, + 5.807043785007113, + 5.7731439847680175, + 5.7147037943262795, + 5.632466399348832, + 5.527178922834608, + 5.399591826541623, + 5.250462677538941, + 5.080563315076298, + 4.890688169076591, + 4.6816651337796, + 4.454368153280483, + 4.209728251285125, + 3.9487458159733846, + 3.672502467002303, + 3.3821684570437545, + 3.079009805627673, + 2.764393959029972, + 2.439788760690788, + 2.1067590419615785, + 1.7669629521101096, + 1.4221407488973623, + 1.0740993599338393, + 0.7246995274647989, + 0.3758361900372519, + 0.02941488190110856, + -0.31266685203376654, + -0.648542359746077, + -0.9764006149393034, + -1.294504675192542, + -1.6012113630933251, + -1.8949902926183384, + -2.1744363404205447, + -2.438281087293227, + -2.6854021884345944, + -2.9148266590407905, + -3.1257323600585947, + -3.3174476848268726, + -3.489446348948017, + -3.6413406261758667, + -3.7728742333961134, + -3.8839123052385194, + -3.974430341224638, + -4.044504444920533, + -4.094300807119956, + -4.124064708651629, + -4.134111877075294, + -4.124820696856228, + -4.096624403803912, + -4.050005832966474, + -3.985493744930683, + -3.903659260515147, + -3.8051145050541546, + -3.6905126165186632, + -3.560547484515525, + -3.415955298132476, + -3.2575165198674774, + -3.086056560944889, + -2.902448380031042, + -2.7076139759786177, + -2.502523672099539, + -2.288197146138004, + -2.065702679956013, + -1.8361529504982543, + -1.600702744729839, + -1.3605448095514114, + -1.1169019198910395, + -0.8710201750370344, + -0.6241620068057067, + -0.37759542823317827, + -0.13258389740649207, + 0.10962213886431396, + 0.34779680128246737, + 0.5807498746830735, + 0.8073348559142758, + 1.0264590100940736, + 1.2370926504280182, + 1.43827495192724, + 1.629120723288178, + 1.8088260286067848, + 1.9766705939775415, + 2.1320204751478986, + 2.274329856890924, + 2.403139910976363, + 2.518077672979596, + 2.6188547950269614, + 2.705264069389552, + 2.777175733378112, + 2.8345344465859625, + 2.877355060197872, + 2.9057179836945113, + 2.91976568068147, + 2.9196989833275264, + 2.9057728969206296, + 2.878293596276942, + 2.837615899226076, + 2.784140151477278, + 2.7183101814948993, + 2.640611840778318, + 2.5515707945602872, + 2.451751366131372, + 2.341755551307326, + 2.2222208753537838, + 2.0938196902330013, + 1.9572577939975857, + 1.8132716549919885, + 1.6626271003062587, + 1.506117164987802, + 1.3445579223615016, + 1.1787859274198753, + 1.0096550062822127, + 0.8380308601285321, + 0.6647866314844411, + 0.49079902826854716, + 0.31694222468606276, + 0.1440818558726235, + -0.02692905330295598, + -0.19525605007781247, + -0.3600897451035288, + -0.5206495891605497, + -0.6761888624458019, + -0.8260003670826693, + -0.9694193762253922, + -1.105827031891518, + -1.2346543849132188, + -1.355384091345999, + -1.4675518469482887, + -1.5707486565530764, + -1.6646211267413422, + -1.748871123719088, + -1.8232562178808234, + -1.887589076914256, + -1.9417357977841232, + -1.985614952036069, + -2.0191964384063796, + -2.0424992337584347, + -2.0555895984275487, + -2.0585796594593098, + -2.0516252057328725, + -2.034923557932945, + -2.0087120997771066, + -1.9732663440108515, + -1.9288977678428854, + -1.875952426297944, + -1.8148091763791179, + -1.745877493248304, + -1.6695961623213056, + -1.5864314651387719, + -1.4968746467273577, + -1.4014406671618573, + -1.300666045599803, + -1.1951058480830485, + -1.0853320954828314, + -0.971931345373869, + -0.8555010446091905, + -0.7366473250819814, + -0.6159824176602421, + -0.49412074352964397, + -0.3716756901932404, + -0.24925719657496234, + -0.12746801024235305, + -0.006899634761218293, + 0.11186981465028396, + 0.22827881980437495, + 0.3417865626482665, + 0.45187486762881146, + 0.5580506583171067, + 0.6598492637575142, + 0.7568362117352906, + 0.8486086470100912, + 0.9347975872446534, + 1.0150693230742505, + 1.0891258577946379, + 1.1567059517896403, + 1.217586037807894, + 1.2715799369615493, + 1.3185387576266558, + 1.3583511810556017, + 1.3909428474354608, + 1.416275411936812, + 1.4343461227444803, + 1.4451871164913395, + 1.4488639963333523, + 1.445474849955137, + 1.4351494323899736, + 1.418047608832186, + 1.3943579698600612, + 1.3642968742677257, + 1.32810685969586, + 1.2860549964058976, + 1.2384317727106442, + 1.1855494836290887, + 1.1277402333928346, + 1.0653548183731685, + 0.9987609334500874, + 0.9283408740797963, + 0.8544902609692037, + 0.7776161923575133, + 0.6981346365646064, + 0.6164688136836584, + 0.5330474272406247, + 0.4483020446991397, + 0.36266476465006375, + 0.27656673883267785, + 0.19043585284809628, + 0.1046937346016757, + 0.01975452454436241, + -0.06397714822582393, + -0.14610890172600915, + -0.22626220988887238, + -0.30407378048479716, + -0.37919763632870707, + -0.4513070298314332, + -0.5200952584951513, + -0.5852769291794367, + -0.6465897255439035, + -0.7037949178552041, + -0.7566778737750388, + -0.8050491976673539, + -0.8487451810938588, + -0.8876277026162033, + -0.9215845477146082, + -0.9505297288908294, + -0.9744030983126758, + -0.9931699547205455, + -1.0068209632581278, + -1.0153717391515718, + -1.0188619698809074, + -1.0173548643949968, + -1.0109366693957107, + -0.9997155855911501, + -0.9838208167315182, + -0.9634018968799776, + -0.9386275646669002, + -0.9096845049687126, + -0.8767764651174672, + -0.8401231135233086, + -0.7999585104814851, + -0.756530068276218, + -0.7100973776393902, + -0.6609305288513752, + -0.6093087625938352, + -0.5555193855885528, + -0.49985610817694237, + -0.4426171926931105, + -0.38410456373217317, + -0.32462226915603665, + -0.2644743254742749, + -0.20396373183162322, + -0.14339114742084105, + -0.08305310565882291, + -0.023240310499208414, + 0.0357631817328318, + 0.09368128272785556, + 0.15024783241448536, + 0.20520736534219833, + 0.25831602123595593, + 0.30934289465381004, + 0.35807125422586167, + 0.40429898249312, + 0.44783926184497563, + 0.4885217863986981, + 0.5261930964304168, + 0.5607167808253165, + 0.5919740814338312, + 0.6198643665376149, + 0.6443050331943275, + 0.6652314797277825, + 0.6825973799616644, + 0.6963745822332202, + 0.7065526471455559, + 0.7131386943831699, + 0.7161572346526757, + 0.715649595462762, + 0.7116733546902295, + 0.7043019071140632, + 0.6936239418472735, + 0.6797426050076387, + 0.6627747457849174, + 0.6428504034347301, + 0.6201118319296892, + 0.5947124950281795, + 0.566816467865464, + 0.5365974474303452, + 0.5042375293325781, + 0.46992647232306434, + 0.43386076774228405, + 0.39624239367485936, + 0.3572776842827746, + 0.3171766139902778, + 0.27615170727042554, + 0.23441646693256285, + 0.19218480374967947, + 0.1496700283535345, + 0.10708359064737763, + 0.06463384895338777, + 0.02252554179418906, + -0.019041152932752093, + -0.059872028894898656, + -0.09977951485145838, + -0.13858327075854832, + -0.1761110057956726, + -0.21219967045127155, + -0.24669575210756853, + -0.2794557484379109, + -0.3103469459099775, + -0.33924806517706446, + -0.3660494043740006, + -0.39065307014810685, + -0.41297360345871587, + -0.43293814668245645, + -0.45048636803903375, + -0.4655705876000743, + -0.478155994748099, + -0.48822054096900097, + -0.4957546431491484, + -0.5007611423790158, + -0.5032552110419188, + -0.5032639352843106, + -0.5008259440608611, + -0.4959911091989076, + -0.4888202259741156, + -0.47938439780186887, + -0.4677644839056364, + -0.4540507722147079, + -0.4383422999593998, + -0.42074613508522685, + -0.4013768490203858, + -0.38035593376253973, + -0.35781101079807526, + -0.3338749827576959, + -0.3086856222379303, + -0.28238476196284806, + -0.2551172870274728, + -0.22703060105941494, + -0.19827396613185164, + -0.1689976966789702, + -0.13935207600219182, + -0.10948704459062839, + -0.07955144905096181, + -0.04969215904459068, + -0.020053211739962384, + 0.00922448743395464, + 0.03800380722482937, + 0.0661522932990082, + 0.09354275528194246, + 0.12005355746328224, + 0.14556906662046887, + 0.16998048666573884, + 0.19318618673500795, + 0.21509191031045524, + 0.23561106781575208, + 0.2546653620202691, + 0.2721849209383276, + 0.28810834454056955, + 0.30238289384872824, + 0.3149648106111573, + 0.3258193067817752, + 0.3349204384644028, + 0.34225122297642196 + ] + }, + "phi": { + "_class": "Var", + "unit": "rad", + "start": { + "_class": "Number", + "unit": "rad", + "type": "Float64", + "value": 1.57 + }, + "fixed": true, + "state": true, + "der": "der(phi)", + "values": [ + 1.57, + 1.5675602257634573, + 1.5602914408012802, + 1.5482687979523564, + 1.5315670326103448, + 1.510261304073635, + 1.4844282520398298, + 1.4541474846630396, + 1.4195029997842337, + 1.3805852026082057, + 1.3374927203736346, + 1.2903344920464868, + 1.2392322150863333, + 1.1843220489806343, + 1.125757156295987, + 1.0637095885872014, + 0.9983717377579577, + 0.9299582866500101, + 0.858706761630466, + 0.7848782179078004, + 0.7087573661353752, + 0.6306513144472103, + 0.5508887922280359, + 0.46981766817247306, + 0.38780196314504245, + 0.30521922034769405, + 0.22245567955082804, + 0.13990245438085558, + 0.05795123966576983, + -0.023011160647743282, + -0.10260646887933025, + -0.1804696722184538, + -0.2562530068378565, + -0.3296288814468003, + -0.4002931183502257, + -0.46796671353680885, + -0.5323973969755128, + -0.5933604248311835, + -0.6506587036403124, + -0.7041225016743621, + -0.7536083611012726, + -0.7989983131008287, + -0.8401984440774093, + -0.8771364866281035, + -0.9097607281610759, + -0.9380389043747592, + -0.9619552787799212, + -0.981509492404371, + -0.9967155593551472, + -1.0076002307037653, + -1.0142018393795247, + -1.0165696940728672, + -1.0147634212449381, + -1.0088523357829629, + -0.9989153528956886, + -0.9850409030620287, + -0.9673270018504909, + -0.945881563667112, + -0.9208226067548416, + -0.8922787841760658, + -0.8603899315556841, + -0.8253072369139751, + -0.787193771310792, + -0.746225124444941, + -0.7025892232587198, + -0.6564863075480295, + -0.6081291679873421, + -0.5577427598112341, + -0.505563031119798, + -0.45183651002419895, + -0.3968194311717033, + -0.34077553115586195, + -0.28397484164468967, + -0.22669215440651344, + -0.1692045269420413, + -0.11178901497124455, + -0.05472110236966242, + 0.001727966027285975, + 0.05729356599983544, + 0.1117191768694124, + 0.1647587120987854, + 0.21617826650826202, + 0.265757310820515, + 0.31329019833180166, + 0.35858711932638476, + 0.40147466603383924, + 0.44179640192586217, + 0.47941315107196303, + 0.5142029074664244, + 0.5460606111541055, + 0.5748979663993056, + 0.6006429971864062, + 0.6232393265684922, + 0.6426456742499372, + 0.6588354331402515, + 0.6717957445841333, + 0.6815269659448165, + 0.6880422995868877, + 0.6913670273351225, + 0.6915380813227205, + 0.6886037535523216, + 0.6826232035074665, + 0.6736661746878613, + 0.6618127804202942, + 0.6471532451854104, + 0.6297876695154444, + 0.6098258783388368, + 0.5873872476278121, + 0.5626003662713992, + 0.53560284485862, + 0.5065411015227096, + 0.47556975422896364, + 0.4428512448517005, + 0.40855543252916504, + 0.37285876814938834, + 0.3359434373677376, + 0.2979967961111848, + 0.2592103417590237, + 0.21977834382371408, + 0.17989716248366625, + 0.1397640158129507, + 0.09957539092790518, + 0.05952624141113381, + 0.019808687101262382, + -0.019389487916882997, + -0.05788566280289668, + -0.09550354676608681, + -0.1320743927535025, + -0.1674376787901043, + -0.20144198054315143, + -0.23394582322465893, + -0.264818067176116, + -0.2939384196130116, + -0.3211979099545372, + -0.3464989967802178, + -0.3697556900111737, + -0.39089372895746294, + -0.40985049138990765, + -0.4265748061012071, + -0.44102690837869774, + -0.45317826064135164, + -0.46301118505564853, + -0.47051868584492335, + -0.4757042315709598, + -0.4785813409446635, + -0.4791733445467915, + -0.47751314195438166, + -0.473642813355208, + -0.46761335600989185, + -0.45948441548894453, + -0.4493239144285368, + -0.4372077651055631, + -0.4232195742814393, + -0.4074502122130235, + -0.38999748466010753, + -0.37096578830497123, + -0.3504655662862852, + -0.32861287401286904, + -0.3055289768142345, + -0.28133968107968044, + -0.25617471137151215, + -0.23016726310490987, + -0.20345324494234418, + -0.1761704375844178, + -0.1484580201437042, + -0.1204557611122771, + -0.09230305118488225, + -0.06413841031340685, + -0.03609867951947114, + -0.00831807090777564, + 0.019072319654010694, + 0.04594525029633451, + 0.07217814979504465, + 0.09765354202977786, + 0.12225965039901575, + 0.14589102464821518, + 0.168448836795628, + 0.18984130677210645, + 0.20998413929028853, + 0.22880066436970858, + 0.24622205596187222, + 0.2621875952916104, + 0.27664468735651576, + 0.2895488806771278, + 0.3008639778387222, + 0.31056196847097733, + 0.3186228983309822, + 0.32503484881119665, + 0.3297938142386979, + 0.3329034794596466, + 0.33437509855076986, + 0.3342273222402271, + 0.33248592516044645, + 0.32918361428518456, + 0.3243598019204781, + 0.31806029242617523, + 0.3103370457362945, + 0.30124789346890596, + 0.290856158022306, + 0.27923039709387587, + 0.26644405208703337, + 0.25257499163167074, + 0.23770521475283074, + 0.22192045980026573, + 0.20530965058553152, + 0.187964554393738, + 0.169979359594893, + 0.1514500679131394, + 0.13247406114918372, + 0.11314969477228687, + 0.09357567253148763, + 0.0738505301220772, + 0.05407226599535291, + 0.03433774165316863, + 0.014742135446559888, + -0.004621383234001747, + -0.02366219294606855, + -0.042292723630205996, + -0.06042873270133078, + -0.07798975817216343, + -0.0948995258941159, + -0.11108615884776724, + -0.1264825196052779, + -0.14102652290763265, + -0.1546612512059791, + -0.16733516599034945, + -0.17900233032570056, + -0.18962244394478295, + -0.1991609188699197, + -0.20758900871450525, + -0.21488378318678997, + -0.22102808865573823, + -0.22601057862430857, + -0.22982564415856468, + -0.23247328908921625, + -0.23395906948489956, + -0.23429398056354767, + -0.23349427143227153, + -0.23158131207971736, + -0.22858143116599847, + -0.2245256811968332, + -0.2194496573831708, + -0.213393283432552, + -0.2064005177128484, + -0.19851915324894112, + -0.1898005479159653, + -0.18029927904940962, + -0.1700729127473847, + -0.15918171067270473, + -0.14768822542426865, + -0.13565704081296048, + -0.12315447007228873, + -0.1102481273296402, + -0.09700660483026488, + -0.08349919908744413, + -0.06979548879244636, + -0.05596494709879069, + -0.04207670672978786, + -0.02819917398701323, + -0.01439961068792067, + -0.0007439301996533197, + 0.012703633574394758, + 0.025880923500575786, + 0.03872803882387234, + 0.05118760011551671, + 0.06320508960377365, + 0.07472900247995932, + 0.08571102777623602, + 0.09610633210635912, + 0.10587366376305475, + 0.11497545649858018, + 0.12337802303805306, + 0.13105163618135562, + 0.1379705504480409, + 0.14411310187913365, + 0.14946175967064712, + 0.15400308511441294, + 0.15772774151663657, + 0.16063050227289216, + 0.16271016862276216, + 0.16396950296614582, + 0.16441518493684043, + 0.16405769597075295, + 0.16291119293029563, + 0.16099341588306149, + 0.1583255374750421, + 0.15493198931561025, + 0.15084033352638546, + 0.14608107857694774, + 0.14068745535444807, + 0.1346952749298674, + 0.1281427095297057, + 0.12107002862621909, + 0.11351943816082657, + 0.1055348518179827, + 0.09716158993455705, + 0.08844619538925808, + 0.079436213531187, + 0.07017988663813583, + 0.0607259144419873, + 0.05112327126061592, + 0.04142092348515996, + 0.031667533641646914, + 0.02191131430453289, + 0.012199785643057952, + 0.0025794641171631065, + -0.006904269235265209, + -0.016207367827266877, + -0.025287391702222828, + -0.034103650055957425, + -0.042617339220178276, + -0.05079176357395244, + -0.0585924788661484, + -0.0659873735781122, + -0.07294682095772942, + -0.07944381679090325, + -0.08545401563793159, + -0.09095580535779269, + -0.09593041775614217, + -0.10036194046042211, + -0.10423732244392041, + -0.1075464307671942, + -0.11028204959632294, + -0.11243983267752057, + -0.11401829871535295, + -0.11501881037526887, + -0.11544549149859877, + -0.11530516719753937, + -0.11460731376176923, + -0.11336395013174053, + -0.1115895342599866, + -0.10930088202630195, + -0.10651703892177651, + -0.10325913360545516, + -0.0995502831970714, + -0.09541544030326746, + -0.09088121412065646, + -0.08597576096402562, + -0.08072862350426224, + -0.07517052413925428, + -0.06933323415351253, + -0.06324942184189365, + -0.056952443136699164, + -0.05047616110402551, + -0.04385482452218112, + -0.03712288012889124, + -0.03031473909851542, + -0.023464684124333324, + -0.016606700646404595, + -0.009774256715801562, + -0.0030001781677686822, + 0.0036834710256961663, + 0.010245568391576773, + 0.01665609646583049, + 0.022886219598934204, + 0.02890841073497435, + 0.034696623035792566, + 0.04022634720868412, + 0.04547468889147553, + 0.05042050441706277, + 0.05504446534452275, + 0.05932908994558704, + 0.06325881849167622, + 0.06682008340118979, + 0.07000131231894599, + 0.07279294419391649, + 0.07518747556416983, + 0.0771794552280176, + 0.0787654543489416, + 0.0799440697307097, + 0.08071591054618886, + 0.08108353956185413, + 0.08105143348815208, + 0.08062595049149887, + 0.07981525571767997, + 0.07862924579392506, + 0.07707949279127743, + 0.07517915899617438, + 0.07294289067523758, + 0.07038674395073985, + 0.06752809029381006, + 0.06438549030073558, + 0.060978593219785944, + 0.05732804634121186, + 0.053455362818784755, + 0.04938278089125642, + 0.04513318982944231, + 0.04073000194882769, + 0.03619698407059452, + 0.031558179838328156, + 0.026837796414430584, + 0.022060058720309056, + 0.017249072964774834, + 0.01242875689510533, + 0.007622723747420929, + 0.0028541168776890125, + -0.0018544539857531918, + -0.006481000923764838, + -0.011004281100581352, + -0.015403907503297837, + -0.01966039649953206, + -0.023755244433236504, + -0.027671051010409526, + -0.03139155795108831, + -0.034901691142409055, + -0.0381876384850278, + -0.04123691230147615, + -0.04403836176989338, + -0.04658220009081204, + -0.04886006167191697, + -0.05086501015295966, + -0.052591528878636835, + -0.0540355411331434, + -0.0551944186507885, + -0.056066954349030654, + -0.05665334337971844, + -0.056955173918760815, + -0.056975397064820625, + -0.05671827855680884, + -0.056189361877904236, + -0.05539543539894072, + -0.05434446588895932, + -0.053045536252814995, + -0.05150880420399719, + -0.049745428109235816, + -0.0477674818254177, + -0.04558790192865591, + -0.04322041352103689, + -0.040679436197730665, + -0.03798000050607217, + -0.03513768912364493, + -0.032168548058226915, + -0.029088965626679925, + -0.02591562704677425, + -0.022665427781222776, + -0.019355370929823097, + -0.016002468369785094, + -0.012623694717572543, + -0.009235902933841068, + -0.005855705439971159, + -0.0024994181333562763, + 0.0008169976151919378, + 0.004078011295538793, + 0.007268630906350382, + 0.010374431317982822, + 0.013381608773898173, + 0.016277058585373153, + 0.019048440173621263, + 0.02168419956017386, + 0.02417360572256897, + 0.026506823181834446, + 0.028674935211356528, + 0.03066995526115271, + 0.032484856940091254, + 0.034113612899972376, + 0.035551195954872224, + 0.036793574265511, + 0.037837730720093554, + 0.038681668280793134, + 0.039324389586226645, + 0.03976588501250376, + 0.04000712739254252, + 0.0400500538850205, + 0.03989752945488359, + 0.03955332054220136, + 0.03902207606428105, + 0.0383092806807201, + 0.037421210051854094, + 0.036364897616777206, + 0.03514809124064771, + 0.03377919657766291, + 0.03226721905336509, + 0.03062173218825801, + 0.028852813943186294, + 0.02697097273131057, + 0.024987107348872085, + 0.02291245222129898, + 0.020758512735557143, + 0.018536981313991396, + 0.016259711738674503, + 0.01393865338788188, + 0.011585778785679218, + 0.009213013625350803, + 0.00683220980792564, + 0.0044550853334199446, + 0.0020931467205967578, + -0.00024236206251935052, + -0.0025404890863801113, + -0.004790620416990901, + -0.006982557329096173, + -0.009106547498943372, + -0.011153311622932876, + -0.013114077775327216, + -0.014980646198688389, + -0.016745404744203257, + -0.01840134535910096, + -0.019942091624603163, + -0.021361940004637047, + -0.02265586360356409, + -0.023819517679132617, + -0.024849261984039743 + ] + }, + "der(phi)": { + "_class": "Var", + "unit": "rad*s^-1", + "values": [ + 0.0, + -0.24334354268427189, + -0.4829091222923825, + -0.7187330700262486, + -0.9508179820797097, + -1.1791177490675304, + -1.4035244043579782, + -1.623854831640678, + -1.8398408412377623, + -2.0511191385237644, + -2.2572241029699196, + -2.457583088386393, + -2.6515141273232508, + -2.8382269526285064, + -3.0168276567340473, + -3.1863297569945397, + -3.345664608214144, + -3.493702020824554, + -3.6292754961613354, + -3.751203299188763, + -3.858325036528251, + -3.949535994915892, + -4.023814939329319, + -4.080265883637331, + -4.118149357684467, + -4.136906380563856, + -4.1361865482865525, + -4.115862715600211, + -4.076037774887587, + -4.017044658414996, + -3.9394395010298218, + -3.843982734894812, + -3.7316159146058956, + -3.6034365689507304, + -3.460660732942429, + -3.3045948285467475, + -3.1366008890157038, + -2.9580605926321635, + -2.7703534249597994, + -2.57482821710403, + -2.3727798354808285, + -2.16543932870218, + -1.9539591639019553, + -1.739407279157327, + -1.5227645652682498, + -1.3049260596046575, + -1.0867042106066447, + -0.8688374817273598, + -0.6519955404042485, + -0.436789074253642, + -0.22378245323596432, + -0.013502647836341126, + 0.19355201598154437, + 0.3968990331430209, + 0.5960622785801125, + 0.790565763531305, + 0.9799243737394835, + 1.1636374027860052, + 1.3411858765338365, + 1.512027900845946, + 1.6755990983091282, + 1.8313132394239033, + 1.9785648381324203, + 2.116732870433136, + 2.2451936283457785, + 2.3633236245087073, + 2.4705109128363674, + 2.5661684953926995, + 2.649750285734049, + 2.7207577861103664, + 2.778755658028044, + 2.823387516513761, + 2.854384386629065, + 2.871573153918681, + 2.8748857300328976, + 2.8643644022449495, + 2.8401623504228675, + 2.8025428335514526, + 2.7518757470652697, + 2.6886320740842433, + 2.613373297601232, + 2.526741380012639, + 2.429448222711208, + 2.3222599836416227, + 2.2059854744648906, + 2.081464182303667, + 1.9495511981541238, + 1.8111074148292543, + 1.6669905298968555, + 1.5180447165319775, + 1.3650939707625533, + 1.2089383759377577, + 1.050349318424375, + 0.8900673467217383, + 0.728801762090723, + 0.5672309040447774, + 0.40600373402287027, + 0.2457410500604563, + 0.08703867523017168, + -0.06952952358565559, + -0.22340967159303413, + -0.3740643849768578, + -0.5209703282544974, + -0.6636166706761738, + -0.8015030119343693, + -0.934138953236297, + -1.0610440831876153, + -1.181748038028198, + -1.2957931830186382, + -1.4027361743088278, + -1.5021504096944183, + -1.5936315875888956, + -1.6768008548142086, + -1.7513088639386405, + -1.8168419535158982, + -1.8731275030727317, + -1.9199372242366144, + -1.9570924790134356, + -1.9844694149281223, + -2.002000840504578, + -2.0096790141589236, + -2.0075577249147742, + -1.995752520907482, + -1.9744397906530329, + -1.943855014650096, + -1.9042907805619056, + -1.8560924464010236, + -1.799653444243807, + -1.7354112658805845, + -1.6638410829050325, + -1.5854496366864481, + -1.5007706048625327, + -1.4103576635989117, + -1.3147786964269228, + -1.2146117723432805, + -1.110439398436539, + -1.002843893600038, + -0.8924048182925605, + -0.7796952572326823, + -0.6652788713599821, + -0.5497086299215316, + -0.43352515975973355, + -0.3172553473595381, + -0.20141191173500844, + -0.08649316221809693, + 0.027017550595880162, + 0.13865182610777085, + 0.24795605295658932, + 0.35449186521729115, + 0.45783611036269506, + 0.5575812075923078, + 0.6533359840270225, + 0.7447260205217919, + 0.8313950292119183, + 0.9130062031818875, + 0.9892431756365555, + 1.0598122700688668, + 1.124444390264061, + 1.182896370340596, + 1.234953469848088, + 1.280431661150534, + 1.3191788070968418, + 1.351076657843216, + 1.3760428676531409, + 1.3940316099197503, + 1.4050344690475536, + 1.409081274249036, + 1.406239973250078, + 1.3966160437104633, + 1.3803517225098716, + 1.357625003442722, + 1.3286475921934948, + 1.2936627617345355, + 1.252943495910814, + 1.2067894000534785, + 1.1555237690983553, + 1.0994912468300793, + 1.0390542668134986, + 0.9745899295080134, + 0.906487734341766, + 0.8351461923539001, + 0.7609699126042081, + 0.6843677853151791, + 0.6057502714209279, + 0.5255269441127758, + 0.4441052241324484, + 0.361888478835755, + 0.2792741503167584, + 0.19665289537479924, + 0.11440736189494966, + 0.032910787092237014, + -0.047473596396209086, + -0.12639346950085675, + -0.20350853633087712, + -0.2784910124390274, + -0.35102659552730286, + -0.4208154055394709, + -0.4875725164209327, + -0.5510292074984604, + -0.6109338008992877, + -0.6670523235033795, + -0.719169926655224, + -0.7670917110992514, + -0.8106433997530351, + -0.8496727181732776, + -0.8840501641324522, + -0.9136694924945633, + -0.9384486886477874, + -0.9583305999061232, + -0.9732830260923288, + -0.9832990307805113, + -0.9883971640199768, + -0.9886211034381801, + -0.9840391909818643, + -0.9747440162090099, + -0.960851642527593, + -0.9425004094061497, + -0.9198498796963532, + -0.8930797002583766, + -0.8623878432759783, + -0.8279891357575853, + -0.7901138593553868, + -0.7490056815807883, + -0.704919985444263, + -0.658122444871864, + -0.6088869356958448, + -0.557493773825967, + -0.5042284791929955, + -0.4493799086996017, + -0.3932385225125707, + -0.3360954058951385, + -0.2782407286722714, + -0.21996217691118994, + -0.16154416602052643, + -0.10326662643801864, + -0.04540365219654241, + 0.011777145849757632, + 0.06801565053017149, + 0.12306036022609296, + 0.1766689439239296, + 0.22860919694934295, + 0.27865992132985, + 0.32661142674445887, + 0.37226651434285, + 0.4154411512151985, + 0.45596491792136956, + 0.49368193015343426, + 0.5284513966393805, + 0.5601479458521224, + 0.5886623854849664, + 0.6139021565705348, + 0.6357914667604881, + 0.6542717238389159, + 0.6693018641566256, + 0.6808582569357754, + 0.6889347146707504, + 0.6935425566534125, + 0.6947103162421288, + 0.6924833206779878, + 0.6869233524704866, + 0.6781082014622162, + 0.6661308744742874, + 0.6510988430564454, + 0.6331334475348627, + 0.6123688419800469, + 0.5889509263911189, + 0.5630366141997933, + 0.5347926729182669, + 0.5043943880529789, + 0.4720248470583212, + 0.4378737081152657, + 0.40213582101761086, + 0.36501044599845356, + 0.32670016070718844, + 0.2874095192503512, + 0.24734420901493173, + 0.20671016784728688, + 0.1657123658180781, + 0.12455393055882759, + 0.08343545683152716, + 0.04255393564699579, + 0.0021019286604679437, + -0.037732998423738694, + -0.07676921451551731, + -0.11483172403301706, + -0.151752665066734, + -0.18737214344987976, + -0.22153877677263561, + -0.254110111934957, + -0.2849533881632234, + -0.31394592350641654, + -0.3409754280849455, + -0.3659406303247259, + -0.38875157253023807, + -0.4093297631755781, + -0.42760860631635866, + -0.4435336285780803, + -0.4570624529547619, + -0.46816494823419147, + -0.4768233633908305, + -0.48303216236934393, + -0.4867978702913459, + -0.48813900277622674, + -0.487085833079364, + -0.483679974830403, + -0.4779740240748693, + -0.47003128162180624, + -0.45992513426198384, + -0.4477384570224144, + -0.43356321618567484, + -0.4174997801934042, + -0.3996561280948794, + -0.3801473100925318, + -0.35909477663670714, + -0.3366254924392133, + -0.31287121643457316, + -0.2879679261827333, + -0.26205494572498045, + -0.2352740525718308, + -0.20776900374796256, + -0.17968474009261598, + -0.15116643985779998, + -0.12235907395963663, + -0.09340671292173902, + -0.06445165735953945, + -0.035633955275062204, + -0.007090849206446558, + 0.02104400164970133, + 0.04864099199058598, + 0.0755750210790152, + 0.10172616575444945, + 0.12698008683958995, + 0.151228383730053, + 0.1743691939649201, + 0.1963074913843253, + 0.21695534363646918, + 0.23623239677799301, + 0.25406610842797434, + 0.27039187367241624, + 0.2851533560673762, + 0.29830268045445857, + 0.30980042783008355, + 0.3196157553389233, + 0.3277265372609374, + 0.3341192783538348, + 0.3387890112283337, + 0.3417392894791708, + 0.34298209423931275, + 0.34253754238525597, + 0.3404336848262623, + 0.33670635453450065, + 0.3313988085414357, + 0.32456134650524754, + 0.3162509959715676, + 0.3065311860628226, + 0.2954712508394457, + 0.283145916551724, + 0.26963501760054165, + 0.2550229428642503, + 0.23939801294050894, + 0.22285213113097455, + 0.20548027949660833, + 0.18737989152281073, + 0.168650324306391, + 0.149392486317964, + 0.12970825619844006, + 0.10969982407768714, + 0.08946939871137237, + 0.06911868970474035, + 0.0487482656308076, + 0.028457229761158918, + 0.008342809844214736, + -0.011500212377604114, + -0.03097985809835686, + -0.0500072603622096, + -0.06849715287922159, + -0.08636820631942635, + -0.103543255489687, + -0.11994970677247485, + -0.1355198289709383, + -0.1501908980395065, + -0.16390548830684237, + -0.17661173594155646, + -0.18826340510860556, + -0.1988200262087044, + -0.20824712159893666, + -0.21651622452966493, + -0.22360486193503504, + -0.22949666688705433, + -0.23418139882895045, + -0.23765481734936483, + -0.23991862319370574, + -0.24098042637523118, + -0.24085361837227912, + -0.23955715514180936, + -0.2371153831818506, + -0.2335579345610813, + -0.228919428818835, + -0.22323919494399533, + -0.21656103472114022, + -0.20893299366684412, + -0.2004070059721382, + -0.19103849395797998, + -0.18088618965876754, + -0.170011747041929, + -0.15847932203689455, + -0.14635523898139716, + -0.13370771919486735, + -0.12060647482653573, + -0.1071222223701954, + -0.0933264881679655, + -0.07929122514081388, + -0.06508835464216411, + -0.05078946708842774, + -0.036465555530396564, + -0.02218661941675742, + -0.00802127569523896, + 0.005963427461108474, + 0.019702325630534596, + 0.03313253500711806, + 0.04619361347829394, + 0.058827794479040636, + 0.07098033137691447, + 0.0825996543224088, + 0.09363751604780389, + 0.10404926505296208, + 0.11379400120322888, + 0.12283464249704532, + 0.1311380799449915, + 0.1386753437709603, + 0.14542161965303718, + 0.15135626677496788, + 0.15646293891160806, + 0.1607296022080224, + 0.1641484589718968, + 0.16671593753730693, + 0.16843269691313204, + 0.16930355627082197, + 0.1693373472225907, + 0.1685468243108555, + 0.16694860518457355, + 0.16456299342948225, + 0.16141379953554513, + 0.15752815207448456, + 0.1529364097087378, + 0.14767189511623965, + 0.14177066052480586, + 0.13527128686485607, + 0.12821471343323848, + 0.1206439673384799, + 0.11260383444653431, + 0.10414072224123128, + 0.09530240025097932, + 0.08613770977073387, + 0.07669625259787866, + 0.06702825728295358, + 0.057184295518197675, + 0.04721494479323122, + 0.03717060304207139, + 0.02710128889563522, + 0.017056365672874173, + 0.007084248329098743, + -0.0027677167063872633, + -0.012453465768924758, + -0.021928514956939964, + -0.03115008713353021, + -0.04007725772591784, + -0.048671184257720684, + -0.056895273346231595, + -0.06471526116130662, + -0.07209935236100641, + -0.07901841036999777, + -0.08544600042695646, + -0.09135843986176864, + -0.09673493762632462, + -0.1015576570717266, + -0.10581170745162057, + -0.10948516408197678, + -0.11256913864719906, + -0.11505777308773335, + -0.11694816450674257, + -0.11824035196589387, + -0.1189373051406328, + -0.1190448747643783, + -0.11857166132529236, + -0.11752894235886306, + -0.11593061186482452, + -0.11379307974649293, + -0.11113511482476822, + -0.10797769368956735, + -0.1043439250691746, + -0.1002588954617163, + -0.09574950197821297, + -0.09084423542177801, + -0.08557310933614111, + -0.07996746393688654, + -0.07405978031393581, + -0.06788344784040566, + -0.06147269820692716, + -0.05486236458287652, + -0.048087688148172325 + ] + }, + "r": { + "_class": "Var", + "unit": "m", + "values": { + "_class": "Array", + "eltype": "Float64", + "size": [ + 501, + 2 + ], + "layout": "column-major", + "values": [ + 0.0006370613685866107, + 0.0025888763065428314, + 0.008403754230173338, + 0.018020498781296898, + 0.03137538644263244, + 0.04839844627270311, + 0.06900859079091806, + 0.09310758627654481, + 0.12057344918190012, + 0.15125297248910635, + 0.18495430735024967, + 0.22143957429821093, + 0.2604178778568991, + 0.3015400691857835, + 0.34439458854460225, + 0.3885061165192789, + 0.4333373795681807, + 0.4782939360162599, + 0.5227335947054152, + 0.5659794740566134, + 0.6073370247936479, + 0.646114894768049, + 0.6816477000378868, + 0.7133206791671194, + 0.7405939944371829, + 0.7630248794193568, + 0.7802868842723509, + 0.7921836826568841, + 0.7986570374360324, + 0.7997882039402446, + 0.795792458408806, + 0.7870075992482198, + 0.7738771767369688, + 0.7569300294054206, + 0.7367574470195573, + 0.7139898337040618, + 0.6892741024612632, + 0.6632531052373538, + 0.6365479899062166, + 0.6097439256542155, + 0.5833796096291065, + 0.5579399407165634, + 0.5338520341463807, + 0.5114844400345978, + 0.49114771034388743, + 0.47309647083396195, + 0.4575337143094129, + 0.44461462653049955, + 0.4344505185092234, + 0.42711311121594797, + 0.42263822827026465, + 0.42102868599776183, + 0.422256708666084, + 0.4262657996010125, + 0.43297174954751894, + 0.4422632244847655, + 0.4540019416091976, + 0.4680225174842372, + 0.4841323875813771, + 0.5021116920652909, + 0.5217135294732579, + 0.5426650027260608, + 0.5646687643261384, + 0.5874054008748086, + 0.6105372815597722, + 0.6337133235910061, + 0.6565746572919678, + 0.6787615731127645, + 0.6999215496630256, + 0.7197174125907986, + 0.7378359240195691, + 0.7539966019320228, + 0.7679595033914174, + 0.7795321449835861, + 0.7885752280544582, + 0.7950064899382915, + 0.7988025392332035, + 0.7999988056536607, + 0.7986873380504533, + 0.7950127207051948, + 0.7891663669852901, + 0.7813794687693658, + 0.7719151019422156, + 0.761059770868981, + 0.7491148886680027, + 0.7363885845766771, + 0.7231880362501197, + 0.7098126117128492, + 0.696548033307302, + 0.6836615759277913, + 0.6713982299792635, + 0.6599779046379075, + 0.6495936217724486, + 0.6404103743649, + 0.6325645689623628, + 0.6261642163705232, + 0.6212893336689699, + 0.6179925482967579, + 0.6163001047216237, + 0.6162128457328153, + 0.6177072205714371, + 0.6207364746101568, + 0.6252318082159936, + 0.6311035902850659, + 0.6382427102414535, + 0.6465220667907907, + 0.6557982032428525, + 0.6659131798659611, + 0.6766967754956998, + 0.6879688943390432, + 0.6995422712572289, + 0.7112256054254984, + 0.7228268236222092, + 0.7341565470182384, + 0.7450318100712695, + 0.7552797730087244, + 0.7647412473264525, + 0.773274146070955, + 0.7807566378403044, + 0.7870896788339392, + 0.7921991188871677, + 0.7960371726040676, + 0.7985830691004622, + 0.7998430514982383, + 0.7998496238146057, + 0.7986600742257923, + 0.7963544012230006, + 0.7930326787077903, + 0.7888120244278978, + 0.78382326536087, + 0.7782074068662181, + 0.7721121078414068, + 0.765688197480174, + 0.7590863317499826, + 0.7524539518176727, + 0.7459325312345717, + 0.7396551240963665, + 0.7337443264742877, + 0.7283106225963116, + 0.723451028354086, + 0.719248098388013, + 0.7157693018273044, + 0.7130666100549911, + 0.7111763431662634, + 0.7101193097508183, + 0.7099010815531015, + 0.7105124464491154, + 0.7119300768372461, + 0.7141173010273024, + 0.7170250169483227, + 0.7205927763668237, + 0.7247499661853367, + 0.729417116106141, + 0.7345073676963052, + 0.7399280129259795, + 0.7455821335139852, + 0.7513703755111312, + 0.757192737392987, + 0.7629503767975488, + 0.7685474780504711, + 0.7738930500359444, + 0.7789025993256082, + 0.78349974540042, + 0.7876176653945742, + 0.7912002663468577, + 0.7942031780598421, + 0.7965944776063867, + 0.798355069745683, + 0.7994788107359158, + 0.7999723240381256, + 0.7998545030597033, + 0.7991557621188832, + 0.7979170304138081, + 0.7961885446409586, + 0.7940284749582733, + 0.7915014134211229, + 0.7886768084223336, + 0.7856273547037065, + 0.7824273767384707, + 0.7791512929944173, + 0.7758721465856718, + 0.7726602224113113, + 0.7695818290700557, + 0.7666982212616248, + 0.7640646477510407, + 0.7617295889453699, + 0.7597341664096072, + 0.7581116786462352, + 0.7568873091816585, + 0.756078003933097, + 0.755692458842417, + 0.7557312482495695, + 0.7561870995637467, + 0.7570452578692557, + 0.7582839624586535, + 0.7598750392861882, + 0.76178455766597, + 0.7639735741139186, + 0.766398963241268, + 0.7690142702311542, + 0.771770627312415, + 0.7746177176521031, + 0.7775047146422007, + 0.7803812389876829, + 0.783198322313891, + 0.7859092900957483, + 0.7884706069534717, + 0.7908426744226397, + 0.7929905092664891, + 0.7948843200665099, + 0.7964999924800552, + 0.7978194310011721, + 0.7988307609477682, + 0.7995284141384705, + 0.7999130693513978, + 0.7999914571420061, + 0.7997760506993753, + 0.7992846368500297, + 0.7985397917320232, + 0.7975682719853918, + 0.7964003347357371, + 0.7950690200016404, + 0.7936093953622025, + 0.7920577842514873, + 0.7904510161265329, + 0.7888256878153987, + 0.7872174524023201, + 0.785660375954644, + 0.7841863459974876, + 0.7828245333222692, + 0.7816009457338711, + 0.7805380593799909, + 0.7796545142586142, + 0.7789649035347267, + 0.7784796505793401, + 0.7782049502243631, + 0.778142792488788, + 0.7782910696673515, + 0.7786437393554198, + 0.7791910536272768, + 0.7799198567630952, + 0.780813922078351, + 0.7818543374851312, + 0.7830199400081161, + 0.7842877615755818, + 0.785633507107673, + 0.7870320551423515, + 0.7884579429919003, + 0.7898858569814321, + 0.7912911222074656, + 0.7926501487969617, + 0.7939408546782615, + 0.7951430626902436, + 0.7962388383018304, + 0.7972127734710068, + 0.798052226790517, + 0.7987474968408782, + 0.7992919247771625, + 0.7996819437117736, + 0.799917061917922, + 0.7999997786271535, + 0.79993544794574, + 0.7997320860745618, + 0.7994001305858935, + 0.7989521606608782, + 0.7984025785582046, + 0.7977672698081646, + 0.7970632464233173, + 0.7963082720157436, + 0.7955204935938816, + 0.7947180802404183, + 0.7939188652358626, + 0.7931400139855473, + 0.7923977220369682, + 0.7917069334025096, + 0.7910810946696006, + 0.7905319548843768, + 0.7900693972849675, + 0.7897013093305091, + 0.7894335032821801, + 0.7892696744844768, + 0.7892113951171124, + 0.7892581544145283, + 0.7894074356795829, + 0.789654821623814, + 0.7899941372893291, + 0.7904176223883521, + 0.7909161207699976, + 0.7914792959996229, + 0.7920958660586934, + 0.7927538385917037, + 0.7934407612994923, + 0.7941439776207551, + 0.7948508680225598, + 0.7955490913607206, + 0.7962268199309595, + 0.7968729475131874, + 0.7974772821632494, + 0.7980307218637607, + 0.7985253985591694, + 0.7989547921293014, + 0.7993138209535146, + 0.7995989004465481, + 0.7998079654054389, + 0.7999404668304947, + 0.799997338547423, + 0.799980932502275, + 0.7998949307912291, + 0.7997442327580385, + 0.7995348215096001, + 0.7992736149097611, + 0.7989683005283025, + 0.7986271613907904, + 0.7982588985269127, + 0.7978724482101707, + 0.797476799468861, + 0.7970808215479991, + 0.79669309735441, + 0.7963217640697042, + 0.7959743730822478, + 0.7956577660635136, + 0.7953779636323809, + 0.7951400763968691, + 0.7949482393084041, + 0.7948055620653651, + 0.7947141005681599, + 0.7946748536526748, + 0.7946877769067908, + 0.7947518137332024, + 0.7948649488364505, + 0.7950242767887968, + 0.7952260824221986, + 0.7954659375113526, + 0.7957388087779219, + 0.7960391691392514, + 0.7963611194874141, + 0.7966985152622706, + 0.7970450882677135, + 0.7973945711890325, + 0.7977408210320509, + 0.7980779312061441, + 0.7984003376473726, + 0.7987029183442655, + 0.7989810792291419, + 0.7992308250343398, + 0.7994488200115428, + 0.79963243478751, + 0.7997797735444223, + 0.7998896895326327, + 0.7999617858664987, + 0.7999963995750853, + 0.7999945728226175, + 0.7999580116986339, + 0.7998890323456825, + 0.7997904975256445, + 0.799665744794468, + 0.7995185060469739, + 0.799352823672677, + 0.7991729636051358, + 0.7989833245061257, + 0.79878834871149, + 0.7985924365855045, + 0.7983998624629445, + 0.798214695000886, + 0.7980407267720775, + 0.7978814106588168, + 0.7977398024792037, + 0.7976185151713815, + 0.797519684001066, + 0.7974449395151009, + 0.7973953912727695, + 0.7973716243485052, + 0.7973737042755231, + 0.7974011907067869, + 0.7974531624597394, + 0.7975282505540355, + 0.7976246770977646, + 0.7977403022218275, + 0.7978726773619385, + 0.7980191005428459, + 0.7981766758362254, + 0.798342376212964, + 0.7985131052909704, + 0.7986857580387882, + 0.7988572818207096, + 0.7990247345997301, + 0.7991853363738919, + 0.7993365185067233, + 0.7994759685578711, + 0.799601665574822, + 0.7997119103658655, + 0.7998053494177251, + 0.7998809907435267, + 0.7999382111962201, + 0.7999767577456113, + 0.7999967416089513, + 0.7999986244005601, + 0.7999831987096199, + 0.7999515628077754, + 0.7999050897301695, + 0.7998453925039404, + 0.7997742859594881, + 0.7996937447164489, + 0.7996058604037685, + 0.7995127982413495, + 0.7994167525908772, + 0.7993199032081466, + 0.7992243744417564, + 0.7991321963915927, + 0.7990452677085216, + 0.7989653234062377, + 0.7988939074136018, + 0.7988323482722521, + 0.7987817397851171, + 0.7987429280046117, + 0.7987165028215113, + 0.7987027939887694, + 0.7987018728733037, + 0.7987135596757565, + 0.7987374344828055, + 0.7987728521506456, + 0.7988189623191033, + 0.7988747323298132, + 0.7989389718564257, + 0.799010361058817, + 0.7990874806022372, + 0.7991688412408352, + 0.7992529146494355, + 0.7993381646638106, + 0.7994230771796159, + 0.7995061879317421, + 0.7995861094998685, + 0.7996615566975065, + 0.799731367145341, + 0.7997945201502437, + 0.7998501525246734, + 0.7998975705882927, + 0.7999362577791621, + 0.7999658794813452, + 0.799986284324712, + 0.7999975011648988, + 0.7999997330059736, + 0.7999933479387682, + 0.7999788668949429, + 0.7999569488560622, + 0.799928374087481, + 0.7998940252853227, + 0.7998548671592309, + 0.7998119255654011, + 0.7997662660970051, + 0.7997189717849763, + 0.799671121772239, + 0.7996237710306264, + 0.7995779307460665, + 0.7995345497071298, + 0.7994944982312848, + 0.7994585542438635, + 0.7994273907752318, + 0.7994015660394934, + 0.79938151666191, + 0.7993675531042984, + 0.799359857292733, + 0.7993584830301997, + 0.7993633593151497, + 0.7993742955144217, + 0.7993909883173829, + 0.7994130313970667, + 0.7994399265779714, + 0.7994710959778606, + 0.7995058955435707, + 0.7995436297484053, + 0.7995835667633076, + 0.7996249531149816, + 0.7996670291514184, + 0.7997090442901866, + 0.7997502707802584, + 0.7997900169999383, + 0.7998276398491299, + 0.799862556065277, + 0.7998942510395111, + 0.7999222868349207, + 0.7999463084925612, + 0.7999660483921267, + 0.7999813284362873, + 0.799992060899, + 0.7999982474953623, + 0.7999999765042524, + 0.7999974183674694, + 0.799990819999965, + 0.7999804976364969, + 0.799966828546301, + 0.7999502419717497, + 0.7999312093715285, + 0.7999102337745829, + 0.7998878391889224, + 0.799864560017427, + 0.7998409304644167, + 0.7998174739489009, + 0.7997946935197582, + 0.7997730629610792, + 0.7997530183809025, + -0.7999997463454678, + -0.7999958110637014, + -0.7999558593540264, + -0.7997970127624092, + -0.7993845039313532, + -0.7985346519709638, + -0.7970180765811098, + -0.7945633878915865, + -0.790861582928631, + -0.7855714724410565, + -0.7783263481294909, + -0.768742164145188, + -0.7564274776160034, + -0.740994997739818, + -0.722075042763004, + -0.6993303921803403, + -0.6724720927064428, + -0.6412760020225877, + -0.6055985377841947, + -0.5653912229125946, + -0.520712721483545, + -0.4717367303474186, + -0.41875579164121324, + -0.36217897326123105, + -0.302523611315841, + -0.24040181652199744, + -0.17650036326463148, + -0.11155721819845257, + -0.04633504671304518, + 0.01840730393180138, + 0.08194121758717578, + 0.14359331016991542, + 0.20276615922194346, + 0.25895352977765923, + 0.31175064436376787, + 0.3608580293789323, + 0.40608030200469003, + 0.4473201520086121, + 0.4845685261615278, + 0.5178922138126683, + 0.547419611512952, + 0.5733262793150143, + 0.5958204474821014, + 0.6151289845247857, + 0.6314854920138363, + 0.6451199340312236, + 0.6562491144910084, + 0.66506979624333, + 0.6717534867546777, + 0.6764424515266864, + 0.6792473246208423, + 0.6802461654188123, + 0.6794845634644586, + 0.6769767116308429, + 0.6727075620905124, + 0.666635762818301, + 0.658697378934423, + 0.6488103907365517, + 0.636879762038923, + 0.6228032182730999, + 0.6064775289856634, + 0.5878049802581844, + 0.5667002616854805, + 0.5430975004758404, + 0.5169566982113721, + 0.4882698265336912, + 0.4570664277782115, + 0.42341791042123544, + 0.38744009126226076, + 0.3492947838339506, + 0.30918950374517684, + 0.2673745019162503, + 0.22413879885197835, + 0.17980443525477718, + 0.13471863159511122, + 0.08924506124148995, + 0.04375503759096104, + -0.0013823721338987452, + -0.04580978102851928, + -0.0891895392796934, + -0.131211452317389, + -0.17159873480216462, + -0.21011205437465744, + -0.24655227673833005, + -0.28076125725592216, + -0.3126209406056449, + -0.3420512596449481, + -0.36900685122824506, + -0.3934727910487964, + -0.41545980503525115, + -0.43499932963248594, + -0.45213843608982984, + -0.4669348204541541, + -0.47945234633465783, + -0.4897571501197918, + -0.4979140228363614, + -0.5039836940508765, + -0.5080208758010635, + -0.51007272120759, + -0.5101781343353178, + -0.5083677700778345, + -0.5046644717914609, + -0.49908434757559683, + -0.49163834098786446, + -0.48233416095446136, + -0.4711785406324914, + -0.45817978635405376, + -0.44335046732895655, + -0.42671005851013455, + -0.4082876442190168, + -0.38812447838841296, + -0.36627604096791977, + -0.34281391898846203, + -0.3178272557070225, + -0.2914234067159464, + -0.26372801232309373, + -0.23488470498859973, + -0.20505388320691567, + -0.17441064321968383, + -0.14314271715000562, + -0.11144754835524798, + -0.07952873589163845, + -0.04759287495084261, + -0.015845913352867804, + 0.015510618415583334, + 0.046282673190428225, + 0.07628674624570292, + 0.1053526008295323, + 0.1333251293566284, + 0.16006588855537987, + 0.18545412343368484, + 0.20938694544956693, + 0.23177917128068715, + 0.25256274656084043, + 0.27168557266437154, + 0.28911011543352266, + 0.3048119049479347, + 0.3187777648563244, + 0.331003983379918, + 0.3414946699048396, + 0.35026015040998787, + 0.35731541607052647, + 0.3626789346304571, + 0.36637168138471227, + 0.3684162943180195, + 0.36883662292366903, + 0.3676575355421035, + 0.36490487211671085, + 0.3606057131736563, + 0.35478884575231184, + 0.3474853243634223, + 0.3387292230002503, + 0.3285584738389812, + 0.3170156570263445, + 0.30414887092904286, + 0.2900125552191388, + 0.27466808843449914, + 0.25818434971801646, + 0.24063815687558412, + 0.22211432637779294, + 0.20270556752606295, + 0.18251230304779725, + 0.16164203957348827, + 0.14020846321959507, + 0.11833063226680392, + 0.09613174272656656, + 0.07373763114589475, + 0.051275555690461605, + 0.028872671928414098, + 0.006654379989172426, + -0.015256930723941485, + -0.03674326975361681, + -0.05769239616803965, + -0.07799872680058528, + -0.09756424014688342, + -0.11629923710998605, + -0.13412267465556235, + -0.15096244414176876, + -0.16675551004436212, + -0.181447685642798, + -0.19499336438079562, + -0.20735520418668793, + -0.2185035660239616, + -0.22841593095548465, + -0.23707638865369562, + -0.244475015748272, + -0.2506072552618925, + -0.25547344813147904, + -0.2590783688379803, + -0.2614307785409816, + -0.26254315387894245, + -0.2624314775691888, + -0.2611150521386466, + -0.2586164680326297, + -0.2549616290307297, + -0.2501797846945553, + -0.24430367926345775, + -0.23736970753574438, + -0.22941802270682563, + -0.2204927485901642, + -0.2106421107418966, + -0.1999184621275553, + -0.1883783923626859, + -0.1760827130528406, + -0.16309625355815716, + -0.14948775114101154, + -0.13532960492968246, + -0.12069740805852794, + -0.10566954250527663, + -0.09032672756389569, + -0.07475133429760343, + -0.059026735611635406, + -0.04323673627379501, + -0.02746479537922049, + -0.011793281173021185, + 0.003697093427251795, + 0.01892798794670056, + 0.03382409341750817, + 0.0483135697353971, + 0.06232857709138071, + 0.0758057176788532, + 0.08868626406400953, + 0.10091643866506228, + 0.11244761627808973, + 0.12323632218032016, + 0.13324426532711717, + 0.14243834677923262, + 0.1507904959034471, + 0.15827752446607457, + 0.1648810177939583, + 0.17058710862171958, + 0.17538625333622343, + 0.17927308330076921, + 0.1822462045177731, + 0.1843079858114367, + 0.18546443175524688, + 0.18572505080831472, + 0.18510270358925018, + 0.18361352663300534, + 0.18127686544955032, + 0.17811517910226868, + 0.17415400968287498, + 0.16942194354830972, + 0.16395052165115664, + 0.15777422806898272, + 0.15093042274405094, + 0.14345920736713455, + 0.13540336824828705, + 0.1268082526522176, + 0.11772153547949482, + 0.10819307562018221, + 0.09827471329264631, + 0.08801994010211199, + 0.0774836265268456, + 0.0667217641753066, + 0.05579106841329821, + 0.0447485898150036, + 0.03365143363987488, + 0.022556349468827105, + 0.011519290455554011, + 0.0005951441048273394, + -0.010162633509497414, + -0.020702427462251358, + -0.03097468674993066, + -0.04093219973705894, + -0.05053041214565756, + -0.0597275750623387, + -0.06848489761343235, + -0.07676676311595104, + -0.0845407846672068, + -0.091777845578245, + -0.09845219866818773, + -0.10454146648582033, + -0.11002658819859784, + -0.11489182565524046, + -0.11912473150587333, + -0.12271604747010754, + -0.12565964934603388, + -0.1279524991615234, + -0.12959453651919217, + -0.13058859421545232, + -0.13094034449817682, + -0.13065820177154072, + -0.1297532292229567, + -0.12823908408228266, + -0.12613192715759455, + -0.12345032287501068, + -0.12021518167909823, + -0.11644966296190547, + -0.11217904872447715, + -0.1074306818284197, + -0.10223384130747673, + -0.09661957777120428, + -0.09062062460490634, + -0.08427124797421665, + -0.07760703075515406, + -0.07066474029984794, + -0.06348215838735331, + -0.05609783384057776, + -0.048550879043739975, + -0.04088080397478572, + -0.03312726418968184, + -0.025329792827247, + -0.0175276488443935, + -0.009759586415943067, + -0.0020635690053561707, + 0.0055233715057631284, + 0.012965326625072006, + 0.020227757420346784, + 0.027277631744928504, + 0.03408355188478658, + 0.040615942078403536, + 0.04684716735180985, + 0.05275159639859477, + 0.05830571487520522, + 0.06348822181241241, + 0.06828004042446738, + 0.0726643559651957, + 0.0766266798766228, + 0.0801548338924275, + 0.08323892901052515, + 0.08587138620056753, + 0.08804691310648716, + 0.08976244660473762, + 0.09101713305723937, + 0.09181229960163631, + 0.09215138073897818, + 0.09203986763866362, + 0.0914852696765176, + 0.09049703371507217, + 0.0890864710068297, + 0.08726670519414959, + 0.08505258525867926, + 0.08246058576492094, + 0.07950874917950973, + 0.07621658198025388, + 0.07260492943935436, + 0.06869590430522707, + 0.064512772675333, + 0.06007980075790379, + 0.055422159121791104, + 0.05056580706921933, + 0.045537327856973606, + 0.040363783690775694, + 0.035072614885813584, + 0.029691483326906062, + 0.024248076950525776, + 0.018770024753113998, + 0.013284749880540332, + 0.007819280867327754, + 0.0024001389335751243, + -0.0029467701569370394, + -0.008196311314755228, + -0.01332426107098201, + -0.01830737741136448, + -0.023123507569328926, + -0.027751729467098498, + -0.03217239945229968, + -0.03636721384137612, + -0.04031931498846607, + -0.04401333846427956, + -0.04743543220449195, + -0.050573309355345965, + -0.053416296058810944, + -0.05595532515403981, + -0.05818294015514058, + -0.060093323592900955, + -0.06168228478097041, + -0.06294722893694298, + -0.06388715396507587, + -0.06450263542636855, + -0.06479577674375422, + -0.06477017623822362, + -0.06443090143245303, + -0.0637844313524894, + -0.0628385993496011, + -0.061602552582557826, + -0.06008668913351284, + -0.05830257901064098, + -0.05626291112968897, + -0.05398142412935403, + -0.05147281168382276, + -0.04875264791343861, + -0.045837320013351335, + -0.04274392684379158, + -0.039490169635378096, + -0.03609429490860584, + -0.03257499319341294, + -0.028951264194399914, + -0.02524235349507789, + -0.021467659839349715, + -0.01764661561860342, + -0.013798574098583994, + -0.009942749528759143, + -0.006098119941394201, + -0.002283290402207406, + 0.0014835623382738346, + 0.0051847644425682266, + 0.008803247207588256, + 0.012322638669111251, + 0.015727303971679384, + 0.019002408215567312, + 0.022134015934370727, + 0.025109122006736297, + 0.027915684628668516, + 0.030542686146707927, + 0.0329801809473369, + 0.03521930292017696, + 0.037252284364170545, + 0.03907249867383971, + 0.040674463664146614, + 0.042053830948292445, + 0.04320739929502006, + 0.04413311892288468, + 0.044830067617835825, + 0.04529843397485915, + 0.045539508940405815, + 0.04555566121435365, + 0.04535029867687627, + 0.044927839429755985, + 0.04429368653795864, + 0.043454176317484355, + 0.04241653032685955, + 0.041188824321620944, + 0.03977993112939072, + 0.038199454770574015, + 0.03645769040656225, + 0.034565567034004534, + 0.03253457410034717, + 0.030376696210647904, + 0.028104367255891577, + 0.02573040020800778, + 0.023267890753582494, + 0.02073018098917493, + 0.018130789768828797, + 0.015483329947296141, + 0.012801428316690538, + 0.010098687551854432, + 0.00738861730217472, + 0.004684537580294862, + 0.001999532424806666, + -0.0006535980194423877, + -0.0032623999940324085, + -0.00581485352207661, + -0.008299396176806825, + -0.010704967527231718, + -0.01302107187767408, + -0.015237830609673111, + -0.017346000212307967, + -0.01933700114429648, + -0.021202975432243736, + -0.02293680456229934, + -0.024532117779764728, + -0.025983315104860412, + -0.027285597384285834, + -0.028434966114035055, + -0.029428218537854864, + -0.030262962153512193, + -0.030937618098449783, + -0.03145140409114589, + -0.03180432429791173, + -0.031997164701605664, + -0.032031478387016074, + -0.03190955631780413, + -0.03163440644017098, + -0.031209738815920304, + -0.030639928729559104, + -0.02992998150697304, + -0.029085506630597627, + -0.028112683811282242, + -0.02701821845986457, + -0.02580929603974763, + -0.02449355743585664, + -0.02307904868370103, + -0.021574162335448007, + -0.019987605832200703, + -0.018328358007155487, + -0.01660561752451879, + -0.014828735776248962, + -0.013007196236683878, + -0.011150561635676539, + -0.009268415674972984, + -0.007370306634443662, + -0.005465725323594106, + -0.0035640564769373467, + -0.0016745161537274494, + 0.00019388964811732114, + 0.002032389082900529, + 0.003832481674282974, + 0.00558600047107943, + 0.007285137306403446, + 0.008922464308647626, + 0.010490961509987247, + 0.011984068703576276, + 0.013395697730118157, + 0.014720245518605636, + 0.015952615892580853, + 0.0170882522804218, + 0.01812314039111851, + 0.01905381226562483, + 0.01987736377480366 + ] + } + }, + "L": { + "_class": "Par", + "value": 0.8, + "unit": "m" + }, + "m": { + "_class": "Par", + "value": 1.0, + "unit": "kg" + }, + "d": { + "_class": "Par", + "value": 0.5, + "unit": "m*N*s*rad^-1" + }, + "g": { + "_class": "Par", + "value": 9.81, + "unit": "m*s^-2" + } +} diff --git a/docs/resources/images/BandPassFilterPlot.png b/resources/images/BandPassFilterPlot.png similarity index 100% rename from docs/resources/images/BandPassFilterPlot.png rename to resources/images/BandPassFilterPlot.png diff --git a/docs/resources/images/Filter.png b/resources/images/Filter.png similarity index 100% rename from docs/resources/images/Filter.png rename to resources/images/Filter.png diff --git a/resources/images/PendulumEquations.png b/resources/images/PendulumEquations.png new file mode 100644 index 0000000..22011e5 Binary files /dev/null and b/resources/images/PendulumEquations.png differ diff --git a/docs/resources/images/PendulumFigures.png b/resources/images/PendulumFigures.png similarity index 100% rename from docs/resources/images/PendulumFigures.png rename to resources/images/PendulumFigures.png diff --git a/docs/resources/images/PendulumWithMonteCarlo.png b/resources/images/PendulumWithMonteCarlo.png similarity index 100% rename from docs/resources/images/PendulumWithMonteCarlo.png rename to resources/images/PendulumWithMonteCarlo.png diff --git a/docs/resources/images/PendulumWithUncertainties.png b/resources/images/PendulumWithUncertainties.png similarity index 100% rename from docs/resources/images/PendulumWithUncertainties.png rename to resources/images/PendulumWithUncertainties.png diff --git a/docs/resources/images/PendulumWithUncertaintities.png b/resources/images/PendulumWithUncertaintities.png similarity index 100% rename from docs/resources/images/PendulumWithUncertaintities.png rename to resources/images/PendulumWithUncertaintities.png diff --git a/docs/resources/images/ServoSystem.png b/resources/images/ServoSystem.png similarity index 100% rename from docs/resources/images/ServoSystem.png rename to resources/images/ServoSystem.png diff --git a/resources/images/SimpleModel_GLMakie.png b/resources/images/SimpleModel_GLMakie.png new file mode 100644 index 0000000..3fadee6 Binary files /dev/null and b/resources/images/SimpleModel_GLMakie.png differ diff --git a/resources/images/SimpleModel_PyPlot.png b/resources/images/SimpleModel_PyPlot.png new file mode 100644 index 0000000..931ce1a Binary files /dev/null and b/resources/images/SimpleModel_PyPlot.png differ diff --git a/docs/resources/images/TwoInertiasAndIdealGear.png b/resources/images/TwoInertiasAndIdealGear.png similarity index 100% rename from docs/resources/images/TwoInertiasAndIdealGear.png rename to resources/images/TwoInertiasAndIdealGear.png diff --git a/docs/resources/images/matrix-of-plots.png b/resources/images/matrix-of-plots.png similarity index 100% rename from docs/resources/images/matrix-of-plots.png rename to resources/images/matrix-of-plots.png diff --git a/resources/images/pendulum1.png b/resources/images/pendulum1.png new file mode 100644 index 0000000..45ceed7 Binary files /dev/null and b/resources/images/pendulum1.png differ diff --git a/resources/images/pendulum2.png b/resources/images/pendulum2.png new file mode 100644 index 0000000..4270d20 Binary files /dev/null and b/resources/images/pendulum2.png differ diff --git a/docs/resources/models/DocuModels.mo b/resources/models/DocuModels.mo similarity index 100% rename from docs/resources/models/DocuModels.mo rename to resources/models/DocuModels.mo diff --git a/src/Modia.jl b/src/Modia.jl deleted file mode 100644 index 5485d94..0000000 --- a/src/Modia.jl +++ /dev/null @@ -1,37 +0,0 @@ -#= -Modia main module. - -* Developers: Hilding Elmqvist (Mogram) and Martin Otter (DLR-SR) -* Copyright (c) 2016-2021: Hilding Elmqvist, Martin Otter -* License: MIT (expat) -=# - -module Modia - -const path = dirname(dirname(@__FILE__)) # Absolute path of package directory - -const Version = "0.7.2" -const Date = "2021-04-22" - -#println(" \n\nWelcome to Modia - Dynamic MODeling and Simulation in julIA") -print(" \n\nWelcome to ") -print("Mod") -printstyled("ia", bold=true, color=:red) -print(" - ") -printstyled("Dynamic ", color=:light_black) -print("Mod") -printstyled("eling and Simulation with Jul", color=:light_black) -printstyled("ia", bold=true, color=:red) - -println() -println("Version $Version ($Date)") - -using Reexport - -@reexport using ModiaLang -@reexport using Unitful -@reexport using DifferentialEquations - -include("../models/AllModels.jl") - -end diff --git a/stable/Functions.html b/stable/Functions.html new file mode 100644 index 0000000..ce93795 --- /dev/null +++ b/stable/Functions.html @@ -0,0 +1,137 @@ + +Functions · Modia

Functions

Instantiation

Modia.@instantiateModelMacro
modelInstance = @instantiateModel(model; FloatType = Float64, aliasReduction=true, unitless=false,
+    evaluateParameters=false, saveCodeOnFile="", log=false, logModel=false, logDetails=false, logStateSelection=false,
+    logCode=false,logExecution=logExecution, logCalculations=logCalculations, logTiming=false, logFile=true)

Instantiates a model, i.e. performs structural and symbolic transformations and generates a function for calculation of derivatives suitable for simulation.

  • model: model (declarations and equations)
  • FloatType: Variable type for floating point numbers, for example: Float64, Measurement{Float64}, StaticParticles{Float64,100}, Particles{Float64,2000}
  • aliasReduction: Perform alias elimination and remove singularities
  • unitless: Remove units (useful while debugging models and needed for MonteCarloMeasurements)
  • evaluateParameters: Use evaluated parameters in the generated code.
  • saveCodeOnFile: If non-empty string, save generated code in file with name saveCodeOnFile.
  • log: Log the different phases of translation
  • logModel: Log the variables and equations of the model
  • logDetails: Log internal data during the different phases of translation
  • logStateSelection: Log details during state selection
  • logCode: Log the generated code
  • logExecution: Log the execution of the generated code (useful for timing compilation)
  • logCalculations: Log the calculations of the generated code (useful for finding unit bugs)
  • logTiming: Log timing of different phases
  • logFile: Log file and line number where @instantiatedModel is called
  • return modelInstance prepared for simulation
source

Simulation

Modia.simulate!Function
solution = simulate!(instantiatedModel [, algorithm];
+          merge            = missing,  # change parameter/init/start values
+          tolerance        = 1e-6,     # relative tolerance
+          startTime        = 0.0,
+          stopTime         = 0.0,      # stopTime >= startTime required
+          interval         = missing,  # = (stopTime-startTime)/500
+          interp_points    = 0,
+          dtmax            = missing,  # = 100*interval
+          adaptive         = true,
+          nlinearMinForDAE = 10,
+          log              = false,
+          logStates        = false,
+          logEvents        = false,
+          logProgress      = false,
+          logTiming        = false,
+          logParameters    = false,
+          logEvaluatedParameters   = false,
+          requiredFinalStates      = missing
+          requiredFinalStates_rtol = 1e-3,
+          requiredFinalStates_atol = 0.0,
+          useRecursiveFactorizationUptoSize = 0)

Simulate instantiatedModel::InstantiatedModel with algorithm (= alg of ODE Solvers of DifferentialEquations.jl or DAE Solvers of DifferentialEquations.jl).

If the algorithm argument is missing, algorithm=Sundials.CVODE_BDF() is used, provided instantiatedModel has FloatType = Float64. Otherwise, a default algorithm will be chosen from DifferentialEquations (for details see https://arxiv.org/pdf/1807.06430, Figure 3). The symbols CVODE_BDF and IDA are exported from Modia, so that simulate!(instantiatedModel, CVODE_BDF(), ...) and simulate!(instantiatedModel, IDA(), ...) can be used (instead of import Sundials; simulate!(instantiatedModel, Sundials.xxx(), ...)).

The simulation results are stored in instantiatedModel and can be plotted with plot(instantiatedModel, ...). The result values can be retrieved with getValues(..) for Var(..) and getValue(..) for Par(..). showInfo(instantiatedModel) prints information about the signals in the result. For more details, see sections Parameters/Init/Start, Results and Plotting.

The return argument solution is the return argument from DifferentialEquations.solve(..) and therefore all post-processing functionality from DifferentialEqautions.jl can be used. Especially,

  • solution.t[i] # time-instant at storage point i (solution.t[end] = stopTime)
  • solution.u[i] # states at storage point i

A simulation run can be aborted with <CTRL> C (SIGINT), provided using PyPlot or import PyPlot was not called before (the signals in Python module matplotlib.pyplot intervene with Julias signals, see PyPlot.jl issue 305).

Optional ArgumentsS

  • merge: Define parameters and init/start values that shall be merged with the previous values stored in model, before simulation is started. If, say, an init value phi = Var(init=1.0) is defined in the model, a different init value can be provided with merge = Map(phi=2.0).
  • tolerance: Relative tolerance.
  • startTime: Start time. If value is without unit, it is assumed to have unit [s].
  • stopTime: Stop time. If value is without unit, it is assumed to have unit [s].
  • interval: Interval to store result. If interval=missing, it is internally selected as (stopTime-startTime)/500. If value is without unit, it is assumed to have unit [s].
  • interp_points: If crossing functions defined, number of additional interpolation points in one step.
  • dtmax: Maximum step size. If dtmax==missing, it is internally set to 100*interval.
  • adaptive: = true, if the algorithm should use step-size control (if available). = false, if the algorithm should use a fixed step-size of interval (if available).
  • nlinearMinForDAE: If algorithm is a DAE integrator (e.g. IDA()) and the size of a linear equation system is >= nlinearMinForDAE and the iteration variables of this equation system are a subset of the DAE state derivatives, then during continuous integration (but not at events, including initialization) this equation system is not locally solved but is solved via the DAE integrator. Typically, for large linear equation systems, simulation efficiency is considerably improved in such a case.f
  • log: = true, to log the simulation.
  • logStates: = true, to log the states, its init/start values and its units.
  • logEvents: = true, to log events.
  • logProgress = true, to printout current simulation time every 5s.
  • logTiming: = true, to log the timing with instantiatedModel.timer which is an instance of TimerOutputs.TimerOutput. A user function can include its timing via
    TimerOutputs.@timeit instantiatedModel.timer "My Timing" <statement>.
  • logParameters: = true, to log parameters and init/start values defined in model.
  • logEvaluatedParameters: = true, to log the evaluated parameter and init/start values that are used for initialization and during simulation.
  • requiredFinalStates: is not missing: Test with @test whether the ODE state vector at the final time instant is in agreement to vector requiredFinalStates with respect to tolerances requiredFinalStates_rtol, requiredFinalStates_atol. If this is not the case, print the final state vector (so that it can be included with copy-and-paste in the simulate!(..) call). If you checked that the result of the simulation is correct, use requiredFinalStates = [] to get a printout of the required final states and then copy it in your test.
  • requiredFinalStates_rtol: Relative tolerance used for requiredFinalStates.
  • requiredFinalStates_atol: Absolute tolerance used for requiredFinalStates (see atol in ?isapprox)
  • useRecursiveFactorizationUptoSize: = 0: Linear equation systems A*v=b are solved with RecursiveFactorization.jl instead of the default lu!(..) and ldiv!(..), if length(v) <= useRecursiveFactorizationUptoSize. According to RecursiveFactorization.jl docu, it is faster as lu!(..) with OpenBLAS, for length(v) <= 500 (typically, more as a factor of two). Since there had been some cases where lu!(..)! was successful, but RecursiveFactorization.jl failed due to a singular system, the default is to use lu!(..)!.

Examples

using Modia
+@usingModiaPlot
+
+# Define model
+inputSignal(t) = sin(t)
+
+FirstOrder = Model(
+    T = 0.2,
+    x = Var(init=0.3),
+    equations = :[u = inputSignal(time/u"s"),
+                  T * der(x) + x = u,
+                  y = 2*x]
+)
+
+# Modify parameters and initial values of model
+FirstOrder2 = FirstOrder | Map(T = 0.4, x = Var(init=0.6))
+
+# Instantiate model
+firstOrder = @instantiateModel(FirstOrder2, logCode=true)
+
+
+# Simulate with automatically selected algorithm (Sundials.CVODE_BDF())
+# and modified parameter and initial values
+simulate!(firstOrder, stopTime = 1.0, merge = Map(T = 0.6, x = 0.9), logEvaluatedParameters=true)
+
+# Plot variables "x", "u" in diagram 1, "der(x)" in diagram 2, both diagrams in figure 3
+plot(firstOrder, [("x","u"), "der(x)"], figure=3)
+
+# Retrieve "time" and "u" values:
+usig = getPlotSignal(firstOrder, "x")
+       # usig.xsig      : time vector
+       # usig.xsigLegend: legend for time vector
+       # usig.ysig      : "x" vector
+       # usig.ysigLegend: legend for "x" vector
+       # usig.ysigType  : ModiaResult.Continuous or ModiaResult.Clocked
+
+# Simulate with Runge-Kutta 5/4 with step-size control
+simulate!(firstOrder, Tsit5(), stopTime = 1.0)
+
+# Simulate with Runge-Kutta 4 with fixed step size
+simulate!(firstOrder, RK4(), stopTime = 1.0, adaptive=false)
+
+# Simulate with algorithm that switches between
+# Verners Runge-Kutta 6/5 algorithm if non-stiff region and
+# Rosenbrock 4 (= A-stable method) if stiff region with step-size control
+simulate!(firstOrder, AutoVern6(Rodas4()), stopTime = 1.0)
source

Linearization

Modia.linearize!Function
(A, finalStates) = linearize!(instantiatedModel [, algorithm];
+                              stopTime = 0.0,
+                              analytic = false,
+                              <all other keyword arguments of simulate!>)

Simulate until stopTime and linearize instantiatedModel at finalStates. The names of the state vector can be inquired by get_xNames(instantiatedModel).

By default, linearization is performed numerically with a central finite difference approximation using package FiniteDiff. When setting analytic = true, linearization is preformed analytically with package ForwardDiff, so is computed by symbolically differentiating the model. ForwardDiff might not be compatible with some floating point types, such as Measurements and Julia triggers an error that some overloaded operations are ambiguous. So analytic=true will not work in such cases.

Analytic linearization returns matrix A in full precision whereas numeric linearization returns A in reduced precision (if FloatType = Float64, analytic linearization results in about 15 correct digits and numeric linearization in about 10 correct digits in the result). You can improve this situation, by using a larger FloatType for instantiatedModel, in case this is critical (see example below).

Output arguments

  • A::Matrix: Matrix A of the linear ODE: $\Delta \dot{x} = A*\Delta x$.

  • finalStates::Vector: Linearization point.

Example

using Modia
+using DoubleFloats
+using Measurements
+
+FirstOrder = Model(
+    T = 0.4 ± 0.04,
+    x = Var(init = 0.9 ± 0.09),
+    equations = :[u = inputSignal(time/u"s"),
+                  T * der(x) + x = u]
+)
+
+firstOrder1 = @instantiateModel(FirstOrder, FloatType = Measurement{Float64})
+
+# Standard precision
+(A1, finalStates1) = linearize!(firstOrder1)
+
+# Higher precision
+firstOrder2 = InstantiatedModel{Measurement{Double64}}(firstOrder1)
+(A2, finalStates2) = linearize!(firstOrder2)
+
+# Show results with 15 digits (default print with Measurements shows 3 digits)
+println(IOContext(stdout, :error_digits=>15), "A1 = ", A1)
+println(IOContext(stdout, :error_digits=>15), "A2 = ", A2)
source

Parameters/Init/Start

The following functions are provided to inquire values of parameters and of init/start values before and after evaluation:

FunctionsDescription
hasParameterReturn true, if a parameter/init/start name is known
getParameterReturn value of a parameter/init/start name
getEvaluatedParameterReturn value of an evaluated parameter/init/start name
getLastValueReturn last available value of a variable name
showParametersPrint the parameters and the init/start values
showEvaluatedParametersPrint the evaluated parameters and init/start values
Modia.hasParameterFunction
hasParameter(instantiatedModel, name::AbstractString)

Return true if parameter name (for example name = "a.b.c") is defined in the instantiateModel.

source
Modia.getParameterFunction
getParameter(instantiatedModel, name::AbstractString)

Return the value of parameter or init/start value name (for example name = "a.b.c"). If name is not known, missing is returned.

source
Modia.getEvaluatedParameterFunction
getEvaluatedParameter(instantiatedModel, name::AbstractString)

Return the value of evaluated parameter or init/start value name (for example name = "a.b.c"). If name is not known, missing is returned.

source
Modia.getLastValueFunction
getLastValue(model::InstantiatedModel, name::String; unit=true)

Return the last stored value of variable name from model. If unit=true return the value with its unit, otherwise with stripped unit.

If name is not known or no result values yet available, an info message is printed and the function returns nothing.

name can be a time-varying variable or a parameter.

source

Results and Plotting

The simulation result of a model instantiatedModel are provided as a signal table, see SignalTables.jl.

Therefore, all signal table functions can be used on a simulated model

To activate the defined plot package, use

Alternatively, usingPlotPackage (from Modia reexported macro of SignalTables) can be used, but then package SignalTables must be in your current environment.

Example:

using Modia
+
+FirstOrder = Model(
+    T = 0.2u"s",
+    x = Var(init=0.3),
+    equations = :[u = sin(time/u"s")
+                  T * der(x) + x = u
+                  y = 2*x]
+)
+simulate!(firstOrder, stopTime=10)
+showInfo(firstOrder)    # list info about the result
+t = getValues(firstOrder, "time")
+y = getValues(firstOrder, "y")      # use any plot program: plot(t,y)
+
+# Write result on file
+writeSignalTable("firstOrder.json", firstOrder, indent=2, log=true)

See the generated json-file.

For plotting, a plot package must be installed, e.g.,

julia> ]add SignalTablesInterface_PyPlot        # if plotting with PyPlot desired
+        add SignalTablesInterface_GLMakie       # if plotting with GLMakie desired
+        add SignalTablesInterface_WGLMakie      # if plotting with WGLMakie desired
+        add SignalTablesInterface_CairoMakie    # if plotting with CairoMakie desired

In a model, the desired plot package is defined with:

using Modia
+usePlotPackage("PyPlot")    # or ENV["SignalTablesPlotPackage"] = "PyPlot"

A Modia variable a.b.c is identified by a String key "a.b.c". The legends/labels of the plots are automatically constructed by the names and units of the variables. Example:

using Modia
+@usingModiaPlot   # execute `using SignalTablesInterface_XXX` or
+                  # execute `using Modia.SignalTables.SilentNoPlot`
+
+instantiatedModel = @instantiateModel(...)
+simulate!(instantiatedModel, ...)
+plot(instantiatedModel,
+     [ ("phi", "r")        ("phi", "phi2", "w");
+       ("w", "w2", "phi2") "w"                ],
+     heading="Matrix of plots")

generates the following plot:

Matrix-of-Plots

Modia.@usingModiaPlotMacro
@usingModiaPlot()

Execute using XXX, where XXX is the Plot package that was activated with usePlotPackage(plotPackage). So this is similar to @usingPlotPackage (from SignalTables, that is reexported from Modia).

There is, however, a difference when XXX = "SilentNoPlot":

  • @usingPlotPackage() executes using SignalTables.SilentNoPlot and therefore requires that package SignalTables is available in your environment.
  • @usingModiaPlot() executes using Modia.SignalTables.SilentNoPlot and therefore requires that package Modia is available in your environment.

Therefore, when working with Modia it is better to use @usingModiaPlot().

source

PathPlanning

There are some pre-defined functions to define reference paths

Modia.PTP_pathType
path = PTP_path(names; positions, v_max, a_max, startTime=0.0)

Generate a new path object to move as fast as possible from positions[i,:] to positions[i+1,:]. The positions[i,:] can be a set of translational positions in [m], that is absolute distances, and/or rotational positions in [rad] that is angles. In robotics such a movement is called PTP (Point-To-Point). The signals are constructed in such a way that it is not possible to move faster, given the maximally allowed velocity v_max[j] and the maximally allowed acceleration a_max[j] for signal names[j] and have a velocity of zero at the given positions.

If there are two or more signals (that is length(names) > 1) then the path is constructed such that all signals are in the same periods in the acceleration, constant velocity and deceleration phase. This means that only one of the signals is at its limits whereas the others are synchronized in such a way that the end point is reached at the same time instant.

For example, this means that the signals have a velocity of zero at positions[1,:], one of the signals is accelerated with its maximally allowed acceleration until one of the signals reaches its maximally allowed velocity. At a proper time instant, one of the signals is decelerated with the negative value of its maximally allowed acceleration, so that all signals reach positions[2,:] with velocity zero.

This element is useful to generate a reference signal for a controller which controls, e.g., a drive train, or to drive a flange according to a given acceleration.

Example

using Modia
+@usingModiaPlot
+
+const ptp_path = PTP_path(["angle1", "angle2", "angle3"],
+                          positions = [0.0 2.0 3.0;  # angle1=0.0, angle2=2.0, angle3=3.0
+                                       0.5 3.0 4.0;
+                                       0.8 1.5 0.3;
+                                       0.2 1.5 0.8],
+                          startTime = 0.1,
+                          v_max = 2*ones(3),
+                          a_max = 3*ones(3))
+angles = zeros(3)
+getPosition!(ptp_path, 0.5, angles)   # angles = [0.12, 2.24, 3.24]
+path = getPath(ptp_path)
+plot(path, ["angle1", "angle2", "angle3"])
source
Modia.pathEndTimeFunction
Tend = pathEndTime(path)

Given a path::PTP_path return the end time Tend of the path.

source
Modia.getPosition!Function
getPosition!(path, time, position)

Given a path::PTP_path and a time instant time, return the actual position at time time in vector position.

source
getPosition!(path, time, position, velocity, acceleration)

Given a path::PTP_path and a time instant time, return the actual position, velocity and acceleration at time time in vectors position, velocity, acceleration.

source
Modia.getPositionFunction
pos = getPosition(path, index, time)

Given a path::PTP_path, the index of a signal, and a time instant time, return the actual position at time time.

source
Modia.getIndexFunction
index = getIndex(path, name)

Return the index of name in path or trigger an error, if not present.

source
Modia.getPathFunction
getPath(path;
+        names=path.names, tend=1.1*path.Tend, ntime=101, onlyPositions=false)

Given a path::PTP_path, return a SignalTables.SignalTable with the time series of the path over time up to tend for all ntime time points.

source
diff --git a/stable/Internal.html b/stable/Internal.html new file mode 100644 index 0000000..6e2021e --- /dev/null +++ b/stable/Internal.html @@ -0,0 +1,21 @@ + +Internal · Modia

Internal

This chapter documents internal functions that are typically only for use of the developers of a model library or of Modia.

Variables of built-in Components

The following functions are provided to define and access new variables in built-in components (seee for example model InsulatedRod2 in Modia/models/HeatTransfer.jl).

FunctionsDescription
new_x_segmented_variable!Generate new state variable (x_segmented and der_x_segmented variables)
new_w_segmented_variable!Generate new local variable (w_segmented variable)
new_alias_segmented_variable!Generate new alias variable
new_z_segmented_variable!Generate new zero crossing variables (z_segmented variables)
get_x_startIndex_from_x_segmented_startIndexReturn start index of x_segmented variable with respect to state vector x
copy_scalar_x_segmented_value_from_stateReturn value of scalar x_segmented variable from state vector x
copy_SVector3_x_segmented_value_from_stateReturn value of SVector{3,FloatType} x_segmented variable from state vector x
copy_Vector_x_segmented_value_from_stateReturn value of Vector{FloatType} x_segmented variable from state vector x
copy_der_x_segmented_value_to_stateCopy value of der_x_segmented variable to state derivative vector der(x)
copy_w_segmented_value_to_resultCopy value of local variable (w-segmented) to result
Modia.new_x_segmented_variable!Function
startIndex = new_x_segmented_variable!(
+                partiallyInstantiatedModel::InstantiatedModel,
+                x_name::String, der_x_name::String, startOrInit, x_unit::String="";
+                nominal::Float64 = NaN, unbounded::Bool = false)::Int

Generate new states (x_segmented and der_x_segmented variables) and return the startIndex of the variables in order that actual values can be inquired or copied from the state x and state derivative der(x)vectors via get_x_startIndex_from_x_segmented_startIndex. startOrInit contain the start or init values of the newly generated x_segmented variable.

Actual values of these new variables are stored in:

  • instantiatedModel.x_segmented[startIndex:startIndex+prod(dims(startOrInit))-1]
  • instantiatedModel.der_x_segmented[startIndex:startIndex+prod(dims(startOrInit))-1]

Value startOrInit is the start/init value used during re-initialization of the new segment with initFullRestart!(..).

source
Modia.new_w_segmented_variable!Function
index = new_w_segmented_variable!(
+           partiallyInstantiatedModel::InstantiatedModel, name::String,
+           w_segmented_default, unit::String="")::Int

Generate new local variable (w_segmented variable) and return the index of the variable in order that actual values can be inquired or copied from the result data structure. New values of w_segmented variables need only to be computed at communication points. Value wsegmenteddefault is stored as default value and defines type and (fixed) size of the variable in this simulation segment.

source
Modia.new_z_segmented_variable!Function
startIndex = new_z_segmented_variable!(instantiatedModel, nz)

Generate nz new zero crossing variables and return the startIndex to of the variables in order that actual values can be copied into the vector of zero crossings.

source
Modia.get_x_startIndex_from_x_segmented_startIndexFunction
x_startIndex = get_x_startIndex_from_x_segmented_startIndex(
+                  instantiatedModel::InstantiatedModel, x_segmented_startIndex)

Return the startindex of an x_segmented state with respect to the x-vector, given the startIndex with respect to the x_segmented vector (x_segmented_startIndex is the return value of new_x_segmented_variable!(..)).

source
Modia.copy_scalar_x_segmented_value_from_stateFunction
value = Modia.copy_scalar_x_segmented_value_from_state(instantiatedModel, startIndex)

Return value of scalar x_segmented variable from state vector x by providing its startIndex (returned from new_x_segmented_variable!(..)).

source
Modia.copy_SVector3_x_segmented_value_from_stateFunction
value = Modia.copy_SVector3_x_segmented_value_from_state(instantiatedModel, startIndex)

Return value of SVector{3,FloatType} x_segmented variable from state vector x by providing its startIndex (returned from new_x_segmented_variable!(..)).

source
Modia.copy_Vector_x_segmented_value_from_stateFunction
Modia.copy_Vector_x_segmented_value_from_state(
+    instantiatedModel::InstantiatedModel, startIndex, xi::Vector{FloatType})::Nothing

Return value of Vector{FloatType} x_segmented variable from state vector x by providing its startIndex (returned from new_x_segmented_variable!(..)) and copying it into the pre-allocated vector xi.

source
Modia.copy_der_x_segmented_value_to_stateFunction
Modia.copy_der_x_segmented_value_to_state(
+   instantiatedModel, startIndex, 
+   der_x_segmented_value::[FloatType|Vector{FloatType}])

Copy der_x_segmented_value to state derivative vector der(x) by providing its startIndex (returned from new_x_segmented_variable!(..)) and copying it into the pre-allocated vector der_x_segmented_value.

source
Modia.copy_w_segmented_value_to_resultFunction
Modia.copy_w_segmented_value_to_result(
+    instantiatedModel::InstantiatedModel, index::Int, 
+    w_segmented_value)::Nothing

Copy value of local variable (w-segmented) to result by providing its index (returned from new_w_segmented_variable!),

source

Inquiries in built-in Components

The following functions are provided to inquire properties in built-in components at the current state of the simulation (see for example model InsulatedRod2 in Modia/models/HeatTransfer.jl).

Modia.isInitialFunction
isInitial(instantiatedModel)

Return true, if initialization phase of simulation (of the current segment of a segmented simulation).

source
Modia.isFirstInitialOfAllSegmentsFunction
isFirstInitialOfAllSegments(instantiatedModel)

Return true, if initialization phase of simulation of the first segment of a segmented simulation.

source
Modia.isTerminalFunction
isTerminal(instantiatedModel)

Return true, if terminal phase of simulation (of the current segment of a segmented simulation).

source
Modia.isTerminalOfAllSegmentsFunction
isTerminalOfAllSegments(instantiatedModel)

Return true, if terminal phase of simulation of the last segment of a segmented simulation.

source
Modia.isEventFunction
isEvent(instantiatedModel)

Return true, if event phase of simulation (including initialization).

source
Modia.isFirstEventIterationFunction
isFirstEventIteration(instantiatedModel)

Return true, if event phase of simulation (including initialization) and during the first iteration of the event iteration.

source
Modia.isFullRestartFunction
isFullRestart(instantiatedModel)

Return true, if FullRestart event of a segmented simulation.

source
Modia.isZeroCrossingFunction
isZeroCrossing(instantiatedModel)

Return true, if event indicators (zero crossings) shall be computed.

source
Modia.getTimeFunction
tCurrent = getTime(instantiatedModel)

Return current simulation time.

source

Code Generation

This section lists internal functions to generate Julia code of the transformed equations.

Modia.InstantiatedModelType
simulationModel = InstantiatedModel{FloatType,TimeType}(
+        modelModule, modelName, getDerivatives!, equationInfo, x_startValues,
+        parameters, timeName, w_invariant_names;
+        vSolvedWithInitValuesAndUnit::OrderedDict{String,Any}(),
+        vEliminated::Vector{Int}=Int[],
+        vProperty::Vector{Int}=Int[],
+        var_name::Function = v->nothing)

Arguments

  • modelModule: Module in which @instantiateModel is invoked (it is used for Core.eval(modelModule, ...)), that is evaluation of expressions in the environment of the user.
  • modelName::String: Name of the model
  • getDerivatives::Function: Function that is used to evaluate the model equations, typically generated with [Modia.generate_getDerivatives!].
  • equationInfo::Modia.EquationInfo: Information about the states and the equations.
  • x_startValues:: Deprecated (is no longer used).
  • parameters: A hierarchical NamedTuple of (key, value) pairs defining the parameter and init/start values.
  • timeName: Name of time (as Symbol)
  • w_invariant_names: A vector of variable names (as vector of symbols or Expr)
source
Modia.generate_getDerivatives!Function
code = generate_getDerivatives!(AST, equationInfo, parameters, timeName, w_invariant_names, functionName;
+                                hasUnits=false)

Return the code of the getDerivatives! function as Expr using the Symbol functionName as function name. By eval(code) or fc = @RuntimeGeneratedFunction(code) the function is compiled and can afterwards be called.

Arguments

  • AST::Vector{Expr}: Abstract Syntax Tree of the equations as vector of Expr.

  • equationInfo::Modia.EquationInfo: Data structure returned by `Modia.getSortedAndSolvedAST holding information about the states.

  • parameters: Vector of parameter names (as vector of symbols)

  • timeName: Name of time (as symbol)

  • w_invariant_names: Vector of variable names (as vector of symbols or Expr).

  • functionName::Function: The name of the function that shall be generated.

Optional Arguments

  • pre:Vector{Symbol}: pre-variable names

  • hasUnits::Bool: = true, if variables have units. Note, the units of the state vector are defined in equationinfo.

source
Modia.init!Function
success = init!(simulationModel)

Initialize simulationModel::InstantiatedModel at startTime. In particular:

  • Empty result data structure.

  • Merge parameter and init/start values into simulationModel.

  • Construct x_start.

  • Call simulationModel.getDerivatives! once with isInitial(simulationModel) = true to compute and store all variables in the result data structure at startTime and initialize simulationModel.linearEquations.

  • Check whether explicitly solved variables that have init-values defined, have the required value after initialization (-> otherwise error).

If initialization is successful return true, otherwise false.

source
Modia.outputs!Function
outputs!(x, t, integrator)

DifferentialEquations FunctionCallingCallback function for InstantiatedModel that is used to store results at communication points.

source
Modia.derivatives!Function
derivatives!(derx, x, m, t)

DifferentialEquations callback function to get the derivatives.

source
Modia.DAEresidualsForODE!Function
DAEresidualsForODE!(residuals, derx, x, m, t)

DifferentialEquations callback function for DAE integrator for ODE model

source
Modia.affectEvent!Function
affectEvent!(integrator, stateEvent, eventIndex)

Called when a time event (stateEvent=false) or state event (stateEvent=true) is triggered. In case of stateEvent, eventIndex is the index of the crossing function that triggered the event.

source
Modia.addToResult!Function
addToResult!(instantiatedModel, x, time, w_invariant...)

Add result of current time instant (time, x, der_x, w_invariant, w_segmented) to instantiatedModel.

source
Modia.getFloatTypeFunction
floatType = getFloatType(simulationModel::InstantiatedModel)

Return the floating point type with which simulationModel is parameterized (for example returns: Float64, Float32, DoubleFloat, Measurements.Measurement{Float64}).

source
Modia.measurementToStringFunction
str = measurementToString(v)

Return variable v::Measurements.Measurement{FloatType} or a vector of such variables in form of a string will the full number of significant digits.

source
diff --git a/stable/assets/documenter.js b/stable/assets/documenter.js new file mode 100644 index 0000000..6adfbbb --- /dev/null +++ b/stable/assets/documenter.js @@ -0,0 +1,331 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/languages/julia.min', + 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/headroom.min', + 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min', + 'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/contrib/auto-render.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min', + 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/jQuery.headroom.min', + 'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min', + 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/highlight.min', + 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/languages/julia-repl.min', + }, + shim: { + "highlight-julia": { + "deps": [ + "highlight" + ] + }, + "katex-auto-render": { + "deps": [ + "katex" + ] + }, + "headroom-jquery": { + "deps": [ + "jquery", + "headroom" + ] + }, + "highlight-julia-repl": { + "deps": [ + "highlight" + ] + } +} +}); +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) { +$(document).ready(function() { + renderMathInElement( + document.body, + { + "delimiters": [ + { + "left": "$", + "right": "$", + "display": false + }, + { + "left": "$$", + "right": "$$", + "display": true + }, + { + "left": "\\[", + "right": "\\]", + "display": true + } + ] +} + + ); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($) { +$(document).ready(function() { + hljs.highlightAll(); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require([], function() { +function addCopyButtonCallbacks() { + for (const el of document.getElementsByTagName("pre")) { + const button = document.createElement("button"); + button.classList.add("copy-button", "fas", "fa-copy"); + el.appendChild(button); + + const success = function () { + button.classList.add("success", "fa-check"); + button.classList.remove("fa-copy"); + }; + + const failure = function () { + button.classList.add("error", "fa-times"); + button.classList.remove("fa-copy"); + }; + + button.addEventListener("click", function () { + copyToClipboard(el.innerText).then(success, failure); + + setTimeout(function () { + button.classList.add("fa-copy"); + button.classList.remove("success", "fa-check", "fa-times"); + }, 5000); + }); + } +} + +function copyToClipboard(text) { + // clipboard API is only available in secure contexts + if (window.navigator && window.navigator.clipboard) { + return window.navigator.clipboard.writeText(text); + } else { + return new Promise(function (resolve, reject) { + try { + const el = document.createElement("textarea"); + el.textContent = text; + el.style.position = "fixed"; + el.style.opacity = 0; + document.body.appendChild(el); + el.select(); + document.execCommand("copy"); + + resolve(); + } catch (err) { + reject(err); + } finally { + document.body.removeChild(el); + } + }); + } +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", addCopyButtonCallbacks); +} else { + addCopyButtonCallbacks(); +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) { + +// Manages the top navigation bar (hides it when the user starts scrolling down on the +// mobile). +window.Headroom = Headroom; // work around buggy module loading? +$(document).ready(function() { + $('#documenter .docs-navbar').headroom({ + "tolerance": {"up": 10, "down": 10}, + }); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Modal settings dialog +$(document).ready(function() { + var settings = $('#documenter-settings'); + $('#documenter-settings-button').click(function(){ + settings.toggleClass('is-active'); + }); + // Close the dialog if X is clicked + $('#documenter-settings button.delete').click(function(){ + settings.removeClass('is-active'); + }); + // Close dialog if ESC is pressed + $(document).keyup(function(e) { + if (e.keyCode == 27) settings.removeClass('is-active'); + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Manages the showing and hiding of the sidebar. +$(document).ready(function() { + var sidebar = $("#documenter > .docs-sidebar"); + var sidebar_button = $("#documenter-sidebar-button") + sidebar_button.click(function(ev) { + ev.preventDefault(); + sidebar.toggleClass('visible'); + if (sidebar.hasClass('visible')) { + // Makes sure that the current menu item is visible in the sidebar. + $("#documenter .docs-menu a.is-active").focus(); + } + }); + $("#documenter > .docs-main").bind('click', function(ev) { + if ($(ev.target).is(sidebar_button)) { + return; + } + if (sidebar.hasClass('visible')) { + sidebar.removeClass('visible'); + } + }); +}) + +// Resizes the package name / sitename in the sidebar if it is too wide. +// Inspired by: https://github.com/davatron5000/FitText.js +$(document).ready(function() { + e = $("#documenter .docs-autofit"); + function resize() { + var L = parseInt(e.css('max-width'), 10); + var L0 = e.width(); + if(L0 > L) { + var h0 = parseInt(e.css('font-size'), 10); + e.css('font-size', L * h0 / L0); + // TODO: make sure it survives resizes? + } + } + // call once and then register events + resize(); + $(window).resize(resize); + $(window).on('orientationchange', resize); +}); + +// Scroll the navigation bar to the currently selected menu item +$(document).ready(function() { + var sidebar = $("#documenter .docs-menu").get(0); + var active = $("#documenter .docs-menu .is-active").get(0); + if(typeof active !== 'undefined') { + sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; + } +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +function set_theme(theme) { + var active = null; + var disabled = []; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + var themename = ss.ownerNode.getAttribute("data-theme-name"); + if(themename === null) continue; // ignore non-theme stylesheets + // Find the active theme + if(themename === theme) active = ss; + else disabled.push(ss); + } + if(active !== null) { + active.disabled = false; + if(active.ownerNode.getAttribute("data-theme-primary") === null) { + document.getElementsByTagName('html')[0].className = "theme--" + theme; + } else { + document.getElementsByTagName('html')[0].className = ""; + } + disabled.forEach(function(ss){ + ss.disabled = true; + }); + } + + // Store the theme in localStorage + if(typeof(window.localStorage) !== "undefined") { + window.localStorage.setItem("documenter-theme", theme); + } else { + console.error("Browser does not support window.localStorage"); + } +} + +// Theme picker setup +$(document).ready(function() { + // onchange callback + $('#documenter-themepicker').change(function themepick_callback(ev){ + var themename = $('#documenter-themepicker option:selected').attr('value'); + set_theme(themename); + }); + + // Make sure that the themepicker displays the correct theme when the theme is retrieved + // from localStorage + if(typeof(window.localStorage) !== "undefined") { + var theme = window.localStorage.getItem("documenter-theme"); + if(theme !== null) { + $('#documenter-themepicker option').each(function(i,e) { + e.selected = (e.value === theme); + }) + } else { + $('#documenter-themepicker option').each(function(i,e) { + e.selected = $("html").hasClass(`theme--${e.value}`); + }) + } + } +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// update the version selector with info from the siteinfo.js and ../versions.js files +$(document).ready(function() { + // If the version selector is disabled with DOCUMENTER_VERSION_SELECTOR_DISABLED in the + // siteinfo.js file, we just return immediately and not display the version selector. + if (typeof DOCUMENTER_VERSION_SELECTOR_DISABLED === 'boolean' && DOCUMENTER_VERSION_SELECTOR_DISABLED) { + return; + } + + var version_selector = $("#documenter .docs-version-selector"); + var version_selector_select = $("#documenter .docs-version-selector select"); + + version_selector_select.change(function(x) { + target_href = version_selector_select.children("option:selected").get(0).value; + window.location.href = target_href; + }); + + // add the current version to the selector based on siteinfo.js, but only if the selector is empty + if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) { + var option = $(""); + version_selector_select.append(option); + } + + if (typeof DOC_VERSIONS !== 'undefined') { + var existing_versions = version_selector_select.children("option"); + var existing_versions_texts = existing_versions.map(function(i,x){return x.text}); + DOC_VERSIONS.forEach(function(each) { + var version_url = documenterBaseURL + "/../" + each; + var existing_id = $.inArray(each, existing_versions_texts); + // if not already in the version selector, add it as a new option, + // otherwise update the old option with the URL and enable it + if (existing_id == -1) { + var option = $(""); + version_selector_select.append(option); + } else { + var option = existing_versions[existing_id]; + option.value = version_url; + option.disabled = false; + } + }); + } + + // only show the version selector if the selector has been populated + if (version_selector_select.children("option").length > 0) { + version_selector.toggleClass("visible"); + } +}) + +}) diff --git a/stable/assets/search.js b/stable/assets/search.js new file mode 100644 index 0000000..c133f74 --- /dev/null +++ b/stable/assets/search.js @@ -0,0 +1,267 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.3.9/lunr.min', + 'lodash': 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min', + } +}); +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'lunr', 'lodash'], function($, lunr, _) { + +$(document).ready(function() { + // parseUri 1.2.2 + // (c) Steven Levithan + // MIT License + function parseUri (str) { + var o = parseUri.options, + m = o.parser[o.strictMode ? "strict" : "loose"].exec(str), + uri = {}, + i = 14; + + while (i--) uri[o.key[i]] = m[i] || ""; + + uri[o.q.name] = {}; + uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { + if ($1) uri[o.q.name][$1] = $2; + }); + + return uri; + }; + parseUri.options = { + strictMode: false, + key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], + q: { + name: "queryKey", + parser: /(?:^|&)([^&=]*)=?([^&]*)/g + }, + parser: { + strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + } + }; + + $("#search-form").submit(function(e) { + e.preventDefault() + }) + + // list below is the lunr 2.1.3 list minus the intersect with names(Base) + // (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with) + // ideally we'd just filter the original list but it's not available as a variable + lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'does', + 'either', + 'ever', + 'every', + 'from', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'into', + 'it', + 'its', + 'just', + 'least', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'who', + 'whom', + 'why', + 'will', + 'would', + 'yet', + 'you', + 'your' + ]) + + // add . as a separator, because otherwise "title": "Documenter.Anchors.add!" + // would not find anything if searching for "add!", only for the entire qualification + lunr.tokenizer.separator = /[\s\-\.]+/ + + // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names + lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '') + }) + } + + lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter') + lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer') + + var index = lunr(function () { + this.ref('location') + this.field('title',{boost: 100}) + this.field('text') + documenterSearchIndex['docs'].forEach(function(e) { + this.add(e) + }, this) + }) + var store = {} + + documenterSearchIndex['docs'].forEach(function(e) { + store[e.location] = {title: e.title, category: e.category, page: e.page} + }) + + $(function(){ + searchresults = $('#documenter-search-results'); + searchinfo = $('#documenter-search-info'); + searchbox = $('#documenter-search-query'); + searchform = $('.docs-search'); + sidebar = $('.docs-sidebar'); + function update_search(querystring) { + tokens = lunr.tokenizer(querystring) + results = index.query(function (q) { + tokens.forEach(function (t) { + q.term(t.toString(), { + fields: ["title"], + boost: 100, + usePipeline: true, + editDistance: 0, + wildcard: lunr.Query.wildcard.NONE + }) + q.term(t.toString(), { + fields: ["title"], + boost: 10, + usePipeline: true, + editDistance: 2, + wildcard: lunr.Query.wildcard.NONE + }) + q.term(t.toString(), { + fields: ["text"], + boost: 1, + usePipeline: true, + editDistance: 0, + wildcard: lunr.Query.wildcard.NONE + }) + }) + }) + searchinfo.text("Number of results: " + results.length) + searchresults.empty() + results.forEach(function(result) { + data = store[result.ref] + link = $(''+data.title+'') + link.attr('href', documenterBaseURL+'/'+result.ref) + if (data.category != "page"){ + cat = $('('+data.category+', '+data.page+')') + } else { + cat = $('('+data.category+')') + } + li = $('
  • ').append(link).append(" ").append(cat) + searchresults.append(li) + }) + } + + function update_search_box() { + querystring = searchbox.val() + update_search(querystring) + } + + searchbox.keyup(_.debounce(update_search_box, 250)) + searchbox.change(update_search_box) + + // Disable enter-key form submission for the searchbox on the search page + // and just re-run search rather than refresh the whole page. + searchform.keypress( + function(event){ + if (event.which == '13') { + if (sidebar.hasClass('visible')) { + sidebar.removeClass('visible'); + } + update_search_box(); + event.preventDefault(); + } + } + ); + + search_query_uri = parseUri(window.location).queryKey["q"] + if(search_query_uri !== undefined) { + search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20')) + searchbox.val(search_query) + } + update_search_box(); + }) +}) + +}) diff --git a/stable/assets/themes/documenter-dark.css b/stable/assets/themes/documenter-dark.css new file mode 100644 index 0000000..0bf1af7 --- /dev/null +++ b/stable/assets/themes/documenter-dark.css @@ -0,0 +1,7702 @@ +@charset "UTF-8"; +/* Font Awesome 5 mixin. Can be included in any rule that should render Font Awesome icons. */ +@keyframes spinAround { + from { + transform: rotate(0deg); } + to { + transform: rotate(359deg); } } + +html.theme--documenter-dark .tabs, html.theme--documenter-dark .pagination-previous, +html.theme--documenter-dark .pagination-next, +html.theme--documenter-dark .pagination-link, +html.theme--documenter-dark .pagination-ellipsis, html.theme--documenter-dark .breadcrumb, html.theme--documenter-dark .file, html.theme--documenter-dark .button, .is-unselectable, html.theme--documenter-dark .modal-close, html.theme--documenter-dark .delete { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after, html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after { + border: 3px solid transparent; + border-radius: 2px; + border-right: 0; + border-top: 0; + content: " "; + display: block; + height: 0.625em; + margin-top: -0.4375em; + pointer-events: none; + position: absolute; + top: 50%; + transform: rotate(-45deg); + transform-origin: center; + width: 0.625em; } + +html.theme--documenter-dark .admonition:not(:last-child), html.theme--documenter-dark .tabs:not(:last-child), html.theme--documenter-dark .message:not(:last-child), html.theme--documenter-dark .list:not(:last-child), html.theme--documenter-dark .level:not(:last-child), html.theme--documenter-dark .breadcrumb:not(:last-child), html.theme--documenter-dark .highlight:not(:last-child), html.theme--documenter-dark .block:not(:last-child), html.theme--documenter-dark .title:not(:last-child), +html.theme--documenter-dark .subtitle:not(:last-child), html.theme--documenter-dark .table-container:not(:last-child), html.theme--documenter-dark .table:not(:last-child), html.theme--documenter-dark .progress:not(:last-child), html.theme--documenter-dark .notification:not(:last-child), html.theme--documenter-dark .content:not(:last-child), html.theme--documenter-dark .box:not(:last-child) { + margin-bottom: 1.5rem; } + +html.theme--documenter-dark .modal-close, html.theme--documenter-dark .delete { + -moz-appearance: none; + -webkit-appearance: none; + background-color: rgba(10, 10, 10, 0.2); + border: none; + border-radius: 290486px; + cursor: pointer; + pointer-events: auto; + display: inline-block; + flex-grow: 0; + flex-shrink: 0; + font-size: 0; + height: 20px; + max-height: 20px; + max-width: 20px; + min-height: 20px; + min-width: 20px; + outline: none; + position: relative; + vertical-align: top; + width: 20px; } + html.theme--documenter-dark .modal-close::before, html.theme--documenter-dark .delete::before, html.theme--documenter-dark .modal-close::after, html.theme--documenter-dark .delete::after { + background-color: white; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; } + html.theme--documenter-dark .modal-close::before, html.theme--documenter-dark .delete::before { + height: 2px; + width: 50%; } + html.theme--documenter-dark .modal-close::after, html.theme--documenter-dark .delete::after { + height: 50%; + width: 2px; } + html.theme--documenter-dark .modal-close:hover, html.theme--documenter-dark .delete:hover, html.theme--documenter-dark .modal-close:focus, html.theme--documenter-dark .delete:focus { + background-color: rgba(10, 10, 10, 0.3); } + html.theme--documenter-dark .modal-close:active, html.theme--documenter-dark .delete:active { + background-color: rgba(10, 10, 10, 0.4); } + html.theme--documenter-dark .is-small.modal-close, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.modal-close, html.theme--documenter-dark .is-small.delete, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.delete { + height: 16px; + max-height: 16px; + max-width: 16px; + min-height: 16px; + min-width: 16px; + width: 16px; } + html.theme--documenter-dark .is-medium.modal-close, html.theme--documenter-dark .is-medium.delete { + height: 24px; + max-height: 24px; + max-width: 24px; + min-height: 24px; + min-width: 24px; + width: 24px; } + html.theme--documenter-dark .is-large.modal-close, html.theme--documenter-dark .is-large.delete { + height: 32px; + max-height: 32px; + max-width: 32px; + min-height: 32px; + min-width: 32px; + width: 32px; } + +html.theme--documenter-dark .control.is-loading::after, html.theme--documenter-dark .select.is-loading::after, html.theme--documenter-dark .loader, html.theme--documenter-dark .button.is-loading::after { + animation: spinAround 500ms infinite linear; + border: 2px solid #dbdee0; + border-radius: 290486px; + border-right-color: transparent; + border-top-color: transparent; + content: ""; + display: block; + height: 1em; + position: relative; + width: 1em; } + +html.theme--documenter-dark .hero-video, html.theme--documenter-dark .modal-background, html.theme--documenter-dark .modal, html.theme--documenter-dark .image.is-square img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square img, +html.theme--documenter-dark .image.is-square .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, html.theme--documenter-dark .image.is-1by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 img, +html.theme--documenter-dark .image.is-1by1 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, html.theme--documenter-dark .image.is-5by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 img, +html.theme--documenter-dark .image.is-5by4 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, html.theme--documenter-dark .image.is-4by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 img, +html.theme--documenter-dark .image.is-4by3 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, html.theme--documenter-dark .image.is-3by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 img, +html.theme--documenter-dark .image.is-3by2 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, html.theme--documenter-dark .image.is-5by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 img, +html.theme--documenter-dark .image.is-5by3 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, html.theme--documenter-dark .image.is-16by9 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 img, +html.theme--documenter-dark .image.is-16by9 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, html.theme--documenter-dark .image.is-2by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 img, +html.theme--documenter-dark .image.is-2by1 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, html.theme--documenter-dark .image.is-3by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 img, +html.theme--documenter-dark .image.is-3by1 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, html.theme--documenter-dark .image.is-4by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 img, +html.theme--documenter-dark .image.is-4by5 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, html.theme--documenter-dark .image.is-3by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 img, +html.theme--documenter-dark .image.is-3by4 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, html.theme--documenter-dark .image.is-2by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 img, +html.theme--documenter-dark .image.is-2by3 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, html.theme--documenter-dark .image.is-3by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 img, +html.theme--documenter-dark .image.is-3by5 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, html.theme--documenter-dark .image.is-9by16 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 img, +html.theme--documenter-dark .image.is-9by16 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, html.theme--documenter-dark .image.is-1by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 img, +html.theme--documenter-dark .image.is-1by2 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, html.theme--documenter-dark .image.is-1by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 img, +html.theme--documenter-dark .image.is-1by3 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio, .is-overlay { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; } + +html.theme--documenter-dark .pagination-previous, +html.theme--documenter-dark .pagination-next, +html.theme--documenter-dark .pagination-link, +html.theme--documenter-dark .pagination-ellipsis, html.theme--documenter-dark .file-cta, +html.theme--documenter-dark .file-name, html.theme--documenter-dark .select select, html.theme--documenter-dark .textarea, html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .button { + -moz-appearance: none; + -webkit-appearance: none; + align-items: center; + border: 1px solid transparent; + border-radius: 0.4em; + box-shadow: none; + display: inline-flex; + font-size: 15px; + height: 2.25em; + justify-content: flex-start; + line-height: 1.5; + padding-bottom: calc(0.375em - 1px); + padding-left: calc(0.625em - 1px); + padding-right: calc(0.625em - 1px); + padding-top: calc(0.375em - 1px); + position: relative; + vertical-align: top; } + html.theme--documenter-dark .pagination-previous:focus, + html.theme--documenter-dark .pagination-next:focus, + html.theme--documenter-dark .pagination-link:focus, + html.theme--documenter-dark .pagination-ellipsis:focus, html.theme--documenter-dark .file-cta:focus, + html.theme--documenter-dark .file-name:focus, html.theme--documenter-dark .select select:focus, html.theme--documenter-dark .textarea:focus, html.theme--documenter-dark .input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:focus, html.theme--documenter-dark .button:focus, html.theme--documenter-dark .is-focused.pagination-previous, + html.theme--documenter-dark .is-focused.pagination-next, + html.theme--documenter-dark .is-focused.pagination-link, + html.theme--documenter-dark .is-focused.pagination-ellipsis, html.theme--documenter-dark .is-focused.file-cta, + html.theme--documenter-dark .is-focused.file-name, html.theme--documenter-dark .select select.is-focused, html.theme--documenter-dark .is-focused.textarea, html.theme--documenter-dark .is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-focused.button, html.theme--documenter-dark .pagination-previous:active, + html.theme--documenter-dark .pagination-next:active, + html.theme--documenter-dark .pagination-link:active, + html.theme--documenter-dark .pagination-ellipsis:active, html.theme--documenter-dark .file-cta:active, + html.theme--documenter-dark .file-name:active, html.theme--documenter-dark .select select:active, html.theme--documenter-dark .textarea:active, html.theme--documenter-dark .input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:active, html.theme--documenter-dark .button:active, html.theme--documenter-dark .is-active.pagination-previous, + html.theme--documenter-dark .is-active.pagination-next, + html.theme--documenter-dark .is-active.pagination-link, + html.theme--documenter-dark .is-active.pagination-ellipsis, html.theme--documenter-dark .is-active.file-cta, + html.theme--documenter-dark .is-active.file-name, html.theme--documenter-dark .select select.is-active, html.theme--documenter-dark .is-active.textarea, html.theme--documenter-dark .is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active, html.theme--documenter-dark .is-active.button { + outline: none; } + html.theme--documenter-dark .pagination-previous[disabled], + html.theme--documenter-dark .pagination-next[disabled], + html.theme--documenter-dark .pagination-link[disabled], + html.theme--documenter-dark .pagination-ellipsis[disabled], html.theme--documenter-dark .file-cta[disabled], + html.theme--documenter-dark .file-name[disabled], html.theme--documenter-dark .select select[disabled], html.theme--documenter-dark .textarea[disabled], html.theme--documenter-dark .input[disabled], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled], html.theme--documenter-dark .button[disabled], fieldset[disabled] html.theme--documenter-dark .pagination-previous, html.theme--documenter-dark fieldset[disabled] .pagination-previous, + fieldset[disabled] html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark fieldset[disabled] .pagination-next, + fieldset[disabled] html.theme--documenter-dark .pagination-link, + html.theme--documenter-dark fieldset[disabled] .pagination-link, + fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis, + html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis, fieldset[disabled] html.theme--documenter-dark .file-cta, html.theme--documenter-dark fieldset[disabled] .file-cta, + fieldset[disabled] html.theme--documenter-dark .file-name, + html.theme--documenter-dark fieldset[disabled] .file-name, fieldset[disabled] html.theme--documenter-dark .select select, fieldset[disabled] html.theme--documenter-dark .textarea, fieldset[disabled] html.theme--documenter-dark .input, fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark fieldset[disabled] .select select, html.theme--documenter-dark .select fieldset[disabled] select, html.theme--documenter-dark fieldset[disabled] .textarea, html.theme--documenter-dark fieldset[disabled] .input, html.theme--documenter-dark fieldset[disabled] #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, fieldset[disabled] html.theme--documenter-dark .button, html.theme--documenter-dark fieldset[disabled] .button { + cursor: not-allowed; } + +/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ +html, +body, +p, +ol, +ul, +li, +dl, +dt, +dd, +blockquote, +figure, +fieldset, +legend, +textarea, +pre, +iframe, +hr, +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal; } + +ul { + list-style: none; } + +button, +input, +select, +textarea { + margin: 0; } + +html { + box-sizing: border-box; } + +*, *::before, *::after { + box-sizing: inherit; } + +img, +embed, +iframe, +object, +video { + height: auto; + max-width: 100%; } + +audio { + max-width: 100%; } + +iframe { + border: 0; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + td:not([align]), + th:not([align]) { + text-align: left; } + +.is-clearfix::after { + clear: both; + content: " "; + display: table; } + +.is-pulled-left { + float: left !important; } + +.is-pulled-right { + float: right !important; } + +.is-clipped { + overflow: hidden !important; } + +.is-size-1 { + font-size: 3rem !important; } + +.is-size-2 { + font-size: 2.5rem !important; } + +.is-size-3 { + font-size: 2rem !important; } + +.is-size-4 { + font-size: 1.5rem !important; } + +.is-size-5 { + font-size: 1.25rem !important; } + +.is-size-6 { + font-size: 15px !important; } + +.is-size-7, html.theme--documenter-dark .docstring > section > a.docs-sourcelink { + font-size: 0.85em !important; } + +@media screen and (max-width: 768px) { + .is-size-1-mobile { + font-size: 3rem !important; } + .is-size-2-mobile { + font-size: 2.5rem !important; } + .is-size-3-mobile { + font-size: 2rem !important; } + .is-size-4-mobile { + font-size: 1.5rem !important; } + .is-size-5-mobile { + font-size: 1.25rem !important; } + .is-size-6-mobile { + font-size: 15px !important; } + .is-size-7-mobile { + font-size: 0.85em !important; } } + +@media screen and (min-width: 769px), print { + .is-size-1-tablet { + font-size: 3rem !important; } + .is-size-2-tablet { + font-size: 2.5rem !important; } + .is-size-3-tablet { + font-size: 2rem !important; } + .is-size-4-tablet { + font-size: 1.5rem !important; } + .is-size-5-tablet { + font-size: 1.25rem !important; } + .is-size-6-tablet { + font-size: 15px !important; } + .is-size-7-tablet { + font-size: 0.85em !important; } } + +@media screen and (max-width: 1055px) { + .is-size-1-touch { + font-size: 3rem !important; } + .is-size-2-touch { + font-size: 2.5rem !important; } + .is-size-3-touch { + font-size: 2rem !important; } + .is-size-4-touch { + font-size: 1.5rem !important; } + .is-size-5-touch { + font-size: 1.25rem !important; } + .is-size-6-touch { + font-size: 15px !important; } + .is-size-7-touch { + font-size: 0.85em !important; } } + +@media screen and (min-width: 1056px) { + .is-size-1-desktop { + font-size: 3rem !important; } + .is-size-2-desktop { + font-size: 2.5rem !important; } + .is-size-3-desktop { + font-size: 2rem !important; } + .is-size-4-desktop { + font-size: 1.5rem !important; } + .is-size-5-desktop { + font-size: 1.25rem !important; } + .is-size-6-desktop { + font-size: 15px !important; } + .is-size-7-desktop { + font-size: 0.85em !important; } } + +@media screen and (min-width: 1216px) { + .is-size-1-widescreen { + font-size: 3rem !important; } + .is-size-2-widescreen { + font-size: 2.5rem !important; } + .is-size-3-widescreen { + font-size: 2rem !important; } + .is-size-4-widescreen { + font-size: 1.5rem !important; } + .is-size-5-widescreen { + font-size: 1.25rem !important; } + .is-size-6-widescreen { + font-size: 15px !important; } + .is-size-7-widescreen { + font-size: 0.85em !important; } } + +@media screen and (min-width: 1408px) { + .is-size-1-fullhd { + font-size: 3rem !important; } + .is-size-2-fullhd { + font-size: 2.5rem !important; } + .is-size-3-fullhd { + font-size: 2rem !important; } + .is-size-4-fullhd { + font-size: 1.5rem !important; } + .is-size-5-fullhd { + font-size: 1.25rem !important; } + .is-size-6-fullhd { + font-size: 15px !important; } + .is-size-7-fullhd { + font-size: 0.85em !important; } } + +.has-text-centered { + text-align: center !important; } + +.has-text-justified { + text-align: justify !important; } + +.has-text-left { + text-align: left !important; } + +.has-text-right { + text-align: right !important; } + +@media screen and (max-width: 768px) { + .has-text-centered-mobile { + text-align: center !important; } } + +@media screen and (min-width: 769px), print { + .has-text-centered-tablet { + text-align: center !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-centered-tablet-only { + text-align: center !important; } } + +@media screen and (max-width: 1055px) { + .has-text-centered-touch { + text-align: center !important; } } + +@media screen and (min-width: 1056px) { + .has-text-centered-desktop { + text-align: center !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-centered-desktop-only { + text-align: center !important; } } + +@media screen and (min-width: 1216px) { + .has-text-centered-widescreen { + text-align: center !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-centered-widescreen-only { + text-align: center !important; } } + +@media screen and (min-width: 1408px) { + .has-text-centered-fullhd { + text-align: center !important; } } + +@media screen and (max-width: 768px) { + .has-text-justified-mobile { + text-align: justify !important; } } + +@media screen and (min-width: 769px), print { + .has-text-justified-tablet { + text-align: justify !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-justified-tablet-only { + text-align: justify !important; } } + +@media screen and (max-width: 1055px) { + .has-text-justified-touch { + text-align: justify !important; } } + +@media screen and (min-width: 1056px) { + .has-text-justified-desktop { + text-align: justify !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-justified-desktop-only { + text-align: justify !important; } } + +@media screen and (min-width: 1216px) { + .has-text-justified-widescreen { + text-align: justify !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-justified-widescreen-only { + text-align: justify !important; } } + +@media screen and (min-width: 1408px) { + .has-text-justified-fullhd { + text-align: justify !important; } } + +@media screen and (max-width: 768px) { + .has-text-left-mobile { + text-align: left !important; } } + +@media screen and (min-width: 769px), print { + .has-text-left-tablet { + text-align: left !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-left-tablet-only { + text-align: left !important; } } + +@media screen and (max-width: 1055px) { + .has-text-left-touch { + text-align: left !important; } } + +@media screen and (min-width: 1056px) { + .has-text-left-desktop { + text-align: left !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-left-desktop-only { + text-align: left !important; } } + +@media screen and (min-width: 1216px) { + .has-text-left-widescreen { + text-align: left !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-left-widescreen-only { + text-align: left !important; } } + +@media screen and (min-width: 1408px) { + .has-text-left-fullhd { + text-align: left !important; } } + +@media screen and (max-width: 768px) { + .has-text-right-mobile { + text-align: right !important; } } + +@media screen and (min-width: 769px), print { + .has-text-right-tablet { + text-align: right !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-right-tablet-only { + text-align: right !important; } } + +@media screen and (max-width: 1055px) { + .has-text-right-touch { + text-align: right !important; } } + +@media screen and (min-width: 1056px) { + .has-text-right-desktop { + text-align: right !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-right-desktop-only { + text-align: right !important; } } + +@media screen and (min-width: 1216px) { + .has-text-right-widescreen { + text-align: right !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-right-widescreen-only { + text-align: right !important; } } + +@media screen and (min-width: 1408px) { + .has-text-right-fullhd { + text-align: right !important; } } + +.is-capitalized { + text-transform: capitalize !important; } + +.is-lowercase { + text-transform: lowercase !important; } + +.is-uppercase { + text-transform: uppercase !important; } + +.is-italic { + font-style: italic !important; } + +.has-text-white { + color: white !important; } + +a.has-text-white:hover, a.has-text-white:focus { + color: #e6e6e6 !important; } + +.has-background-white { + background-color: white !important; } + +.has-text-black { + color: #0a0a0a !important; } + +a.has-text-black:hover, a.has-text-black:focus { + color: black !important; } + +.has-background-black { + background-color: #0a0a0a !important; } + +.has-text-light { + color: #ecf0f1 !important; } + +a.has-text-light:hover, a.has-text-light:focus { + color: #cfd9db !important; } + +.has-background-light { + background-color: #ecf0f1 !important; } + +.has-text-dark { + color: #282f2f !important; } + +a.has-text-dark:hover, a.has-text-dark:focus { + color: #111414 !important; } + +.has-background-dark { + background-color: #282f2f !important; } + +.has-text-primary { + color: #375a7f !important; } + +a.has-text-primary:hover, a.has-text-primary:focus { + color: #28415b !important; } + +.has-background-primary { + background-color: #375a7f !important; } + +.has-text-link { + color: #1abc9c !important; } + +a.has-text-link:hover, a.has-text-link:focus { + color: #148f77 !important; } + +.has-background-link { + background-color: #1abc9c !important; } + +.has-text-info { + color: #024c7d !important; } + +a.has-text-info:hover, a.has-text-info:focus { + color: #012d4b !important; } + +.has-background-info { + background-color: #024c7d !important; } + +.has-text-success { + color: #008438 !important; } + +a.has-text-success:hover, a.has-text-success:focus { + color: #005122 !important; } + +.has-background-success { + background-color: #008438 !important; } + +.has-text-warning { + color: #ad8100 !important; } + +a.has-text-warning:hover, a.has-text-warning:focus { + color: #7a5b00 !important; } + +.has-background-warning { + background-color: #ad8100 !important; } + +.has-text-danger { + color: #9e1b0d !important; } + +a.has-text-danger:hover, a.has-text-danger:focus { + color: #6f1309 !important; } + +.has-background-danger { + background-color: #9e1b0d !important; } + +.has-text-black-bis { + color: #121212 !important; } + +.has-background-black-bis { + background-color: #121212 !important; } + +.has-text-black-ter { + color: #242424 !important; } + +.has-background-black-ter { + background-color: #242424 !important; } + +.has-text-grey-darker { + color: #282f2f !important; } + +.has-background-grey-darker { + background-color: #282f2f !important; } + +.has-text-grey-dark { + color: #343c3d !important; } + +.has-background-grey-dark { + background-color: #343c3d !important; } + +.has-text-grey { + color: #5e6d6f !important; } + +.has-background-grey { + background-color: #5e6d6f !important; } + +.has-text-grey-light { + color: #8c9b9d !important; } + +.has-background-grey-light { + background-color: #8c9b9d !important; } + +.has-text-grey-lighter { + color: #dbdee0 !important; } + +.has-background-grey-lighter { + background-color: #dbdee0 !important; } + +.has-text-white-ter { + color: #ecf0f1 !important; } + +.has-background-white-ter { + background-color: #ecf0f1 !important; } + +.has-text-white-bis { + color: #fafafa !important; } + +.has-background-white-bis { + background-color: #fafafa !important; } + +.has-text-weight-light { + font-weight: 300 !important; } + +.has-text-weight-normal { + font-weight: 400 !important; } + +.has-text-weight-medium { + font-weight: 500 !important; } + +.has-text-weight-semibold { + font-weight: 600 !important; } + +.has-text-weight-bold { + font-weight: 700 !important; } + +.is-family-primary { + font-family: "Lato Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-secondary { + font-family: "Lato Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-sans-serif { + font-family: "Lato Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-monospace { + font-family: "JuliaMono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } + +.is-family-code { + font-family: "JuliaMono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } + +.is-block { + display: block !important; } + +@media screen and (max-width: 768px) { + .is-block-mobile { + display: block !important; } } + +@media screen and (min-width: 769px), print { + .is-block-tablet { + display: block !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-block-tablet-only { + display: block !important; } } + +@media screen and (max-width: 1055px) { + .is-block-touch { + display: block !important; } } + +@media screen and (min-width: 1056px) { + .is-block-desktop { + display: block !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-block-desktop-only { + display: block !important; } } + +@media screen and (min-width: 1216px) { + .is-block-widescreen { + display: block !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-block-widescreen-only { + display: block !important; } } + +@media screen and (min-width: 1408px) { + .is-block-fullhd { + display: block !important; } } + +.is-flex { + display: flex !important; } + +@media screen and (max-width: 768px) { + .is-flex-mobile { + display: flex !important; } } + +@media screen and (min-width: 769px), print { + .is-flex-tablet { + display: flex !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-flex-tablet-only { + display: flex !important; } } + +@media screen and (max-width: 1055px) { + .is-flex-touch { + display: flex !important; } } + +@media screen and (min-width: 1056px) { + .is-flex-desktop { + display: flex !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-flex-desktop-only { + display: flex !important; } } + +@media screen and (min-width: 1216px) { + .is-flex-widescreen { + display: flex !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-flex-widescreen-only { + display: flex !important; } } + +@media screen and (min-width: 1408px) { + .is-flex-fullhd { + display: flex !important; } } + +.is-inline { + display: inline !important; } + +@media screen and (max-width: 768px) { + .is-inline-mobile { + display: inline !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-tablet { + display: inline !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-tablet-only { + display: inline !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-touch { + display: inline !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-desktop { + display: inline !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-desktop-only { + display: inline !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-widescreen { + display: inline !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-widescreen-only { + display: inline !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-fullhd { + display: inline !important; } } + +.is-inline-block { + display: inline-block !important; } + +@media screen and (max-width: 768px) { + .is-inline-block-mobile { + display: inline-block !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-block-tablet { + display: inline-block !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-block-tablet-only { + display: inline-block !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-block-touch { + display: inline-block !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-block-desktop { + display: inline-block !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-block-desktop-only { + display: inline-block !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-block-widescreen { + display: inline-block !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-block-widescreen-only { + display: inline-block !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-block-fullhd { + display: inline-block !important; } } + +.is-inline-flex { + display: inline-flex !important; } + +@media screen and (max-width: 768px) { + .is-inline-flex-mobile { + display: inline-flex !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-flex-tablet { + display: inline-flex !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-flex-tablet-only { + display: inline-flex !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-flex-touch { + display: inline-flex !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-flex-desktop { + display: inline-flex !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-flex-desktop-only { + display: inline-flex !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-flex-widescreen { + display: inline-flex !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-flex-widescreen-only { + display: inline-flex !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-flex-fullhd { + display: inline-flex !important; } } + +.is-hidden { + display: none !important; } + +.is-sr-only { + border: none !important; + clip: rect(0, 0, 0, 0) !important; + height: 0.01em !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + white-space: nowrap !important; + width: 0.01em !important; } + +@media screen and (max-width: 768px) { + .is-hidden-mobile { + display: none !important; } } + +@media screen and (min-width: 769px), print { + .is-hidden-tablet { + display: none !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-hidden-tablet-only { + display: none !important; } } + +@media screen and (max-width: 1055px) { + .is-hidden-touch { + display: none !important; } } + +@media screen and (min-width: 1056px) { + .is-hidden-desktop { + display: none !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-hidden-desktop-only { + display: none !important; } } + +@media screen and (min-width: 1216px) { + .is-hidden-widescreen { + display: none !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-hidden-widescreen-only { + display: none !important; } } + +@media screen and (min-width: 1408px) { + .is-hidden-fullhd { + display: none !important; } } + +.is-invisible { + visibility: hidden !important; } + +@media screen and (max-width: 768px) { + .is-invisible-mobile { + visibility: hidden !important; } } + +@media screen and (min-width: 769px), print { + .is-invisible-tablet { + visibility: hidden !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-invisible-tablet-only { + visibility: hidden !important; } } + +@media screen and (max-width: 1055px) { + .is-invisible-touch { + visibility: hidden !important; } } + +@media screen and (min-width: 1056px) { + .is-invisible-desktop { + visibility: hidden !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-invisible-desktop-only { + visibility: hidden !important; } } + +@media screen and (min-width: 1216px) { + .is-invisible-widescreen { + visibility: hidden !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-invisible-widescreen-only { + visibility: hidden !important; } } + +@media screen and (min-width: 1408px) { + .is-invisible-fullhd { + visibility: hidden !important; } } + +.is-marginless { + margin: 0 !important; } + +.is-paddingless { + padding: 0 !important; } + +.is-radiusless { + border-radius: 0 !important; } + +.is-shadowless { + box-shadow: none !important; } + +.is-relative { + position: relative !important; } + +html.theme--documenter-dark { + /* This file contain the overall layout. + * + * The main container is
    that is identified by id #documenter. + */ + /*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/ + /* Comment */ + /* Red */ + /* Orange */ + /* Yellow */ + /* Green */ + /* Blue */ + /* Purple */ } + html.theme--documenter-dark html { + background-color: #1f2424; + font-size: 16px; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + min-width: 300px; + overflow-x: auto; + overflow-y: scroll; + text-rendering: optimizeLegibility; + text-size-adjust: 100%; } + html.theme--documenter-dark article, + html.theme--documenter-dark aside, + html.theme--documenter-dark figure, + html.theme--documenter-dark footer, + html.theme--documenter-dark header, + html.theme--documenter-dark hgroup, + html.theme--documenter-dark section { + display: block; } + html.theme--documenter-dark body, + html.theme--documenter-dark button, + html.theme--documenter-dark input, + html.theme--documenter-dark select, + html.theme--documenter-dark textarea { + font-family: "Lato Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif; } + html.theme--documenter-dark code, + html.theme--documenter-dark pre { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; + font-family: "JuliaMono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace; } + html.theme--documenter-dark body { + color: #fff; + font-size: 1em; + font-weight: 400; + line-height: 1.5; } + html.theme--documenter-dark a { + color: #1abc9c; + cursor: pointer; + text-decoration: none; } + html.theme--documenter-dark a strong { + color: currentColor; } + html.theme--documenter-dark a:hover { + color: #1dd2af; } + html.theme--documenter-dark code { + background-color: rgba(255, 255, 255, 0.05); + color: #ececec; + font-size: 0.875em; + font-weight: normal; + padding: 0.1em; } + html.theme--documenter-dark hr { + background-color: #282f2f; + border: none; + display: block; + height: 2px; + margin: 1.5rem 0; } + html.theme--documenter-dark img { + height: auto; + max-width: 100%; } + html.theme--documenter-dark input[type="checkbox"], + html.theme--documenter-dark input[type="radio"] { + vertical-align: baseline; } + html.theme--documenter-dark small { + font-size: 0.875em; } + html.theme--documenter-dark span { + font-style: inherit; + font-weight: inherit; } + html.theme--documenter-dark strong { + color: #f2f2f2; + font-weight: 700; } + html.theme--documenter-dark fieldset { + border: none; } + html.theme--documenter-dark pre { + -webkit-overflow-scrolling: touch; + background-color: #282f2f; + color: #fff; + font-size: 0.875em; + overflow-x: auto; + padding: 1.25rem 1.5rem; + white-space: pre; + word-wrap: normal; } + html.theme--documenter-dark pre code { + background-color: transparent; + color: currentColor; + font-size: 1em; + padding: 0; } + html.theme--documenter-dark table td, + html.theme--documenter-dark table th { + vertical-align: top; } + html.theme--documenter-dark table td:not([align]), + html.theme--documenter-dark table th:not([align]) { + text-align: left; } + html.theme--documenter-dark table th { + color: #f2f2f2; } + html.theme--documenter-dark .box { + background-color: #343c3d; + border-radius: 8px; + box-shadow: none; + color: #fff; + display: block; + padding: 1.25rem; } + html.theme--documenter-dark a.box:hover, html.theme--documenter-dark a.box:focus { + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #1abc9c; } + html.theme--documenter-dark a.box:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #1abc9c; } + html.theme--documenter-dark .button { + background-color: #282f2f; + border-color: #4c5759; + border-width: 1px; + color: #375a7f; + cursor: pointer; + justify-content: center; + padding-bottom: calc(0.375em - 1px); + padding-left: 0.75em; + padding-right: 0.75em; + padding-top: calc(0.375em - 1px); + text-align: center; + white-space: nowrap; } + html.theme--documenter-dark .button strong { + color: inherit; } + html.theme--documenter-dark .button .icon, html.theme--documenter-dark .button .icon.is-small, html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search > input.icon, html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search > input.icon, html.theme--documenter-dark .button .icon.is-medium, html.theme--documenter-dark .button .icon.is-large { + height: 1.5em; + width: 1.5em; } + html.theme--documenter-dark .button .icon:first-child:not(:last-child) { + margin-left: calc(-0.375em - 1px); + margin-right: 0.1875em; } + html.theme--documenter-dark .button .icon:last-child:not(:first-child) { + margin-left: 0.1875em; + margin-right: calc(-0.375em - 1px); } + html.theme--documenter-dark .button .icon:first-child:last-child { + margin-left: calc(-0.375em - 1px); + margin-right: calc(-0.375em - 1px); } + html.theme--documenter-dark .button:hover, html.theme--documenter-dark .button.is-hovered { + border-color: #8c9b9d; + color: #f2f2f2; } + html.theme--documenter-dark .button:focus, html.theme--documenter-dark .button.is-focused { + border-color: #8c9b9d; + color: #17a689; } + html.theme--documenter-dark .button:focus:not(:active), html.theme--documenter-dark .button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .button:active, html.theme--documenter-dark .button.is-active { + border-color: #343c3d; + color: #f2f2f2; } + html.theme--documenter-dark .button.is-text { + background-color: transparent; + border-color: transparent; + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .button.is-text:hover, html.theme--documenter-dark .button.is-text.is-hovered, html.theme--documenter-dark .button.is-text:focus, html.theme--documenter-dark .button.is-text.is-focused { + background-color: #282f2f; + color: #f2f2f2; } + html.theme--documenter-dark .button.is-text:active, html.theme--documenter-dark .button.is-text.is-active { + background-color: #1d2122; + color: #f2f2f2; } + html.theme--documenter-dark .button.is-text[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-text { + background-color: transparent; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-white { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white:hover, html.theme--documenter-dark .button.is-white.is-hovered { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white:focus, html.theme--documenter-dark .button.is-white.is-focused { + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white:focus:not(:active), html.theme--documenter-dark .button.is-white.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + html.theme--documenter-dark .button.is-white:active, html.theme--documenter-dark .button.is-white.is-active { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-white { + background-color: white; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-white.is-inverted { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .button.is-white.is-inverted:hover, html.theme--documenter-dark .button.is-white.is-inverted.is-hovered { + background-color: black; } + html.theme--documenter-dark .button.is-white.is-inverted[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; + color: white; } + html.theme--documenter-dark .button.is-white.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + html.theme--documenter-dark .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + html.theme--documenter-dark .button.is-white.is-outlined:hover, html.theme--documenter-dark .button.is-white.is-outlined.is-hovered, html.theme--documenter-dark .button.is-white.is-outlined:focus, html.theme--documenter-dark .button.is-white.is-outlined.is-focused { + background-color: white; + border-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after { + border-color: transparent transparent white white !important; } + html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + html.theme--documenter-dark .button.is-white.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + html.theme--documenter-dark .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + html.theme--documenter-dark .button.is-black:hover, html.theme--documenter-dark .button.is-black.is-hovered { + background-color: #040404; + border-color: transparent; + color: white; } + html.theme--documenter-dark .button.is-black:focus, html.theme--documenter-dark .button.is-black.is-focused { + border-color: transparent; + color: white; } + html.theme--documenter-dark .button.is-black:focus:not(:active), html.theme--documenter-dark .button.is-black.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + html.theme--documenter-dark .button.is-black:active, html.theme--documenter-dark .button.is-black.is-active { + background-color: black; + border-color: transparent; + color: white; } + html.theme--documenter-dark .button.is-black[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-black.is-inverted { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-inverted:hover, html.theme--documenter-dark .button.is-black.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-black.is-inverted[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted { + background-color: white; + border-color: transparent; + box-shadow: none; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-loading::after { + border-color: transparent transparent white white !important; } + html.theme--documenter-dark .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-outlined:hover, html.theme--documenter-dark .button.is-black.is-outlined.is-hovered, html.theme--documenter-dark .button.is-black.is-outlined:focus, html.theme--documenter-dark .button.is-black.is-outlined.is-focused { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + html.theme--documenter-dark .button.is-black.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + html.theme--documenter-dark .button.is-light { + background-color: #ecf0f1; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .button.is-light:hover, html.theme--documenter-dark .button.is-light.is-hovered { + background-color: #e5eaec; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .button.is-light:focus, html.theme--documenter-dark .button.is-light.is-focused { + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .button.is-light:focus:not(:active), html.theme--documenter-dark .button.is-light.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } + html.theme--documenter-dark .button.is-light:active, html.theme--documenter-dark .button.is-light.is-active { + background-color: #dde4e6; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .button.is-light[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-light { + background-color: #ecf0f1; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-light.is-inverted { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-inverted:hover, html.theme--documenter-dark .button.is-light.is-inverted.is-hovered { + background-color: #1d2122; } + html.theme--documenter-dark .button.is-light.is-inverted[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted { + background-color: #282f2f; + border-color: transparent; + box-shadow: none; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-loading::after { + border-color: transparent transparent #282f2f #282f2f !important; } + html.theme--documenter-dark .button.is-light.is-outlined { + background-color: transparent; + border-color: #ecf0f1; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-outlined:hover, html.theme--documenter-dark .button.is-light.is-outlined.is-hovered, html.theme--documenter-dark .button.is-light.is-outlined:focus, html.theme--documenter-dark .button.is-light.is-outlined.is-focused { + background-color: #ecf0f1; + border-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after { + border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } + html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #282f2f #282f2f !important; } + html.theme--documenter-dark .button.is-light.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined { + background-color: transparent; + border-color: #ecf0f1; + box-shadow: none; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: #282f2f; + color: #282f2f; } + html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } + html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: #282f2f; + box-shadow: none; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark, html.theme--documenter-dark .content kbd.button { + background-color: #282f2f; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark:hover, html.theme--documenter-dark .content kbd.button:hover, html.theme--documenter-dark .button.is-dark.is-hovered, html.theme--documenter-dark .content kbd.button.is-hovered { + background-color: #232829; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark:focus, html.theme--documenter-dark .content kbd.button:focus, html.theme--documenter-dark .button.is-dark.is-focused, html.theme--documenter-dark .content kbd.button.is-focused { + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark:focus:not(:active), html.theme--documenter-dark .content kbd.button:focus:not(:active), html.theme--documenter-dark .button.is-dark.is-focused:not(:active), html.theme--documenter-dark .content kbd.button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } + html.theme--documenter-dark .button.is-dark:active, html.theme--documenter-dark .content kbd.button:active, html.theme--documenter-dark .button.is-dark.is-active, html.theme--documenter-dark .content kbd.button.is-active { + background-color: #1d2122; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark[disabled], html.theme--documenter-dark .content kbd.button[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-dark, fieldset[disabled] html.theme--documenter-dark .content kbd.button { + background-color: #282f2f; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-dark.is-inverted, html.theme--documenter-dark .content kbd.button.is-inverted { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-inverted:hover, html.theme--documenter-dark .content kbd.button.is-inverted:hover, html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered, html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered { + background-color: #dde4e6; } + html.theme--documenter-dark .button.is-dark.is-inverted[disabled], html.theme--documenter-dark .content kbd.button.is-inverted[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted, fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted { + background-color: #ecf0f1; + border-color: transparent; + box-shadow: none; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-loading::after, html.theme--documenter-dark .content kbd.button.is-loading::after { + border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } + html.theme--documenter-dark .button.is-dark.is-outlined, html.theme--documenter-dark .content kbd.button.is-outlined { + background-color: transparent; + border-color: #282f2f; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-outlined:hover, html.theme--documenter-dark .content kbd.button.is-outlined:hover, html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered, html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered, html.theme--documenter-dark .button.is-dark.is-outlined:focus, html.theme--documenter-dark .content kbd.button.is-outlined:focus, html.theme--documenter-dark .button.is-dark.is-outlined.is-focused, html.theme--documenter-dark .content kbd.button.is-outlined.is-focused { + background-color: #282f2f; + border-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after { + border-color: transparent transparent #282f2f #282f2f !important; } + html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } + html.theme--documenter-dark .button.is-dark.is-outlined[disabled], html.theme--documenter-dark .content kbd.button.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined, fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined { + background-color: transparent; + border-color: #282f2f; + box-shadow: none; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined { + background-color: transparent; + border-color: #ecf0f1; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #282f2f #282f2f !important; } + html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled], html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined, fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined { + background-color: transparent; + border-color: #ecf0f1; + box-shadow: none; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-primary, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink { + background-color: #375a7f; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-primary:hover, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-hovered.docs-sourcelink { + background-color: #335476; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-primary:focus, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-primary:focus:not(:active), html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus:not(:active), html.theme--documenter-dark .button.is-primary.is-focused:not(:active), html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink:not(:active) { + box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } + html.theme--documenter-dark .button.is-primary:active, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:active, html.theme--documenter-dark .button.is-primary.is-active, html.theme--documenter-dark .docstring > section > a.button.is-active.docs-sourcelink { + background-color: #2f4d6d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-primary[disabled], html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-primary, fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink { + background-color: #375a7f; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-primary.is-inverted, html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink { + background-color: #fff; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-inverted:hover, html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-hovered.docs-sourcelink { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-primary.is-inverted[disabled], html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted, fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-loading::after, html.theme--documenter-dark .docstring > section > a.button.is-loading.docs-sourcelink::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-primary.is-outlined, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #375a7f; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-outlined:hover, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-outlined:focus, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-outlined.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-focused.docs-sourcelink { + background-color: #375a7f; + border-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink::after { + border-color: transparent transparent #375a7f #375a7f !important; } + html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:hover::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:focus::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-primary.is-outlined[disabled], html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined, fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #375a7f; + box-shadow: none; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-focused.docs-sourcelink { + background-color: #fff; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after { + border-color: transparent transparent #375a7f #375a7f !important; } + html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled], html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined, fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-link { + background-color: #1abc9c; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-link:hover, html.theme--documenter-dark .button.is-link.is-hovered { + background-color: #18b193; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-link:focus, html.theme--documenter-dark .button.is-link.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-link:focus:not(:active), html.theme--documenter-dark .button.is-link.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .button.is-link:active, html.theme--documenter-dark .button.is-link.is-active { + background-color: #17a689; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-link[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-link { + background-color: #1abc9c; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-link.is-inverted { + background-color: #fff; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-inverted:hover, html.theme--documenter-dark .button.is-link.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-link.is-inverted[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-link.is-outlined { + background-color: transparent; + border-color: #1abc9c; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-outlined:hover, html.theme--documenter-dark .button.is-link.is-outlined.is-hovered, html.theme--documenter-dark .button.is-link.is-outlined:focus, html.theme--documenter-dark .button.is-link.is-outlined.is-focused { + background-color: #1abc9c; + border-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after { + border-color: transparent transparent #1abc9c #1abc9c !important; } + html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-link.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined { + background-color: transparent; + border-color: #1abc9c; + box-shadow: none; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #1abc9c #1abc9c !important; } + html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-info { + background-color: #024c7d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-info:hover, html.theme--documenter-dark .button.is-info.is-hovered { + background-color: #024470; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-info:focus, html.theme--documenter-dark .button.is-info.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-info:focus:not(:active), html.theme--documenter-dark .button.is-info.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } + html.theme--documenter-dark .button.is-info:active, html.theme--documenter-dark .button.is-info.is-active { + background-color: #023d64; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-info[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-info { + background-color: #024c7d; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-info.is-inverted { + background-color: #fff; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-inverted:hover, html.theme--documenter-dark .button.is-info.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-info.is-inverted[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-info.is-outlined { + background-color: transparent; + border-color: #024c7d; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-outlined:hover, html.theme--documenter-dark .button.is-info.is-outlined.is-hovered, html.theme--documenter-dark .button.is-info.is-outlined:focus, html.theme--documenter-dark .button.is-info.is-outlined.is-focused { + background-color: #024c7d; + border-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after { + border-color: transparent transparent #024c7d #024c7d !important; } + html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-info.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined { + background-color: transparent; + border-color: #024c7d; + box-shadow: none; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #024c7d #024c7d !important; } + html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-success { + background-color: #008438; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-success:hover, html.theme--documenter-dark .button.is-success.is-hovered { + background-color: #007733; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-success:focus, html.theme--documenter-dark .button.is-success.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-success:focus:not(:active), html.theme--documenter-dark .button.is-success.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } + html.theme--documenter-dark .button.is-success:active, html.theme--documenter-dark .button.is-success.is-active { + background-color: #006b2d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-success[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-success { + background-color: #008438; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-success.is-inverted { + background-color: #fff; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-inverted:hover, html.theme--documenter-dark .button.is-success.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-success.is-inverted[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-success.is-outlined { + background-color: transparent; + border-color: #008438; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-outlined:hover, html.theme--documenter-dark .button.is-success.is-outlined.is-hovered, html.theme--documenter-dark .button.is-success.is-outlined:focus, html.theme--documenter-dark .button.is-success.is-outlined.is-focused { + background-color: #008438; + border-color: #008438; + color: #fff; } + html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after { + border-color: transparent transparent #008438 #008438 !important; } + html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-success.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined { + background-color: transparent; + border-color: #008438; + box-shadow: none; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #008438 #008438 !important; } + html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-warning { + background-color: #ad8100; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-warning:hover, html.theme--documenter-dark .button.is-warning.is-hovered { + background-color: #a07700; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-warning:focus, html.theme--documenter-dark .button.is-warning.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-warning:focus:not(:active), html.theme--documenter-dark .button.is-warning.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } + html.theme--documenter-dark .button.is-warning:active, html.theme--documenter-dark .button.is-warning.is-active { + background-color: #946e00; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-warning[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-warning { + background-color: #ad8100; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-warning.is-inverted { + background-color: #fff; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-inverted:hover, html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-warning.is-inverted[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ad8100; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-outlined:hover, html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered, html.theme--documenter-dark .button.is-warning.is-outlined:focus, html.theme--documenter-dark .button.is-warning.is-outlined.is-focused { + background-color: #ad8100; + border-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after { + border-color: transparent transparent #ad8100 #ad8100 !important; } + html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-warning.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ad8100; + box-shadow: none; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ad8100 #ad8100 !important; } + html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-danger { + background-color: #9e1b0d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-danger:hover, html.theme--documenter-dark .button.is-danger.is-hovered { + background-color: #92190c; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-danger:focus, html.theme--documenter-dark .button.is-danger.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-danger:focus:not(:active), html.theme--documenter-dark .button.is-danger.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } + html.theme--documenter-dark .button.is-danger:active, html.theme--documenter-dark .button.is-danger.is-active { + background-color: #86170b; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-danger[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-danger { + background-color: #9e1b0d; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-danger.is-inverted { + background-color: #fff; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-inverted:hover, html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-danger.is-inverted[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-danger.is-outlined { + background-color: transparent; + border-color: #9e1b0d; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-outlined:hover, html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered, html.theme--documenter-dark .button.is-danger.is-outlined:focus, html.theme--documenter-dark .button.is-danger.is-outlined.is-focused { + background-color: #9e1b0d; + border-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after { + border-color: transparent transparent #9e1b0d #9e1b0d !important; } + html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-danger.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined { + background-color: transparent; + border-color: #9e1b0d; + box-shadow: none; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #9e1b0d #9e1b0d !important; } + html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled], fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.button { + border-radius: 3px; + font-size: 0.85em; } + html.theme--documenter-dark .button.is-normal { + font-size: 15px; } + html.theme--documenter-dark .button.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .button.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .button[disabled], fieldset[disabled] html.theme--documenter-dark .button { + background-color: #8c9b9d; + border-color: #dbdee0; + box-shadow: none; + opacity: 0.5; } + html.theme--documenter-dark .button.is-fullwidth { + display: flex; + width: 100%; } + html.theme--documenter-dark .button.is-loading { + color: transparent !important; + pointer-events: none; } + html.theme--documenter-dark .button.is-loading::after { + position: absolute; + left: calc(50% - (1em / 2)); + top: calc(50% - (1em / 2)); + position: absolute !important; } + html.theme--documenter-dark .button.is-static { + background-color: #282f2f; + border-color: #5e6d6f; + color: #dbdee0; + box-shadow: none; + pointer-events: none; } + html.theme--documenter-dark .button.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.button { + border-radius: 290486px; + padding-left: 1em; + padding-right: 1em; } + html.theme--documenter-dark .buttons { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + html.theme--documenter-dark .buttons .button { + margin-bottom: 0.5rem; } + html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth) { + margin-right: 0.5rem; } + html.theme--documenter-dark .buttons:last-child { + margin-bottom: -0.5rem; } + html.theme--documenter-dark .buttons:not(:last-child) { + margin-bottom: 1rem; } + html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { + border-radius: 3px; + font-size: 0.85em; } + html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { + font-size: 1.25rem; } + html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { + font-size: 1.5rem; } + html.theme--documenter-dark .buttons.has-addons .button:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + html.theme--documenter-dark .buttons.has-addons .button:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + margin-right: -1px; } + html.theme--documenter-dark .buttons.has-addons .button:last-child { + margin-right: 0; } + html.theme--documenter-dark .buttons.has-addons .button:hover, html.theme--documenter-dark .buttons.has-addons .button.is-hovered { + z-index: 2; } + html.theme--documenter-dark .buttons.has-addons .button:focus, html.theme--documenter-dark .buttons.has-addons .button.is-focused, html.theme--documenter-dark .buttons.has-addons .button:active, html.theme--documenter-dark .buttons.has-addons .button.is-active, html.theme--documenter-dark .buttons.has-addons .button.is-selected { + z-index: 3; } + html.theme--documenter-dark .buttons.has-addons .button:focus:hover, html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover, html.theme--documenter-dark .buttons.has-addons .button:active:hover, html.theme--documenter-dark .buttons.has-addons .button.is-active:hover, html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover { + z-index: 4; } + html.theme--documenter-dark .buttons.has-addons .button.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .buttons.is-centered { + justify-content: center; } + html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + html.theme--documenter-dark .buttons.is-right { + justify-content: flex-end; } + html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + html.theme--documenter-dark .container { + flex-grow: 1; + margin: 0 auto; + position: relative; + width: auto; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .container { + max-width: 992px; } + html.theme--documenter-dark .container.is-fluid { + margin-left: 32px; + margin-right: 32px; + max-width: none; } } + @media screen and (max-width: 1215px) { + html.theme--documenter-dark .container.is-widescreen { + max-width: 1152px; } } + @media screen and (max-width: 1407px) { + html.theme--documenter-dark .container.is-fullhd { + max-width: 1344px; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .container { + max-width: 1152px; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .container { + max-width: 1344px; } } + html.theme--documenter-dark .content li + li { + margin-top: 0.25em; } + html.theme--documenter-dark .content p:not(:last-child), + html.theme--documenter-dark .content dl:not(:last-child), + html.theme--documenter-dark .content ol:not(:last-child), + html.theme--documenter-dark .content ul:not(:last-child), + html.theme--documenter-dark .content blockquote:not(:last-child), + html.theme--documenter-dark .content pre:not(:last-child), + html.theme--documenter-dark .content table:not(:last-child) { + margin-bottom: 1em; } + html.theme--documenter-dark .content h1, + html.theme--documenter-dark .content h2, + html.theme--documenter-dark .content h3, + html.theme--documenter-dark .content h4, + html.theme--documenter-dark .content h5, + html.theme--documenter-dark .content h6 { + color: #f2f2f2; + font-weight: 600; + line-height: 1.125; } + html.theme--documenter-dark .content h1 { + font-size: 2em; + margin-bottom: 0.5em; } + html.theme--documenter-dark .content h1:not(:first-child) { + margin-top: 1em; } + html.theme--documenter-dark .content h2 { + font-size: 1.75em; + margin-bottom: 0.5714em; } + html.theme--documenter-dark .content h2:not(:first-child) { + margin-top: 1.1428em; } + html.theme--documenter-dark .content h3 { + font-size: 1.5em; + margin-bottom: 0.6666em; } + html.theme--documenter-dark .content h3:not(:first-child) { + margin-top: 1.3333em; } + html.theme--documenter-dark .content h4 { + font-size: 1.25em; + margin-bottom: 0.8em; } + html.theme--documenter-dark .content h5 { + font-size: 1.125em; + margin-bottom: 0.8888em; } + html.theme--documenter-dark .content h6 { + font-size: 1em; + margin-bottom: 1em; } + html.theme--documenter-dark .content blockquote { + background-color: #282f2f; + border-left: 5px solid #5e6d6f; + padding: 1.25em 1.5em; } + html.theme--documenter-dark .content ol { + list-style-position: outside; + margin-left: 2em; + margin-top: 1em; } + html.theme--documenter-dark .content ol:not([type]) { + list-style-type: decimal; } + html.theme--documenter-dark .content ol.is-lower-alpha:not([type]) { + list-style-type: lower-alpha; } + html.theme--documenter-dark .content ol.is-lower-roman:not([type]) { + list-style-type: lower-roman; } + html.theme--documenter-dark .content ol.is-upper-alpha:not([type]) { + list-style-type: upper-alpha; } + html.theme--documenter-dark .content ol.is-upper-roman:not([type]) { + list-style-type: upper-roman; } + html.theme--documenter-dark .content ul { + list-style: disc outside; + margin-left: 2em; + margin-top: 1em; } + html.theme--documenter-dark .content ul ul { + list-style-type: circle; + margin-top: 0.5em; } + html.theme--documenter-dark .content ul ul ul { + list-style-type: square; } + html.theme--documenter-dark .content dd { + margin-left: 2em; } + html.theme--documenter-dark .content figure { + margin-left: 2em; + margin-right: 2em; + text-align: center; } + html.theme--documenter-dark .content figure:not(:first-child) { + margin-top: 2em; } + html.theme--documenter-dark .content figure:not(:last-child) { + margin-bottom: 2em; } + html.theme--documenter-dark .content figure img { + display: inline-block; } + html.theme--documenter-dark .content figure figcaption { + font-style: italic; } + html.theme--documenter-dark .content pre { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding: 0; + white-space: pre; + word-wrap: normal; } + html.theme--documenter-dark .content sup, + html.theme--documenter-dark .content sub { + font-size: 75%; } + html.theme--documenter-dark .content table { + width: 100%; } + html.theme--documenter-dark .content table td, + html.theme--documenter-dark .content table th { + border: 1px solid #5e6d6f; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; } + html.theme--documenter-dark .content table th { + color: #f2f2f2; } + html.theme--documenter-dark .content table th:not([align]) { + text-align: left; } + html.theme--documenter-dark .content table thead td, + html.theme--documenter-dark .content table thead th { + border-width: 0 0 2px; + color: #f2f2f2; } + html.theme--documenter-dark .content table tfoot td, + html.theme--documenter-dark .content table tfoot th { + border-width: 2px 0 0; + color: #f2f2f2; } + html.theme--documenter-dark .content table tbody tr:last-child td, + html.theme--documenter-dark .content table tbody tr:last-child th { + border-bottom-width: 0; } + html.theme--documenter-dark .content .tabs li + li { + margin-top: 0; } + html.theme--documenter-dark .content.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.content { + font-size: 0.85em; } + html.theme--documenter-dark .content.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .content.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .icon { + align-items: center; + display: inline-flex; + justify-content: center; + height: 1.5rem; + width: 1.5rem; } + html.theme--documenter-dark .icon.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.icon { + height: 1rem; + width: 1rem; } + html.theme--documenter-dark .icon.is-medium { + height: 2rem; + width: 2rem; } + html.theme--documenter-dark .icon.is-large { + height: 3rem; + width: 3rem; } + html.theme--documenter-dark .image, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img { + display: block; + position: relative; } + html.theme--documenter-dark .image img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img img { + display: block; + height: auto; + width: 100%; } + html.theme--documenter-dark .image img.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img img.is-rounded { + border-radius: 290486px; } + html.theme--documenter-dark .image.is-square img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square img, + html.theme--documenter-dark .image.is-square .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, html.theme--documenter-dark .image.is-1by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 img, + html.theme--documenter-dark .image.is-1by1 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, html.theme--documenter-dark .image.is-5by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 img, + html.theme--documenter-dark .image.is-5by4 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, html.theme--documenter-dark .image.is-4by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 img, + html.theme--documenter-dark .image.is-4by3 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, html.theme--documenter-dark .image.is-3by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 img, + html.theme--documenter-dark .image.is-3by2 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, html.theme--documenter-dark .image.is-5by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 img, + html.theme--documenter-dark .image.is-5by3 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, html.theme--documenter-dark .image.is-16by9 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 img, + html.theme--documenter-dark .image.is-16by9 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, html.theme--documenter-dark .image.is-2by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 img, + html.theme--documenter-dark .image.is-2by1 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, html.theme--documenter-dark .image.is-3by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 img, + html.theme--documenter-dark .image.is-3by1 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, html.theme--documenter-dark .image.is-4by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 img, + html.theme--documenter-dark .image.is-4by5 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, html.theme--documenter-dark .image.is-3by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 img, + html.theme--documenter-dark .image.is-3by4 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, html.theme--documenter-dark .image.is-2by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 img, + html.theme--documenter-dark .image.is-2by3 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, html.theme--documenter-dark .image.is-3by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 img, + html.theme--documenter-dark .image.is-3by5 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, html.theme--documenter-dark .image.is-9by16 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 img, + html.theme--documenter-dark .image.is-9by16 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, html.theme--documenter-dark .image.is-1by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 img, + html.theme--documenter-dark .image.is-1by2 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, html.theme--documenter-dark .image.is-1by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 img, + html.theme--documenter-dark .image.is-1by3 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio { + height: 100%; + width: 100%; } + html.theme--documenter-dark .image.is-square, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square, html.theme--documenter-dark .image.is-1by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 { + padding-top: 100%; } + html.theme--documenter-dark .image.is-5by4, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 { + padding-top: 80%; } + html.theme--documenter-dark .image.is-4by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 { + padding-top: 75%; } + html.theme--documenter-dark .image.is-3by2, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 { + padding-top: 66.6666%; } + html.theme--documenter-dark .image.is-5by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 { + padding-top: 60%; } + html.theme--documenter-dark .image.is-16by9, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 { + padding-top: 56.25%; } + html.theme--documenter-dark .image.is-2by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 { + padding-top: 50%; } + html.theme--documenter-dark .image.is-3by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 { + padding-top: 33.3333%; } + html.theme--documenter-dark .image.is-4by5, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 { + padding-top: 125%; } + html.theme--documenter-dark .image.is-3by4, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 { + padding-top: 133.3333%; } + html.theme--documenter-dark .image.is-2by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 { + padding-top: 150%; } + html.theme--documenter-dark .image.is-3by5, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 { + padding-top: 166.6666%; } + html.theme--documenter-dark .image.is-9by16, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 { + padding-top: 177.7777%; } + html.theme--documenter-dark .image.is-1by2, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 { + padding-top: 200%; } + html.theme--documenter-dark .image.is-1by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 { + padding-top: 300%; } + html.theme--documenter-dark .image.is-16x16, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16x16 { + height: 16px; + width: 16px; } + html.theme--documenter-dark .image.is-24x24, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-24x24 { + height: 24px; + width: 24px; } + html.theme--documenter-dark .image.is-32x32, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-32x32 { + height: 32px; + width: 32px; } + html.theme--documenter-dark .image.is-48x48, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-48x48 { + height: 48px; + width: 48px; } + html.theme--documenter-dark .image.is-64x64, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-64x64 { + height: 64px; + width: 64px; } + html.theme--documenter-dark .image.is-96x96, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-96x96 { + height: 96px; + width: 96px; } + html.theme--documenter-dark .image.is-128x128, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-128x128 { + height: 128px; + width: 128px; } + html.theme--documenter-dark .notification { + background-color: #282f2f; + border-radius: 0.4em; + padding: 1.25rem 2.5rem 1.25rem 1.5rem; + position: relative; } + html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; } + html.theme--documenter-dark .notification strong { + color: currentColor; } + html.theme--documenter-dark .notification code, + html.theme--documenter-dark .notification pre { + background: white; } + html.theme--documenter-dark .notification pre code { + background: transparent; } + html.theme--documenter-dark .notification > .delete { + position: absolute; + right: 0.5rem; + top: 0.5rem; } + html.theme--documenter-dark .notification .title, + html.theme--documenter-dark .notification .subtitle, + html.theme--documenter-dark .notification .content { + color: currentColor; } + html.theme--documenter-dark .notification.is-white { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .notification.is-black { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .notification.is-light { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .notification.is-dark, html.theme--documenter-dark .content kbd.notification { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .notification.is-primary, html.theme--documenter-dark .docstring > section > a.notification.docs-sourcelink { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .notification.is-link { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .notification.is-info { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .notification.is-success { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .notification.is-warning { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .notification.is-danger { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .progress { + -moz-appearance: none; + -webkit-appearance: none; + border: none; + border-radius: 290486px; + display: block; + height: 15px; + overflow: hidden; + padding: 0; + width: 100%; } + html.theme--documenter-dark .progress::-webkit-progress-bar { + background-color: #5e6d6f; } + html.theme--documenter-dark .progress::-webkit-progress-value { + background-color: #dbdee0; } + html.theme--documenter-dark .progress::-moz-progress-bar { + background-color: #dbdee0; } + html.theme--documenter-dark .progress::-ms-fill { + background-color: #dbdee0; + border: none; } + html.theme--documenter-dark .progress.is-white::-webkit-progress-value { + background-color: white; } + html.theme--documenter-dark .progress.is-white::-moz-progress-bar { + background-color: white; } + html.theme--documenter-dark .progress.is-white::-ms-fill { + background-color: white; } + html.theme--documenter-dark .progress.is-white:indeterminate { + background-image: linear-gradient(to right, white 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-black::-webkit-progress-value { + background-color: #0a0a0a; } + html.theme--documenter-dark .progress.is-black::-moz-progress-bar { + background-color: #0a0a0a; } + html.theme--documenter-dark .progress.is-black::-ms-fill { + background-color: #0a0a0a; } + html.theme--documenter-dark .progress.is-black:indeterminate { + background-image: linear-gradient(to right, #0a0a0a 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-light::-webkit-progress-value { + background-color: #ecf0f1; } + html.theme--documenter-dark .progress.is-light::-moz-progress-bar { + background-color: #ecf0f1; } + html.theme--documenter-dark .progress.is-light::-ms-fill { + background-color: #ecf0f1; } + html.theme--documenter-dark .progress.is-light:indeterminate { + background-image: linear-gradient(to right, #ecf0f1 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-dark::-webkit-progress-value, html.theme--documenter-dark .content kbd.progress::-webkit-progress-value { + background-color: #282f2f; } + html.theme--documenter-dark .progress.is-dark::-moz-progress-bar, html.theme--documenter-dark .content kbd.progress::-moz-progress-bar { + background-color: #282f2f; } + html.theme--documenter-dark .progress.is-dark::-ms-fill, html.theme--documenter-dark .content kbd.progress::-ms-fill { + background-color: #282f2f; } + html.theme--documenter-dark .progress.is-dark:indeterminate, html.theme--documenter-dark .content kbd.progress:indeterminate { + background-image: linear-gradient(to right, #282f2f 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-primary::-webkit-progress-value, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-webkit-progress-value { + background-color: #375a7f; } + html.theme--documenter-dark .progress.is-primary::-moz-progress-bar, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-moz-progress-bar { + background-color: #375a7f; } + html.theme--documenter-dark .progress.is-primary::-ms-fill, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-ms-fill { + background-color: #375a7f; } + html.theme--documenter-dark .progress.is-primary:indeterminate, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink:indeterminate { + background-image: linear-gradient(to right, #375a7f 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-link::-webkit-progress-value { + background-color: #1abc9c; } + html.theme--documenter-dark .progress.is-link::-moz-progress-bar { + background-color: #1abc9c; } + html.theme--documenter-dark .progress.is-link::-ms-fill { + background-color: #1abc9c; } + html.theme--documenter-dark .progress.is-link:indeterminate { + background-image: linear-gradient(to right, #1abc9c 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-info::-webkit-progress-value { + background-color: #024c7d; } + html.theme--documenter-dark .progress.is-info::-moz-progress-bar { + background-color: #024c7d; } + html.theme--documenter-dark .progress.is-info::-ms-fill { + background-color: #024c7d; } + html.theme--documenter-dark .progress.is-info:indeterminate { + background-image: linear-gradient(to right, #024c7d 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-success::-webkit-progress-value { + background-color: #008438; } + html.theme--documenter-dark .progress.is-success::-moz-progress-bar { + background-color: #008438; } + html.theme--documenter-dark .progress.is-success::-ms-fill { + background-color: #008438; } + html.theme--documenter-dark .progress.is-success:indeterminate { + background-image: linear-gradient(to right, #008438 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-warning::-webkit-progress-value { + background-color: #ad8100; } + html.theme--documenter-dark .progress.is-warning::-moz-progress-bar { + background-color: #ad8100; } + html.theme--documenter-dark .progress.is-warning::-ms-fill { + background-color: #ad8100; } + html.theme--documenter-dark .progress.is-warning:indeterminate { + background-image: linear-gradient(to right, #ad8100 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-danger::-webkit-progress-value { + background-color: #9e1b0d; } + html.theme--documenter-dark .progress.is-danger::-moz-progress-bar { + background-color: #9e1b0d; } + html.theme--documenter-dark .progress.is-danger::-ms-fill { + background-color: #9e1b0d; } + html.theme--documenter-dark .progress.is-danger:indeterminate { + background-image: linear-gradient(to right, #9e1b0d 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress:indeterminate { + animation-duration: 1.5s; + animation-iteration-count: infinite; + animation-name: moveIndeterminate; + animation-timing-function: linear; + background-color: #5e6d6f; + background-image: linear-gradient(to right, #fff 30%, #5e6d6f 30%); + background-position: top left; + background-repeat: no-repeat; + background-size: 150% 150%; } + html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar { + background-color: transparent; } + html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar { + background-color: transparent; } + html.theme--documenter-dark .progress.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.progress { + height: 0.85em; } + html.theme--documenter-dark .progress.is-medium { + height: 1.25rem; } + html.theme--documenter-dark .progress.is-large { + height: 1.5rem; } + +@keyframes moveIndeterminate { + from { + background-position: 200% 0; } + to { + background-position: -200% 0; } } + html.theme--documenter-dark .table { + background-color: #343c3d; + color: #fff; } + html.theme--documenter-dark .table td, + html.theme--documenter-dark .table th { + border: 1px solid #5e6d6f; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; } + html.theme--documenter-dark .table td.is-white, + html.theme--documenter-dark .table th.is-white { + background-color: white; + border-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .table td.is-black, + html.theme--documenter-dark .table th.is-black { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .table td.is-light, + html.theme--documenter-dark .table th.is-light { + background-color: #ecf0f1; + border-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .table td.is-dark, + html.theme--documenter-dark .table th.is-dark { + background-color: #282f2f; + border-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .table td.is-primary, + html.theme--documenter-dark .table th.is-primary { + background-color: #375a7f; + border-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .table td.is-link, + html.theme--documenter-dark .table th.is-link { + background-color: #1abc9c; + border-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .table td.is-info, + html.theme--documenter-dark .table th.is-info { + background-color: #024c7d; + border-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .table td.is-success, + html.theme--documenter-dark .table th.is-success { + background-color: #008438; + border-color: #008438; + color: #fff; } + html.theme--documenter-dark .table td.is-warning, + html.theme--documenter-dark .table th.is-warning { + background-color: #ad8100; + border-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .table td.is-danger, + html.theme--documenter-dark .table th.is-danger { + background-color: #9e1b0d; + border-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .table td.is-narrow, + html.theme--documenter-dark .table th.is-narrow { + white-space: nowrap; + width: 1%; } + html.theme--documenter-dark .table td.is-selected, + html.theme--documenter-dark .table th.is-selected { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .table td.is-selected a, + html.theme--documenter-dark .table td.is-selected strong, + html.theme--documenter-dark .table th.is-selected a, + html.theme--documenter-dark .table th.is-selected strong { + color: currentColor; } + html.theme--documenter-dark .table th { + color: #f2f2f2; } + html.theme--documenter-dark .table th:not([align]) { + text-align: left; } + html.theme--documenter-dark .table tr.is-selected { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .table tr.is-selected a, + html.theme--documenter-dark .table tr.is-selected strong { + color: currentColor; } + html.theme--documenter-dark .table tr.is-selected td, + html.theme--documenter-dark .table tr.is-selected th { + border-color: #fff; + color: currentColor; } + html.theme--documenter-dark .table thead { + background-color: transparent; } + html.theme--documenter-dark .table thead td, + html.theme--documenter-dark .table thead th { + border-width: 0 0 2px; + color: #f2f2f2; } + html.theme--documenter-dark .table tfoot { + background-color: transparent; } + html.theme--documenter-dark .table tfoot td, + html.theme--documenter-dark .table tfoot th { + border-width: 2px 0 0; + color: #f2f2f2; } + html.theme--documenter-dark .table tbody { + background-color: transparent; } + html.theme--documenter-dark .table tbody tr:last-child td, + html.theme--documenter-dark .table tbody tr:last-child th { + border-bottom-width: 0; } + html.theme--documenter-dark .table.is-bordered td, + html.theme--documenter-dark .table.is-bordered th { + border-width: 1px; } + html.theme--documenter-dark .table.is-bordered tr:last-child td, + html.theme--documenter-dark .table.is-bordered tr:last-child th { + border-bottom-width: 1px; } + html.theme--documenter-dark .table.is-fullwidth { + width: 100%; } + html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover { + background-color: #282f2f; } + html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover { + background-color: #282f2f; } + html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) { + background-color: #2d3435; } + html.theme--documenter-dark .table.is-narrow td, + html.theme--documenter-dark .table.is-narrow th { + padding: 0.25em 0.5em; } + html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even) { + background-color: #282f2f; } + html.theme--documenter-dark .table-container { + -webkit-overflow-scrolling: touch; + overflow: auto; + overflow-y: hidden; + max-width: 100%; } + html.theme--documenter-dark .tags { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + html.theme--documenter-dark .tags .tag, html.theme--documenter-dark .tags .content kbd, html.theme--documenter-dark .content .tags kbd, html.theme--documenter-dark .tags .docstring > section > a.docs-sourcelink { + margin-bottom: 0.5rem; } + html.theme--documenter-dark .tags .tag:not(:last-child), html.theme--documenter-dark .tags .content kbd:not(:last-child), html.theme--documenter-dark .content .tags kbd:not(:last-child), html.theme--documenter-dark .tags .docstring > section > a.docs-sourcelink:not(:last-child) { + margin-right: 0.5rem; } + html.theme--documenter-dark .tags:last-child { + margin-bottom: -0.5rem; } + html.theme--documenter-dark .tags:not(:last-child) { + margin-bottom: 1rem; } + html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large), html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large), html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large), html.theme--documenter-dark .tags.are-medium .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-large) { + font-size: 15px; } + html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium), html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium), html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium), html.theme--documenter-dark .tags.are-large .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-medium) { + font-size: 1.25rem; } + html.theme--documenter-dark .tags.is-centered { + justify-content: center; } + html.theme--documenter-dark .tags.is-centered .tag, html.theme--documenter-dark .tags.is-centered .content kbd, html.theme--documenter-dark .content .tags.is-centered kbd, html.theme--documenter-dark .tags.is-centered .docstring > section > a.docs-sourcelink { + margin-right: 0.25rem; + margin-left: 0.25rem; } + html.theme--documenter-dark .tags.is-right { + justify-content: flex-end; } + html.theme--documenter-dark .tags.is-right .tag:not(:first-child), html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child), html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child), html.theme--documenter-dark .tags.is-right .docstring > section > a.docs-sourcelink:not(:first-child) { + margin-left: 0.5rem; } + html.theme--documenter-dark .tags.is-right .tag:not(:last-child), html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child), html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child), html.theme--documenter-dark .tags.is-right .docstring > section > a.docs-sourcelink:not(:last-child) { + margin-right: 0; } + html.theme--documenter-dark .tags.has-addons .tag, html.theme--documenter-dark .tags.has-addons .content kbd, html.theme--documenter-dark .content .tags.has-addons kbd, html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink { + margin-right: 0; } + html.theme--documenter-dark .tags.has-addons .tag:not(:first-child), html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child), html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child), html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink:not(:first-child) { + margin-left: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + html.theme--documenter-dark .tags.has-addons .tag:not(:last-child), html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child), html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child), html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + html.theme--documenter-dark .tag:not(body), html.theme--documenter-dark .content kbd:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) { + align-items: center; + background-color: #282f2f; + border-radius: 0.4em; + color: #fff; + display: inline-flex; + font-size: 0.85em; + height: 2em; + justify-content: center; + line-height: 1.5; + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; } + html.theme--documenter-dark .tag:not(body) .delete, html.theme--documenter-dark .content kbd:not(body) .delete, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .delete { + margin-left: 0.25rem; + margin-right: -0.375rem; } + html.theme--documenter-dark .tag.is-white:not(body), html.theme--documenter-dark .content kbd.is-white:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-white:not(body) { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .tag.is-black:not(body), html.theme--documenter-dark .content kbd.is-black:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-black:not(body) { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .tag.is-light:not(body), html.theme--documenter-dark .content kbd.is-light:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-light:not(body) { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .tag.is-dark:not(body), html.theme--documenter-dark .content kbd:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-dark:not(body), html.theme--documenter-dark .content .docstring > section > kbd:not(body) { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .tag.is-primary:not(body), html.theme--documenter-dark .content kbd.is-primary:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .tag.is-link:not(body), html.theme--documenter-dark .content kbd.is-link:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-link:not(body) { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .tag.is-info:not(body), html.theme--documenter-dark .content kbd.is-info:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-info:not(body) { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .tag.is-success:not(body), html.theme--documenter-dark .content kbd.is-success:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-success:not(body) { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .tag.is-warning:not(body), html.theme--documenter-dark .content kbd.is-warning:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-warning:not(body) { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .tag.is-danger:not(body), html.theme--documenter-dark .content kbd.is-danger:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-danger:not(body) { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .tag.is-normal:not(body), html.theme--documenter-dark .content kbd.is-normal:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-normal:not(body) { + font-size: 0.85em; } + html.theme--documenter-dark .tag.is-medium:not(body), html.theme--documenter-dark .content kbd.is-medium:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-medium:not(body) { + font-size: 15px; } + html.theme--documenter-dark .tag.is-large:not(body), html.theme--documenter-dark .content kbd.is-large:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-large:not(body) { + font-size: 1.25rem; } + html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child), html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:not(:last-child) { + margin-left: -0.375em; + margin-right: 0.1875em; } + html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child), html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:last-child:not(:first-child) { + margin-left: 0.1875em; + margin-right: -0.375em; } + html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child, html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:last-child { + margin-left: -0.375em; + margin-right: -0.375em; } + html.theme--documenter-dark .tag.is-delete:not(body), html.theme--documenter-dark .content kbd.is-delete:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-delete:not(body) { + margin-left: 1px; + padding: 0; + position: relative; + width: 2em; } + html.theme--documenter-dark .tag.is-delete:not(body)::before, html.theme--documenter-dark .content kbd.is-delete:not(body)::before, html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-delete:not(body)::before, html.theme--documenter-dark .tag.is-delete:not(body)::after, html.theme--documenter-dark .content kbd.is-delete:not(body)::after, html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-delete:not(body)::after { + background-color: currentColor; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; } + html.theme--documenter-dark .tag.is-delete:not(body)::before, html.theme--documenter-dark .content kbd.is-delete:not(body)::before, html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-delete:not(body)::before { + height: 1px; + width: 50%; } + html.theme--documenter-dark .tag.is-delete:not(body)::after, html.theme--documenter-dark .content kbd.is-delete:not(body)::after, html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-delete:not(body)::after { + height: 50%; + width: 1px; } + html.theme--documenter-dark .tag.is-delete:not(body):hover, html.theme--documenter-dark .content kbd.is-delete:not(body):hover, html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-delete:not(body):hover, html.theme--documenter-dark .tag.is-delete:not(body):focus, html.theme--documenter-dark .content kbd.is-delete:not(body):focus, html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-delete:not(body):focus { + background-color: #1d2122; } + html.theme--documenter-dark .tag.is-delete:not(body):active, html.theme--documenter-dark .content kbd.is-delete:not(body):active, html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-delete:not(body):active { + background-color: #111414; } + html.theme--documenter-dark .tag.is-rounded:not(body), html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:not(body), html.theme--documenter-dark .content kbd.is-rounded:not(body), html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search > input:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink.is-rounded:not(body) { + border-radius: 290486px; } + html.theme--documenter-dark a.tag:hover, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:hover { + text-decoration: underline; } + html.theme--documenter-dark .title, + html.theme--documenter-dark .subtitle { + word-break: break-word; } + html.theme--documenter-dark .title em, + html.theme--documenter-dark .title span, + html.theme--documenter-dark .subtitle em, + html.theme--documenter-dark .subtitle span { + font-weight: inherit; } + html.theme--documenter-dark .title sub, + html.theme--documenter-dark .subtitle sub { + font-size: 0.75em; } + html.theme--documenter-dark .title sup, + html.theme--documenter-dark .subtitle sup { + font-size: 0.75em; } + html.theme--documenter-dark .title .tag, html.theme--documenter-dark .title .content kbd, html.theme--documenter-dark .content .title kbd, html.theme--documenter-dark .title .docstring > section > a.docs-sourcelink, + html.theme--documenter-dark .subtitle .tag, + html.theme--documenter-dark .subtitle .content kbd, + html.theme--documenter-dark .content .subtitle kbd, + html.theme--documenter-dark .subtitle .docstring > section > a.docs-sourcelink { + vertical-align: middle; } + html.theme--documenter-dark .title { + color: #fff; + font-size: 2rem; + font-weight: 500; + line-height: 1.125; } + html.theme--documenter-dark .title strong { + color: inherit; + font-weight: inherit; } + html.theme--documenter-dark .title + .highlight { + margin-top: -0.75rem; } + html.theme--documenter-dark .title:not(.is-spaced) + .subtitle { + margin-top: -1.25rem; } + html.theme--documenter-dark .title.is-1 { + font-size: 3rem; } + html.theme--documenter-dark .title.is-2 { + font-size: 2.5rem; } + html.theme--documenter-dark .title.is-3 { + font-size: 2rem; } + html.theme--documenter-dark .title.is-4 { + font-size: 1.5rem; } + html.theme--documenter-dark .title.is-5 { + font-size: 1.25rem; } + html.theme--documenter-dark .title.is-6 { + font-size: 15px; } + html.theme--documenter-dark .title.is-7 { + font-size: 0.85em; } + html.theme--documenter-dark .subtitle { + color: #8c9b9d; + font-size: 1.25rem; + font-weight: 400; + line-height: 1.25; } + html.theme--documenter-dark .subtitle strong { + color: #8c9b9d; + font-weight: 600; } + html.theme--documenter-dark .subtitle:not(.is-spaced) + .title { + margin-top: -1.25rem; } + html.theme--documenter-dark .subtitle.is-1 { + font-size: 3rem; } + html.theme--documenter-dark .subtitle.is-2 { + font-size: 2.5rem; } + html.theme--documenter-dark .subtitle.is-3 { + font-size: 2rem; } + html.theme--documenter-dark .subtitle.is-4 { + font-size: 1.5rem; } + html.theme--documenter-dark .subtitle.is-5 { + font-size: 1.25rem; } + html.theme--documenter-dark .subtitle.is-6 { + font-size: 15px; } + html.theme--documenter-dark .subtitle.is-7 { + font-size: 0.85em; } + html.theme--documenter-dark .heading { + display: block; + font-size: 11px; + letter-spacing: 1px; + margin-bottom: 5px; + text-transform: uppercase; } + html.theme--documenter-dark .highlight { + font-weight: 400; + max-width: 100%; + overflow: hidden; + padding: 0; } + html.theme--documenter-dark .highlight pre { + overflow: auto; + max-width: 100%; } + html.theme--documenter-dark .number { + align-items: center; + background-color: #282f2f; + border-radius: 290486px; + display: inline-flex; + font-size: 1.25rem; + height: 2em; + justify-content: center; + margin-right: 1.5rem; + min-width: 2.5em; + padding: 0.25rem 0.5rem; + text-align: center; + vertical-align: top; } + html.theme--documenter-dark .select select, html.theme--documenter-dark .textarea, html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { + background-color: #1f2424; + border-color: #5e6d6f; + border-radius: 0.4em; + color: #dbdee0; } + html.theme--documenter-dark .select select::-moz-placeholder, html.theme--documenter-dark .textarea::-moz-placeholder, html.theme--documenter-dark .input::-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-moz-placeholder { + color: rgba(219, 222, 224, 0.3); } + html.theme--documenter-dark .select select::-webkit-input-placeholder, html.theme--documenter-dark .textarea::-webkit-input-placeholder, html.theme--documenter-dark .input::-webkit-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder { + color: rgba(219, 222, 224, 0.3); } + html.theme--documenter-dark .select select:-moz-placeholder, html.theme--documenter-dark .textarea:-moz-placeholder, html.theme--documenter-dark .input:-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-moz-placeholder { + color: rgba(219, 222, 224, 0.3); } + html.theme--documenter-dark .select select:-ms-input-placeholder, html.theme--documenter-dark .textarea:-ms-input-placeholder, html.theme--documenter-dark .input:-ms-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder { + color: rgba(219, 222, 224, 0.3); } + html.theme--documenter-dark .select select:hover, html.theme--documenter-dark .textarea:hover, html.theme--documenter-dark .input:hover, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:hover, html.theme--documenter-dark .select select.is-hovered, html.theme--documenter-dark .is-hovered.textarea, html.theme--documenter-dark .is-hovered.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-hovered { + border-color: #8c9b9d; } + html.theme--documenter-dark .select select:focus, html.theme--documenter-dark .textarea:focus, html.theme--documenter-dark .input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:focus, html.theme--documenter-dark .select select.is-focused, html.theme--documenter-dark .is-focused.textarea, html.theme--documenter-dark .is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .select select:active, html.theme--documenter-dark .textarea:active, html.theme--documenter-dark .input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:active, html.theme--documenter-dark .select select.is-active, html.theme--documenter-dark .is-active.textarea, html.theme--documenter-dark .is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active { + border-color: #1abc9c; + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .select select[disabled], html.theme--documenter-dark .textarea[disabled], html.theme--documenter-dark .input[disabled], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled], fieldset[disabled] html.theme--documenter-dark .select select, fieldset[disabled] html.theme--documenter-dark .textarea, fieldset[disabled] html.theme--documenter-dark .input, fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { + background-color: #8c9b9d; + border-color: #282f2f; + box-shadow: none; + color: white; } + html.theme--documenter-dark .select select[disabled]::-moz-placeholder, html.theme--documenter-dark .textarea[disabled]::-moz-placeholder, html.theme--documenter-dark .input[disabled]::-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]::-moz-placeholder, fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder, fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder, fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder, fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-moz-placeholder { + color: rgba(255, 255, 255, 0.3); } + html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder, html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder, html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]::-webkit-input-placeholder, fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder, fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder, fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder, fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.3); } + html.theme--documenter-dark .select select[disabled]:-moz-placeholder, html.theme--documenter-dark .textarea[disabled]:-moz-placeholder, html.theme--documenter-dark .input[disabled]:-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]:-moz-placeholder, fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder, fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder, fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder, fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-moz-placeholder { + color: rgba(255, 255, 255, 0.3); } + html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder, html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder, html.theme--documenter-dark .input[disabled]:-ms-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]:-ms-input-placeholder, fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder, fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder, fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder, fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder { + color: rgba(255, 255, 255, 0.3); } + html.theme--documenter-dark .textarea, html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + max-width: 100%; + width: 100%; } + html.theme--documenter-dark .textarea[readonly], html.theme--documenter-dark .input[readonly], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[readonly] { + box-shadow: none; } + html.theme--documenter-dark .is-white.textarea, html.theme--documenter-dark .is-white.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white { + border-color: white; } + html.theme--documenter-dark .is-white.textarea:focus, html.theme--documenter-dark .is-white.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white:focus, html.theme--documenter-dark .is-white.is-focused.textarea, html.theme--documenter-dark .is-white.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-white.textarea:active, html.theme--documenter-dark .is-white.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white:active, html.theme--documenter-dark .is-white.is-active.textarea, html.theme--documenter-dark .is-white.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + html.theme--documenter-dark .is-black.textarea, html.theme--documenter-dark .is-black.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black { + border-color: #0a0a0a; } + html.theme--documenter-dark .is-black.textarea:focus, html.theme--documenter-dark .is-black.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black:focus, html.theme--documenter-dark .is-black.is-focused.textarea, html.theme--documenter-dark .is-black.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-black.textarea:active, html.theme--documenter-dark .is-black.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black:active, html.theme--documenter-dark .is-black.is-active.textarea, html.theme--documenter-dark .is-black.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + html.theme--documenter-dark .is-light.textarea, html.theme--documenter-dark .is-light.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light { + border-color: #ecf0f1; } + html.theme--documenter-dark .is-light.textarea:focus, html.theme--documenter-dark .is-light.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light:focus, html.theme--documenter-dark .is-light.is-focused.textarea, html.theme--documenter-dark .is-light.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-light.textarea:active, html.theme--documenter-dark .is-light.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light:active, html.theme--documenter-dark .is-light.is-active.textarea, html.theme--documenter-dark .is-light.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } + html.theme--documenter-dark .is-dark.textarea, html.theme--documenter-dark .content kbd.textarea, html.theme--documenter-dark .is-dark.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark, html.theme--documenter-dark .content kbd.input { + border-color: #282f2f; } + html.theme--documenter-dark .is-dark.textarea:focus, html.theme--documenter-dark .content kbd.textarea:focus, html.theme--documenter-dark .is-dark.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark:focus, html.theme--documenter-dark .content kbd.input:focus, html.theme--documenter-dark .is-dark.is-focused.textarea, html.theme--documenter-dark .content kbd.is-focused.textarea, html.theme--documenter-dark .is-dark.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .content kbd.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search > input.is-focused, html.theme--documenter-dark .is-dark.textarea:active, html.theme--documenter-dark .content kbd.textarea:active, html.theme--documenter-dark .is-dark.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark:active, html.theme--documenter-dark .content kbd.input:active, html.theme--documenter-dark .is-dark.is-active.textarea, html.theme--documenter-dark .content kbd.is-active.textarea, html.theme--documenter-dark .is-dark.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active, html.theme--documenter-dark .content kbd.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } + html.theme--documenter-dark .is-primary.textarea, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink, html.theme--documenter-dark .is-primary.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink { + border-color: #375a7f; } + html.theme--documenter-dark .is-primary.textarea:focus, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink:focus, html.theme--documenter-dark .is-primary.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary:focus, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink:focus, html.theme--documenter-dark .is-primary.is-focused.textarea, html.theme--documenter-dark .docstring > section > a.is-focused.textarea.docs-sourcelink, html.theme--documenter-dark .is-primary.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .docstring > section > a.is-focused.input.docs-sourcelink, html.theme--documenter-dark .is-primary.textarea:active, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink:active, html.theme--documenter-dark .is-primary.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary:active, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink:active, html.theme--documenter-dark .is-primary.is-active.textarea, html.theme--documenter-dark .docstring > section > a.is-active.textarea.docs-sourcelink, html.theme--documenter-dark .is-primary.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active, html.theme--documenter-dark .docstring > section > a.is-active.input.docs-sourcelink { + box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } + html.theme--documenter-dark .is-link.textarea, html.theme--documenter-dark .is-link.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link { + border-color: #1abc9c; } + html.theme--documenter-dark .is-link.textarea:focus, html.theme--documenter-dark .is-link.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link:focus, html.theme--documenter-dark .is-link.is-focused.textarea, html.theme--documenter-dark .is-link.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-link.textarea:active, html.theme--documenter-dark .is-link.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link:active, html.theme--documenter-dark .is-link.is-active.textarea, html.theme--documenter-dark .is-link.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .is-info.textarea, html.theme--documenter-dark .is-info.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info { + border-color: #024c7d; } + html.theme--documenter-dark .is-info.textarea:focus, html.theme--documenter-dark .is-info.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info:focus, html.theme--documenter-dark .is-info.is-focused.textarea, html.theme--documenter-dark .is-info.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-info.textarea:active, html.theme--documenter-dark .is-info.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info:active, html.theme--documenter-dark .is-info.is-active.textarea, html.theme--documenter-dark .is-info.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } + html.theme--documenter-dark .is-success.textarea, html.theme--documenter-dark .is-success.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success { + border-color: #008438; } + html.theme--documenter-dark .is-success.textarea:focus, html.theme--documenter-dark .is-success.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success:focus, html.theme--documenter-dark .is-success.is-focused.textarea, html.theme--documenter-dark .is-success.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-success.textarea:active, html.theme--documenter-dark .is-success.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success:active, html.theme--documenter-dark .is-success.is-active.textarea, html.theme--documenter-dark .is-success.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } + html.theme--documenter-dark .is-warning.textarea, html.theme--documenter-dark .is-warning.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning { + border-color: #ad8100; } + html.theme--documenter-dark .is-warning.textarea:focus, html.theme--documenter-dark .is-warning.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning:focus, html.theme--documenter-dark .is-warning.is-focused.textarea, html.theme--documenter-dark .is-warning.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-warning.textarea:active, html.theme--documenter-dark .is-warning.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning:active, html.theme--documenter-dark .is-warning.is-active.textarea, html.theme--documenter-dark .is-warning.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } + html.theme--documenter-dark .is-danger.textarea, html.theme--documenter-dark .is-danger.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger { + border-color: #9e1b0d; } + html.theme--documenter-dark .is-danger.textarea:focus, html.theme--documenter-dark .is-danger.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger:focus, html.theme--documenter-dark .is-danger.is-focused.textarea, html.theme--documenter-dark .is-danger.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-danger.textarea:active, html.theme--documenter-dark .is-danger.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger:active, html.theme--documenter-dark .is-danger.is-active.textarea, html.theme--documenter-dark .is-danger.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } + html.theme--documenter-dark .is-small.textarea, html.theme--documenter-dark .is-small.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { + border-radius: 3px; + font-size: 0.85em; } + html.theme--documenter-dark .is-medium.textarea, html.theme--documenter-dark .is-medium.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .is-large.textarea, html.theme--documenter-dark .is-large.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .is-fullwidth.textarea, html.theme--documenter-dark .is-fullwidth.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-fullwidth { + display: block; + width: 100%; } + html.theme--documenter-dark .is-inline.textarea, html.theme--documenter-dark .is-inline.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-inline { + display: inline; + width: auto; } + html.theme--documenter-dark .input.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { + border-radius: 290486px; + padding-left: 1em; + padding-right: 1em; } + html.theme--documenter-dark .input.is-static, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-static { + background-color: transparent; + border-color: transparent; + box-shadow: none; + padding-left: 0; + padding-right: 0; } + html.theme--documenter-dark .textarea { + display: block; + max-width: 100%; + min-width: 100%; + padding: 0.625em; + resize: vertical; } + html.theme--documenter-dark .textarea:not([rows]) { + max-height: 600px; + min-height: 120px; } + html.theme--documenter-dark .textarea[rows] { + height: initial; } + html.theme--documenter-dark .textarea.has-fixed-size { + resize: none; } + html.theme--documenter-dark .radio, html.theme--documenter-dark .checkbox { + cursor: pointer; + display: inline-block; + line-height: 1.25; + position: relative; } + html.theme--documenter-dark .radio input, html.theme--documenter-dark .checkbox input { + cursor: pointer; } + html.theme--documenter-dark .radio:hover, html.theme--documenter-dark .checkbox:hover { + color: #8c9b9d; } + html.theme--documenter-dark .radio[disabled], html.theme--documenter-dark .checkbox[disabled], fieldset[disabled] html.theme--documenter-dark .radio, fieldset[disabled] html.theme--documenter-dark .checkbox { + color: white; + cursor: not-allowed; } + html.theme--documenter-dark .radio + .radio { + margin-left: 0.5em; } + html.theme--documenter-dark .select { + display: inline-block; + max-width: 100%; + position: relative; + vertical-align: top; } + html.theme--documenter-dark .select:not(.is-multiple) { + height: 2.25em; } + html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after { + border-color: #1abc9c; + right: 1.125em; + z-index: 4; } + html.theme--documenter-dark .select.is-rounded select, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select select { + border-radius: 290486px; + padding-left: 1em; } + html.theme--documenter-dark .select select { + cursor: pointer; + display: block; + font-size: 1em; + max-width: 100%; + outline: none; } + html.theme--documenter-dark .select select::-ms-expand { + display: none; } + html.theme--documenter-dark .select select[disabled]:hover, fieldset[disabled] html.theme--documenter-dark .select select:hover { + border-color: #282f2f; } + html.theme--documenter-dark .select select:not([multiple]) { + padding-right: 2.5em; } + html.theme--documenter-dark .select select[multiple] { + height: auto; + padding: 0; } + html.theme--documenter-dark .select select[multiple] option { + padding: 0.5em 1em; } + html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after { + border-color: #8c9b9d; } + html.theme--documenter-dark .select.is-white:not(:hover)::after { + border-color: white; } + html.theme--documenter-dark .select.is-white select { + border-color: white; } + html.theme--documenter-dark .select.is-white select:hover, html.theme--documenter-dark .select.is-white select.is-hovered { + border-color: #f2f2f2; } + html.theme--documenter-dark .select.is-white select:focus, html.theme--documenter-dark .select.is-white select.is-focused, html.theme--documenter-dark .select.is-white select:active, html.theme--documenter-dark .select.is-white select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + html.theme--documenter-dark .select.is-black:not(:hover)::after { + border-color: #0a0a0a; } + html.theme--documenter-dark .select.is-black select { + border-color: #0a0a0a; } + html.theme--documenter-dark .select.is-black select:hover, html.theme--documenter-dark .select.is-black select.is-hovered { + border-color: black; } + html.theme--documenter-dark .select.is-black select:focus, html.theme--documenter-dark .select.is-black select.is-focused, html.theme--documenter-dark .select.is-black select:active, html.theme--documenter-dark .select.is-black select.is-active { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + html.theme--documenter-dark .select.is-light:not(:hover)::after { + border-color: #ecf0f1; } + html.theme--documenter-dark .select.is-light select { + border-color: #ecf0f1; } + html.theme--documenter-dark .select.is-light select:hover, html.theme--documenter-dark .select.is-light select.is-hovered { + border-color: #dde4e6; } + html.theme--documenter-dark .select.is-light select:focus, html.theme--documenter-dark .select.is-light select.is-focused, html.theme--documenter-dark .select.is-light select:active, html.theme--documenter-dark .select.is-light select.is-active { + box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } + html.theme--documenter-dark .select.is-dark:not(:hover)::after, html.theme--documenter-dark .content kbd.select:not(:hover)::after { + border-color: #282f2f; } + html.theme--documenter-dark .select.is-dark select, html.theme--documenter-dark .content kbd.select select { + border-color: #282f2f; } + html.theme--documenter-dark .select.is-dark select:hover, html.theme--documenter-dark .content kbd.select select:hover, html.theme--documenter-dark .select.is-dark select.is-hovered, html.theme--documenter-dark .content kbd.select select.is-hovered { + border-color: #1d2122; } + html.theme--documenter-dark .select.is-dark select:focus, html.theme--documenter-dark .content kbd.select select:focus, html.theme--documenter-dark .select.is-dark select.is-focused, html.theme--documenter-dark .content kbd.select select.is-focused, html.theme--documenter-dark .select.is-dark select:active, html.theme--documenter-dark .content kbd.select select:active, html.theme--documenter-dark .select.is-dark select.is-active, html.theme--documenter-dark .content kbd.select select.is-active { + box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } + html.theme--documenter-dark .select.is-primary:not(:hover)::after, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink:not(:hover)::after { + border-color: #375a7f; } + html.theme--documenter-dark .select.is-primary select, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select { + border-color: #375a7f; } + html.theme--documenter-dark .select.is-primary select:hover, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:hover, html.theme--documenter-dark .select.is-primary select.is-hovered, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-hovered { + border-color: #2f4d6d; } + html.theme--documenter-dark .select.is-primary select:focus, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:focus, html.theme--documenter-dark .select.is-primary select.is-focused, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-focused, html.theme--documenter-dark .select.is-primary select:active, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:active, html.theme--documenter-dark .select.is-primary select.is-active, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-active { + box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } + html.theme--documenter-dark .select.is-link:not(:hover)::after { + border-color: #1abc9c; } + html.theme--documenter-dark .select.is-link select { + border-color: #1abc9c; } + html.theme--documenter-dark .select.is-link select:hover, html.theme--documenter-dark .select.is-link select.is-hovered { + border-color: #17a689; } + html.theme--documenter-dark .select.is-link select:focus, html.theme--documenter-dark .select.is-link select.is-focused, html.theme--documenter-dark .select.is-link select:active, html.theme--documenter-dark .select.is-link select.is-active { + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .select.is-info:not(:hover)::after { + border-color: #024c7d; } + html.theme--documenter-dark .select.is-info select { + border-color: #024c7d; } + html.theme--documenter-dark .select.is-info select:hover, html.theme--documenter-dark .select.is-info select.is-hovered { + border-color: #023d64; } + html.theme--documenter-dark .select.is-info select:focus, html.theme--documenter-dark .select.is-info select.is-focused, html.theme--documenter-dark .select.is-info select:active, html.theme--documenter-dark .select.is-info select.is-active { + box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } + html.theme--documenter-dark .select.is-success:not(:hover)::after { + border-color: #008438; } + html.theme--documenter-dark .select.is-success select { + border-color: #008438; } + html.theme--documenter-dark .select.is-success select:hover, html.theme--documenter-dark .select.is-success select.is-hovered { + border-color: #006b2d; } + html.theme--documenter-dark .select.is-success select:focus, html.theme--documenter-dark .select.is-success select.is-focused, html.theme--documenter-dark .select.is-success select:active, html.theme--documenter-dark .select.is-success select.is-active { + box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } + html.theme--documenter-dark .select.is-warning:not(:hover)::after { + border-color: #ad8100; } + html.theme--documenter-dark .select.is-warning select { + border-color: #ad8100; } + html.theme--documenter-dark .select.is-warning select:hover, html.theme--documenter-dark .select.is-warning select.is-hovered { + border-color: #946e00; } + html.theme--documenter-dark .select.is-warning select:focus, html.theme--documenter-dark .select.is-warning select.is-focused, html.theme--documenter-dark .select.is-warning select:active, html.theme--documenter-dark .select.is-warning select.is-active { + box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } + html.theme--documenter-dark .select.is-danger:not(:hover)::after { + border-color: #9e1b0d; } + html.theme--documenter-dark .select.is-danger select { + border-color: #9e1b0d; } + html.theme--documenter-dark .select.is-danger select:hover, html.theme--documenter-dark .select.is-danger select.is-hovered { + border-color: #86170b; } + html.theme--documenter-dark .select.is-danger select:focus, html.theme--documenter-dark .select.is-danger select.is-focused, html.theme--documenter-dark .select.is-danger select:active, html.theme--documenter-dark .select.is-danger select.is-active { + box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } + html.theme--documenter-dark .select.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select { + border-radius: 3px; + font-size: 0.85em; } + html.theme--documenter-dark .select.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .select.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .select.is-disabled::after { + border-color: white; } + html.theme--documenter-dark .select.is-fullwidth { + width: 100%; } + html.theme--documenter-dark .select.is-fullwidth select { + width: 100%; } + html.theme--documenter-dark .select.is-loading::after { + margin-top: 0; + position: absolute; + right: 0.625em; + top: 0.625em; + transform: none; } + html.theme--documenter-dark .select.is-loading.is-small:after, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-loading:after { + font-size: 0.85em; } + html.theme--documenter-dark .select.is-loading.is-medium:after { + font-size: 1.25rem; } + html.theme--documenter-dark .select.is-loading.is-large:after { + font-size: 1.5rem; } + html.theme--documenter-dark .file { + align-items: stretch; + display: flex; + justify-content: flex-start; + position: relative; } + html.theme--documenter-dark .file.is-white .file-cta { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .file.is-white:hover .file-cta, html.theme--documenter-dark .file.is-white.is-hovered .file-cta { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .file.is-white:focus .file-cta, html.theme--documenter-dark .file.is-white.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); + color: #0a0a0a; } + html.theme--documenter-dark .file.is-white:active .file-cta, html.theme--documenter-dark .file.is-white.is-active .file-cta { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .file.is-black .file-cta { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + html.theme--documenter-dark .file.is-black:hover .file-cta, html.theme--documenter-dark .file.is-black.is-hovered .file-cta { + background-color: #040404; + border-color: transparent; + color: white; } + html.theme--documenter-dark .file.is-black:focus .file-cta, html.theme--documenter-dark .file.is-black.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); + color: white; } + html.theme--documenter-dark .file.is-black:active .file-cta, html.theme--documenter-dark .file.is-black.is-active .file-cta { + background-color: black; + border-color: transparent; + color: white; } + html.theme--documenter-dark .file.is-light .file-cta { + background-color: #ecf0f1; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .file.is-light:hover .file-cta, html.theme--documenter-dark .file.is-light.is-hovered .file-cta { + background-color: #e5eaec; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .file.is-light:focus .file-cta, html.theme--documenter-dark .file.is-light.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(236, 240, 241, 0.25); + color: #282f2f; } + html.theme--documenter-dark .file.is-light:active .file-cta, html.theme--documenter-dark .file.is-light.is-active .file-cta { + background-color: #dde4e6; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .file.is-dark .file-cta, html.theme--documenter-dark .content kbd.file .file-cta { + background-color: #282f2f; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .file.is-dark:hover .file-cta, html.theme--documenter-dark .content kbd.file:hover .file-cta, html.theme--documenter-dark .file.is-dark.is-hovered .file-cta, html.theme--documenter-dark .content kbd.file.is-hovered .file-cta { + background-color: #232829; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .file.is-dark:focus .file-cta, html.theme--documenter-dark .content kbd.file:focus .file-cta, html.theme--documenter-dark .file.is-dark.is-focused .file-cta, html.theme--documenter-dark .content kbd.file.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(40, 47, 47, 0.25); + color: #ecf0f1; } + html.theme--documenter-dark .file.is-dark:active .file-cta, html.theme--documenter-dark .content kbd.file:active .file-cta, html.theme--documenter-dark .file.is-dark.is-active .file-cta, html.theme--documenter-dark .content kbd.file.is-active .file-cta { + background-color: #1d2122; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .file.is-primary .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink .file-cta { + background-color: #375a7f; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-primary:hover .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:hover .file-cta, html.theme--documenter-dark .file.is-primary.is-hovered .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-hovered.docs-sourcelink .file-cta { + background-color: #335476; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-primary:focus .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:focus .file-cta, html.theme--documenter-dark .file.is-primary.is-focused .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-focused.docs-sourcelink .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(55, 90, 127, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-primary:active .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:active .file-cta, html.theme--documenter-dark .file.is-primary.is-active .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-active.docs-sourcelink .file-cta { + background-color: #2f4d6d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-link .file-cta { + background-color: #1abc9c; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-link:hover .file-cta, html.theme--documenter-dark .file.is-link.is-hovered .file-cta { + background-color: #18b193; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-link:focus .file-cta, html.theme--documenter-dark .file.is-link.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(26, 188, 156, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-link:active .file-cta, html.theme--documenter-dark .file.is-link.is-active .file-cta { + background-color: #17a689; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-info .file-cta { + background-color: #024c7d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-info:hover .file-cta, html.theme--documenter-dark .file.is-info.is-hovered .file-cta { + background-color: #024470; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-info:focus .file-cta, html.theme--documenter-dark .file.is-info.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(2, 76, 125, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-info:active .file-cta, html.theme--documenter-dark .file.is-info.is-active .file-cta { + background-color: #023d64; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-success .file-cta { + background-color: #008438; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-success:hover .file-cta, html.theme--documenter-dark .file.is-success.is-hovered .file-cta { + background-color: #007733; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-success:focus .file-cta, html.theme--documenter-dark .file.is-success.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(0, 132, 56, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-success:active .file-cta, html.theme--documenter-dark .file.is-success.is-active .file-cta { + background-color: #006b2d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-warning .file-cta { + background-color: #ad8100; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-warning:hover .file-cta, html.theme--documenter-dark .file.is-warning.is-hovered .file-cta { + background-color: #a07700; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-warning:focus .file-cta, html.theme--documenter-dark .file.is-warning.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(173, 129, 0, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-warning:active .file-cta, html.theme--documenter-dark .file.is-warning.is-active .file-cta { + background-color: #946e00; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-danger .file-cta { + background-color: #9e1b0d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-danger:hover .file-cta, html.theme--documenter-dark .file.is-danger.is-hovered .file-cta { + background-color: #92190c; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-danger:focus .file-cta, html.theme--documenter-dark .file.is-danger.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(158, 27, 13, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-danger:active .file-cta, html.theme--documenter-dark .file.is-danger.is-active .file-cta { + background-color: #86170b; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.file { + font-size: 0.85em; } + html.theme--documenter-dark .file.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .file.is-medium .file-icon .fa { + font-size: 21px; } + html.theme--documenter-dark .file.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .file.is-large .file-icon .fa { + font-size: 28px; } + html.theme--documenter-dark .file.has-name .file-cta { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + html.theme--documenter-dark .file.has-name .file-name { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + html.theme--documenter-dark .file.has-name.is-empty .file-cta { + border-radius: 0.4em; } + html.theme--documenter-dark .file.has-name.is-empty .file-name { + display: none; } + html.theme--documenter-dark .file.is-boxed .file-label { + flex-direction: column; } + html.theme--documenter-dark .file.is-boxed .file-cta { + flex-direction: column; + height: auto; + padding: 1em 3em; } + html.theme--documenter-dark .file.is-boxed .file-name { + border-width: 0 1px 1px; } + html.theme--documenter-dark .file.is-boxed .file-icon { + height: 1.5em; + width: 1.5em; } + html.theme--documenter-dark .file.is-boxed .file-icon .fa { + font-size: 21px; } + html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-boxed .file-icon .fa { + font-size: 14px; } + html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa { + font-size: 28px; } + html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa { + font-size: 35px; } + html.theme--documenter-dark .file.is-boxed.has-name .file-cta { + border-radius: 0.4em 0.4em 0 0; } + html.theme--documenter-dark .file.is-boxed.has-name .file-name { + border-radius: 0 0 0.4em 0.4em; + border-width: 0 1px 1px; } + html.theme--documenter-dark .file.is-centered { + justify-content: center; } + html.theme--documenter-dark .file.is-fullwidth .file-label { + width: 100%; } + html.theme--documenter-dark .file.is-fullwidth .file-name { + flex-grow: 1; + max-width: none; } + html.theme--documenter-dark .file.is-right { + justify-content: flex-end; } + html.theme--documenter-dark .file.is-right .file-cta { + border-radius: 0 0.4em 0.4em 0; } + html.theme--documenter-dark .file.is-right .file-name { + border-radius: 0.4em 0 0 0.4em; + border-width: 1px 0 1px 1px; + order: -1; } + html.theme--documenter-dark .file-label { + align-items: stretch; + display: flex; + cursor: pointer; + justify-content: flex-start; + overflow: hidden; + position: relative; } + html.theme--documenter-dark .file-label:hover .file-cta { + background-color: #e5eaec; + color: #282f2f; } + html.theme--documenter-dark .file-label:hover .file-name { + border-color: #596668; } + html.theme--documenter-dark .file-label:active .file-cta { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .file-label:active .file-name { + border-color: #535f61; } + html.theme--documenter-dark .file-input { + height: 100%; + left: 0; + opacity: 0; + outline: none; + position: absolute; + top: 0; + width: 100%; } + html.theme--documenter-dark .file-cta, + html.theme--documenter-dark .file-name { + border-color: #5e6d6f; + border-radius: 0.4em; + font-size: 1em; + padding-left: 1em; + padding-right: 1em; + white-space: nowrap; } + html.theme--documenter-dark .file-cta { + background-color: #ecf0f1; + color: #343c3d; } + html.theme--documenter-dark .file-name { + border-color: #5e6d6f; + border-style: solid; + border-width: 1px 1px 1px 0; + display: block; + max-width: 16em; + overflow: hidden; + text-align: left; + text-overflow: ellipsis; } + html.theme--documenter-dark .file-icon { + align-items: center; + display: flex; + height: 1em; + justify-content: center; + margin-right: 0.5em; + width: 1em; } + html.theme--documenter-dark .file-icon .fa { + font-size: 14px; } + html.theme--documenter-dark .label { + color: #282f2f; + display: block; + font-size: 15px; + font-weight: 700; } + html.theme--documenter-dark .label:not(:last-child) { + margin-bottom: 0.5em; } + html.theme--documenter-dark .label.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.label { + font-size: 0.85em; } + html.theme--documenter-dark .label.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .label.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .help { + display: block; + font-size: 0.85em; + margin-top: 0.25rem; } + html.theme--documenter-dark .help.is-white { + color: white; } + html.theme--documenter-dark .help.is-black { + color: #0a0a0a; } + html.theme--documenter-dark .help.is-light { + color: #ecf0f1; } + html.theme--documenter-dark .help.is-dark, html.theme--documenter-dark .content kbd.help { + color: #282f2f; } + html.theme--documenter-dark .help.is-primary, html.theme--documenter-dark .docstring > section > a.help.docs-sourcelink { + color: #375a7f; } + html.theme--documenter-dark .help.is-link { + color: #1abc9c; } + html.theme--documenter-dark .help.is-info { + color: #024c7d; } + html.theme--documenter-dark .help.is-success { + color: #008438; } + html.theme--documenter-dark .help.is-warning { + color: #ad8100; } + html.theme--documenter-dark .help.is-danger { + color: #9e1b0d; } + html.theme--documenter-dark .field:not(:last-child) { + margin-bottom: 0.75rem; } + html.theme--documenter-dark .field.has-addons { + display: flex; + justify-content: flex-start; } + html.theme--documenter-dark .field.has-addons .control:not(:last-child) { + margin-right: -1px; } + html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button, + html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input, + html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search > input, + html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select { + border-radius: 0; } + html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button, + html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input, + html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search > input, + html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button, + html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input, + html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search > input, + html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover, html.theme--documenter-dark .field.has-addons .control .button.is-hovered:not([disabled]), + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control .input.is-hovered:not([disabled]), + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-hovered:not([disabled]), + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-hovered:not([disabled]), + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control .select select.is-hovered:not([disabled]) { + z-index: 2; } + html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus, html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]), html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active, html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]), + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus, + html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]), + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-focused:not([disabled]), + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-focused:not([disabled]), + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active, + html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]), + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-active:not([disabled]), + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-active:not([disabled]), + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus, + html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]), + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active, + html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]) { + z-index: 3; } + html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover, html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]):hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover, html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus:hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus:hover, + html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-focused:not([disabled]):hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-focused:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active:hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active:hover, + html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-active:not([disabled]):hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-active:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover, + html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover, + html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]):hover { + z-index: 4; } + html.theme--documenter-dark .field.has-addons .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .field.has-addons.has-addons-centered { + justify-content: center; } + html.theme--documenter-dark .field.has-addons.has-addons-right { + justify-content: flex-end; } + html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control { + flex-grow: 1; + flex-shrink: 0; } + html.theme--documenter-dark .field.is-grouped { + display: flex; + justify-content: flex-start; } + html.theme--documenter-dark .field.is-grouped > .control { + flex-shrink: 0; } + html.theme--documenter-dark .field.is-grouped > .control:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; } + html.theme--documenter-dark .field.is-grouped > .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .field.is-grouped.is-grouped-centered { + justify-content: center; } + html.theme--documenter-dark .field.is-grouped.is-grouped-right { + justify-content: flex-end; } + html.theme--documenter-dark .field.is-grouped.is-grouped-multiline { + flex-wrap: wrap; } + html.theme--documenter-dark .field.is-grouped.is-grouped-multiline > .control:last-child, html.theme--documenter-dark .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { + margin-bottom: 0.75rem; } + html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child { + margin-bottom: -0.75rem; } + html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child) { + margin-bottom: 0; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .field.is-horizontal { + display: flex; } } + html.theme--documenter-dark .field-label .label { + font-size: inherit; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .field-label { + margin-bottom: 0.5rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .field-label { + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + margin-right: 1.5rem; + text-align: right; } + html.theme--documenter-dark .field-label.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.field-label { + font-size: 0.85em; + padding-top: 0.375em; } + html.theme--documenter-dark .field-label.is-normal { + padding-top: 0.375em; } + html.theme--documenter-dark .field-label.is-medium { + font-size: 1.25rem; + padding-top: 0.375em; } + html.theme--documenter-dark .field-label.is-large { + font-size: 1.5rem; + padding-top: 0.375em; } } + html.theme--documenter-dark .field-body .field .field { + margin-bottom: 0; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .field-body { + display: flex; + flex-basis: 0; + flex-grow: 5; + flex-shrink: 1; } + html.theme--documenter-dark .field-body .field { + margin-bottom: 0; } + html.theme--documenter-dark .field-body > .field { + flex-shrink: 1; } + html.theme--documenter-dark .field-body > .field:not(.is-narrow) { + flex-grow: 1; } + html.theme--documenter-dark .field-body > .field:not(:last-child) { + margin-right: 0.75rem; } } + html.theme--documenter-dark .control { + box-sizing: border-box; + clear: both; + font-size: 15px; + position: relative; + text-align: left; } + html.theme--documenter-dark .control.has-icons-left .input:focus ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input:focus ~ .icon, + html.theme--documenter-dark .control.has-icons-left .select:focus ~ .icon, html.theme--documenter-dark .control.has-icons-right .input:focus ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input:focus ~ .icon, + html.theme--documenter-dark .control.has-icons-right .select:focus ~ .icon { + color: #5e6d6f; } + html.theme--documenter-dark .control.has-icons-left .input.is-small ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input ~ .icon, + html.theme--documenter-dark .control.has-icons-left .select.is-small ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-small ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input ~ .icon, + html.theme--documenter-dark .control.has-icons-right .select.is-small ~ .icon { + font-size: 0.85em; } + html.theme--documenter-dark .control.has-icons-left .input.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-medium ~ .icon, + html.theme--documenter-dark .control.has-icons-left .select.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-medium ~ .icon, + html.theme--documenter-dark .control.has-icons-right .select.is-medium ~ .icon { + font-size: 1.25rem; } + html.theme--documenter-dark .control.has-icons-left .input.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-large ~ .icon, + html.theme--documenter-dark .control.has-icons-left .select.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-large ~ .icon, + html.theme--documenter-dark .control.has-icons-right .select.is-large ~ .icon { + font-size: 1.5rem; } + html.theme--documenter-dark .control.has-icons-left .icon, html.theme--documenter-dark .control.has-icons-right .icon { + color: #dbdee0; + height: 2.25em; + pointer-events: none; + position: absolute; + top: 0; + width: 2.25em; + z-index: 4; } + html.theme--documenter-dark .control.has-icons-left .input, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input, + html.theme--documenter-dark .control.has-icons-left .select select { + padding-left: 2.25em; } + html.theme--documenter-dark .control.has-icons-left .icon.is-left { + left: 0; } + html.theme--documenter-dark .control.has-icons-right .input, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input, + html.theme--documenter-dark .control.has-icons-right .select select { + padding-right: 2.25em; } + html.theme--documenter-dark .control.has-icons-right .icon.is-right { + right: 0; } + html.theme--documenter-dark .control.is-loading::after { + position: absolute !important; + right: 0.625em; + top: 0.625em; + z-index: 4; } + html.theme--documenter-dark .control.is-loading.is-small:after, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-loading:after { + font-size: 0.85em; } + html.theme--documenter-dark .control.is-loading.is-medium:after { + font-size: 1.25rem; } + html.theme--documenter-dark .control.is-loading.is-large:after { + font-size: 1.5rem; } + html.theme--documenter-dark .breadcrumb { + font-size: 15px; + white-space: nowrap; } + html.theme--documenter-dark .breadcrumb a { + align-items: center; + color: #1abc9c; + display: flex; + justify-content: center; + padding: 0 0.75em; } + html.theme--documenter-dark .breadcrumb a:hover { + color: #1dd2af; } + html.theme--documenter-dark .breadcrumb li { + align-items: center; + display: flex; } + html.theme--documenter-dark .breadcrumb li:first-child a { + padding-left: 0; } + html.theme--documenter-dark .breadcrumb li.is-active a { + color: #f2f2f2; + cursor: default; + pointer-events: none; } + html.theme--documenter-dark .breadcrumb li + li::before { + color: #8c9b9d; + content: "\0002f"; } + html.theme--documenter-dark .breadcrumb ul, + html.theme--documenter-dark .breadcrumb ol { + align-items: flex-start; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + html.theme--documenter-dark .breadcrumb .icon:first-child { + margin-right: 0.5em; } + html.theme--documenter-dark .breadcrumb .icon:last-child { + margin-left: 0.5em; } + html.theme--documenter-dark .breadcrumb.is-centered ol, + html.theme--documenter-dark .breadcrumb.is-centered ul { + justify-content: center; } + html.theme--documenter-dark .breadcrumb.is-right ol, + html.theme--documenter-dark .breadcrumb.is-right ul { + justify-content: flex-end; } + html.theme--documenter-dark .breadcrumb.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.breadcrumb { + font-size: 0.85em; } + html.theme--documenter-dark .breadcrumb.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .breadcrumb.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .breadcrumb.has-arrow-separator li + li::before { + content: "\02192"; } + html.theme--documenter-dark .breadcrumb.has-bullet-separator li + li::before { + content: "\02022"; } + html.theme--documenter-dark .breadcrumb.has-dot-separator li + li::before { + content: "\000b7"; } + html.theme--documenter-dark .breadcrumb.has-succeeds-separator li + li::before { + content: "\0227B"; } + html.theme--documenter-dark .card { + background-color: white; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + color: #fff; + max-width: 100%; + position: relative; } + html.theme--documenter-dark .card-header { + background-color: transparent; + align-items: stretch; + box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); + display: flex; } + html.theme--documenter-dark .card-header-title { + align-items: center; + color: #f2f2f2; + display: flex; + flex-grow: 1; + font-weight: 700; + padding: 0.75rem; } + html.theme--documenter-dark .card-header-title.is-centered { + justify-content: center; } + html.theme--documenter-dark .card-header-icon { + align-items: center; + cursor: pointer; + display: flex; + justify-content: center; + padding: 0.75rem; } + html.theme--documenter-dark .card-image { + display: block; + position: relative; } + html.theme--documenter-dark .card-content { + background-color: transparent; + padding: 1.5rem; } + html.theme--documenter-dark .card-footer { + background-color: transparent; + border-top: 1px solid #5e6d6f; + align-items: stretch; + display: flex; } + html.theme--documenter-dark .card-footer-item { + align-items: center; + display: flex; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + justify-content: center; + padding: 0.75rem; } + html.theme--documenter-dark .card-footer-item:not(:last-child) { + border-right: 1px solid #5e6d6f; } + html.theme--documenter-dark .card .media:not(:last-child) { + margin-bottom: 1.5rem; } + html.theme--documenter-dark .dropdown { + display: inline-flex; + position: relative; + vertical-align: top; } + html.theme--documenter-dark .dropdown.is-active .dropdown-menu, html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu { + display: block; } + html.theme--documenter-dark .dropdown.is-right .dropdown-menu { + left: auto; + right: 0; } + html.theme--documenter-dark .dropdown.is-up .dropdown-menu { + bottom: 100%; + padding-bottom: 4px; + padding-top: initial; + top: auto; } + html.theme--documenter-dark .dropdown-menu { + display: none; + left: 0; + min-width: 12rem; + padding-top: 4px; + position: absolute; + top: 100%; + z-index: 20; } + html.theme--documenter-dark .dropdown-content { + background-color: #282f2f; + border-radius: 0.4em; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + padding-bottom: 0.5rem; + padding-top: 0.5rem; } + html.theme--documenter-dark .dropdown-item { + color: #fff; + display: block; + font-size: 0.875rem; + line-height: 1.5; + padding: 0.375rem 1rem; + position: relative; } + html.theme--documenter-dark a.dropdown-item, + html.theme--documenter-dark button.dropdown-item { + padding-right: 3rem; + text-align: left; + white-space: nowrap; + width: 100%; } + html.theme--documenter-dark a.dropdown-item:hover, + html.theme--documenter-dark button.dropdown-item:hover { + background-color: #282f2f; + color: #0a0a0a; } + html.theme--documenter-dark a.dropdown-item.is-active, + html.theme--documenter-dark button.dropdown-item.is-active { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .dropdown-divider { + background-color: #5e6d6f; + border: none; + display: block; + height: 1px; + margin: 0.5rem 0; } + html.theme--documenter-dark .level { + align-items: center; + justify-content: space-between; } + html.theme--documenter-dark .level code { + border-radius: 0.4em; } + html.theme--documenter-dark .level img { + display: inline-block; + vertical-align: top; } + html.theme--documenter-dark .level.is-mobile { + display: flex; } + html.theme--documenter-dark .level.is-mobile .level-left, + html.theme--documenter-dark .level.is-mobile .level-right { + display: flex; } + html.theme--documenter-dark .level.is-mobile .level-left + .level-right { + margin-top: 0; } + html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; } + html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow) { + flex-grow: 1; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .level { + display: flex; } + html.theme--documenter-dark .level > .level-item:not(.is-narrow) { + flex-grow: 1; } } + html.theme--documenter-dark .level-item { + align-items: center; + display: flex; + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; } + html.theme--documenter-dark .level-item .title, + html.theme--documenter-dark .level-item .subtitle { + margin-bottom: 0; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .level-item:not(:last-child) { + margin-bottom: 0.75rem; } } + html.theme--documenter-dark .level-left, + html.theme--documenter-dark .level-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; } + html.theme--documenter-dark .level-left .level-item.is-flexible, + html.theme--documenter-dark .level-right .level-item.is-flexible { + flex-grow: 1; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .level-left .level-item:not(:last-child), + html.theme--documenter-dark .level-right .level-item:not(:last-child) { + margin-right: 0.75rem; } } + html.theme--documenter-dark .level-left { + align-items: center; + justify-content: flex-start; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .level-left + .level-right { + margin-top: 1.5rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .level-left { + display: flex; } } + html.theme--documenter-dark .level-right { + align-items: center; + justify-content: flex-end; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .level-right { + display: flex; } } + html.theme--documenter-dark .list { + background-color: white; + border-radius: 0.4em; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .list-item { + display: block; + padding: 0.5em 1em; } + html.theme--documenter-dark .list-item:not(a) { + color: #fff; } + html.theme--documenter-dark .list-item:first-child { + border-top-left-radius: 0.4em; + border-top-right-radius: 0.4em; } + html.theme--documenter-dark .list-item:last-child { + border-bottom-left-radius: 0.4em; + border-bottom-right-radius: 0.4em; } + html.theme--documenter-dark .list-item:not(:last-child) { + border-bottom: 1px solid #5e6d6f; } + html.theme--documenter-dark .list-item.is-active { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark a.list-item { + background-color: #282f2f; + cursor: pointer; } + html.theme--documenter-dark .media { + align-items: flex-start; + display: flex; + text-align: left; } + html.theme--documenter-dark .media .content:not(:last-child) { + margin-bottom: 0.75rem; } + html.theme--documenter-dark .media .media { + border-top: 1px solid rgba(94, 109, 111, 0.5); + display: flex; + padding-top: 0.75rem; } + html.theme--documenter-dark .media .media .content:not(:last-child), + html.theme--documenter-dark .media .media .control:not(:last-child) { + margin-bottom: 0.5rem; } + html.theme--documenter-dark .media .media .media { + padding-top: 0.5rem; } + html.theme--documenter-dark .media .media .media + .media { + margin-top: 0.5rem; } + html.theme--documenter-dark .media + .media { + border-top: 1px solid rgba(94, 109, 111, 0.5); + margin-top: 1rem; + padding-top: 1rem; } + html.theme--documenter-dark .media.is-large + .media { + margin-top: 1.5rem; + padding-top: 1.5rem; } + html.theme--documenter-dark .media-left, + html.theme--documenter-dark .media-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; } + html.theme--documenter-dark .media-left { + margin-right: 1rem; } + html.theme--documenter-dark .media-right { + margin-left: 1rem; } + html.theme--documenter-dark .media-content { + flex-basis: auto; + flex-grow: 1; + flex-shrink: 1; + text-align: left; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .media-content { + overflow-x: auto; } } + html.theme--documenter-dark .menu { + font-size: 15px; } + html.theme--documenter-dark .menu.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.menu { + font-size: 0.85em; } + html.theme--documenter-dark .menu.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .menu.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .menu-list { + line-height: 1.25; } + html.theme--documenter-dark .menu-list a { + border-radius: 3px; + color: #fff; + display: block; + padding: 0.5em 0.75em; } + html.theme--documenter-dark .menu-list a:hover { + background-color: #282f2f; + color: #f2f2f2; } + html.theme--documenter-dark .menu-list a.is-active { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .menu-list li ul { + border-left: 1px solid #5e6d6f; + margin: 0.75em; + padding-left: 0.75em; } + html.theme--documenter-dark .menu-label { + color: white; + font-size: 0.75em; + letter-spacing: 0.1em; + text-transform: uppercase; } + html.theme--documenter-dark .menu-label:not(:first-child) { + margin-top: 1em; } + html.theme--documenter-dark .menu-label:not(:last-child) { + margin-bottom: 1em; } + html.theme--documenter-dark .message { + background-color: #282f2f; + border-radius: 0.4em; + font-size: 15px; } + html.theme--documenter-dark .message strong { + color: currentColor; } + html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; } + html.theme--documenter-dark .message.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.message { + font-size: 0.85em; } + html.theme--documenter-dark .message.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .message.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .message.is-white { + background-color: white; } + html.theme--documenter-dark .message.is-white .message-header { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .message.is-white .message-body { + border-color: white; + color: #4d4d4d; } + html.theme--documenter-dark .message.is-black { + background-color: #fafafa; } + html.theme--documenter-dark .message.is-black .message-header { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .message.is-black .message-body { + border-color: #0a0a0a; + color: #090909; } + html.theme--documenter-dark .message.is-light { + background-color: #f9fafb; } + html.theme--documenter-dark .message.is-light .message-header { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .message.is-light .message-body { + border-color: #ecf0f1; + color: #505050; } + html.theme--documenter-dark .message.is-dark, html.theme--documenter-dark .content kbd.message { + background-color: #f9fafa; } + html.theme--documenter-dark .message.is-dark .message-header, html.theme--documenter-dark .content kbd.message .message-header { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .message.is-dark .message-body, html.theme--documenter-dark .content kbd.message .message-body { + border-color: #282f2f; + color: #212526; } + html.theme--documenter-dark .message.is-primary, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink { + background-color: #f8fafc; } + html.theme--documenter-dark .message.is-primary .message-header, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink .message-header { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .message.is-primary .message-body, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink .message-body { + border-color: #375a7f; + color: #2b4159; } + html.theme--documenter-dark .message.is-link { + background-color: #f6fefc; } + html.theme--documenter-dark .message.is-link .message-header { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .message.is-link .message-body { + border-color: #1abc9c; + color: #0b2f28; } + html.theme--documenter-dark .message.is-info { + background-color: #f5fbff; } + html.theme--documenter-dark .message.is-info .message-header { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .message.is-info .message-body { + border-color: #024c7d; + color: #033659; } + html.theme--documenter-dark .message.is-success { + background-color: #f5fff9; } + html.theme--documenter-dark .message.is-success .message-header { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .message.is-success .message-body { + border-color: #008438; + color: #023518; } + html.theme--documenter-dark .message.is-warning { + background-color: #fffcf5; } + html.theme--documenter-dark .message.is-warning .message-header { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .message.is-warning .message-body { + border-color: #ad8100; + color: #3d2e03; } + html.theme--documenter-dark .message.is-danger { + background-color: #fef6f6; } + html.theme--documenter-dark .message.is-danger .message-header { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .message.is-danger .message-body { + border-color: #9e1b0d; + color: #7a170c; } + html.theme--documenter-dark .message-header { + align-items: center; + background-color: #fff; + border-radius: 0.4em 0.4em 0 0; + color: rgba(0, 0, 0, 0.7); + display: flex; + font-weight: 700; + justify-content: space-between; + line-height: 1.25; + padding: 0.75em 1em; + position: relative; } + html.theme--documenter-dark .message-header .delete { + flex-grow: 0; + flex-shrink: 0; + margin-left: 0.75em; } + html.theme--documenter-dark .message-header + .message-body { + border-width: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; } + html.theme--documenter-dark .message-body { + border-color: #5e6d6f; + border-radius: 0.4em; + border-style: solid; + border-width: 0 0 0 4px; + color: #fff; + padding: 1.25em 1.5em; } + html.theme--documenter-dark .message-body code, + html.theme--documenter-dark .message-body pre { + background-color: white; } + html.theme--documenter-dark .message-body pre code { + background-color: transparent; } + html.theme--documenter-dark .modal { + align-items: center; + display: none; + flex-direction: column; + justify-content: center; + overflow: hidden; + position: fixed; + z-index: 40; } + html.theme--documenter-dark .modal.is-active { + display: flex; } + html.theme--documenter-dark .modal-background { + background-color: rgba(10, 10, 10, 0.86); } + html.theme--documenter-dark .modal-content, + html.theme--documenter-dark .modal-card { + margin: 0 20px; + max-height: calc(100vh - 160px); + overflow: auto; + position: relative; + width: 100%; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .modal-content, + html.theme--documenter-dark .modal-card { + margin: 0 auto; + max-height: calc(100vh - 40px); + width: 640px; } } + html.theme--documenter-dark .modal-close { + background: none; + height: 40px; + position: fixed; + right: 20px; + top: 20px; + width: 40px; } + html.theme--documenter-dark .modal-card { + display: flex; + flex-direction: column; + max-height: calc(100vh - 40px); + overflow: hidden; + -ms-overflow-y: visible; } + html.theme--documenter-dark .modal-card-head, + html.theme--documenter-dark .modal-card-foot { + align-items: center; + background-color: #282f2f; + display: flex; + flex-shrink: 0; + justify-content: flex-start; + padding: 20px; + position: relative; } + html.theme--documenter-dark .modal-card-head { + border-bottom: 1px solid #5e6d6f; + border-top-left-radius: 8px; + border-top-right-radius: 8px; } + html.theme--documenter-dark .modal-card-title { + color: #f2f2f2; + flex-grow: 1; + flex-shrink: 0; + font-size: 1.5rem; + line-height: 1; } + html.theme--documenter-dark .modal-card-foot { + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + border-top: 1px solid #5e6d6f; } + html.theme--documenter-dark .modal-card-foot .button:not(:last-child) { + margin-right: 0.5em; } + html.theme--documenter-dark .modal-card-body { + -webkit-overflow-scrolling: touch; + background-color: white; + flex-grow: 1; + flex-shrink: 1; + overflow: auto; + padding: 20px; } + html.theme--documenter-dark .navbar { + background-color: #375a7f; + min-height: 4rem; + position: relative; + z-index: 30; } + html.theme--documenter-dark .navbar.is-white { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link { + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after { + border-color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-burger { + color: #0a0a0a; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-white .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-white .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link { + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after { + border-color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #f2f2f2; + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active { + background-color: white; + color: #0a0a0a; } } + html.theme--documenter-dark .navbar.is-black { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link { + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active { + background-color: black; + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after { + border-color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-burger { + color: white; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-black .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-black .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link { + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active { + background-color: black; + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after { + border-color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { + background-color: black; + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active { + background-color: #0a0a0a; + color: white; } } + html.theme--documenter-dark .navbar.is-light { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link { + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after { + border-color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-burger { + color: #282f2f; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-light .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-light .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link { + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after { + border-color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active { + background-color: #ecf0f1; + color: #282f2f; } } + html.theme--documenter-dark .navbar.is-dark, html.theme--documenter-dark .content kbd.navbar { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-brand > .navbar-item, html.theme--documenter-dark .content kbd.navbar .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link { + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active, + html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active { + background-color: #1d2122; + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after, html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after { + border-color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-burger, html.theme--documenter-dark .content kbd.navbar .navbar-burger { + color: #ecf0f1; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-dark .navbar-start > .navbar-item, html.theme--documenter-dark .content kbd.navbar .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-dark .navbar-end > .navbar-item, + html.theme--documenter-dark .content kbd.navbar .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link { + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus, + html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover, + html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active { + background-color: #1d2122; + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after, html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after { + border-color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #1d2122; + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active { + background-color: #282f2f; + color: #ecf0f1; } } + html.theme--documenter-dark .navbar.is-primary, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-brand > .navbar-item, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active { + background-color: #2f4d6d; + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-burger, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-primary .navbar-start > .navbar-item, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-primary .navbar-end > .navbar-item, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active { + background-color: #2f4d6d; + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #2f4d6d; + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { + background-color: #375a7f; + color: #fff; } } + html.theme--documenter-dark .navbar.is-link { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active { + background-color: #17a689; + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-link .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-link .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active { + background-color: #17a689; + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #17a689; + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active { + background-color: #1abc9c; + color: #fff; } } + html.theme--documenter-dark .navbar.is-info { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active { + background-color: #023d64; + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-info .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-info .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active { + background-color: #023d64; + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #023d64; + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active { + background-color: #024c7d; + color: #fff; } } + html.theme--documenter-dark .navbar.is-success { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active { + background-color: #006b2d; + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-success .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-success .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active { + background-color: #006b2d; + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #006b2d; + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active { + background-color: #008438; + color: #fff; } } + html.theme--documenter-dark .navbar.is-warning { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active { + background-color: #946e00; + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-warning .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-warning .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active { + background-color: #946e00; + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #946e00; + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { + background-color: #ad8100; + color: #fff; } } + html.theme--documenter-dark .navbar.is-danger { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active { + background-color: #86170b; + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-danger .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-danger .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active { + background-color: #86170b; + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #86170b; + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { + background-color: #9e1b0d; + color: #fff; } } + html.theme--documenter-dark .navbar > .container { + align-items: stretch; + display: flex; + min-height: 4rem; + width: 100%; } + html.theme--documenter-dark .navbar.has-shadow { + box-shadow: 0 2px 0 0 #282f2f; } + html.theme--documenter-dark .navbar.is-fixed-bottom, html.theme--documenter-dark .navbar.is-fixed-top { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + html.theme--documenter-dark .navbar.is-fixed-bottom { + bottom: 0; } + html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow { + box-shadow: 0 -2px 0 0 #282f2f; } + html.theme--documenter-dark .navbar.is-fixed-top { + top: 0; } + html.theme--documenter-dark html.has-navbar-fixed-top, + html.theme--documenter-dark body.has-navbar-fixed-top { + padding-top: 4rem; } + html.theme--documenter-dark html.has-navbar-fixed-bottom, + html.theme--documenter-dark body.has-navbar-fixed-bottom { + padding-bottom: 4rem; } + html.theme--documenter-dark .navbar-brand, + html.theme--documenter-dark .navbar-tabs { + align-items: stretch; + display: flex; + flex-shrink: 0; + min-height: 4rem; } + html.theme--documenter-dark .navbar-brand a.navbar-item:focus, html.theme--documenter-dark .navbar-brand a.navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .navbar-tabs { + -webkit-overflow-scrolling: touch; + max-width: 100vw; + overflow-x: auto; + overflow-y: hidden; } + html.theme--documenter-dark .navbar-burger { + color: #fff; + cursor: pointer; + display: block; + height: 4rem; + position: relative; + width: 4rem; + margin-left: auto; } + html.theme--documenter-dark .navbar-burger span { + background-color: currentColor; + display: block; + height: 1px; + left: calc(50% - 8px); + position: absolute; + transform-origin: center; + transition-duration: 86ms; + transition-property: background-color, opacity, transform; + transition-timing-function: ease-out; + width: 16px; } + html.theme--documenter-dark .navbar-burger span:nth-child(1) { + top: calc(50% - 6px); } + html.theme--documenter-dark .navbar-burger span:nth-child(2) { + top: calc(50% - 1px); } + html.theme--documenter-dark .navbar-burger span:nth-child(3) { + top: calc(50% + 4px); } + html.theme--documenter-dark .navbar-burger:hover { + background-color: rgba(0, 0, 0, 0.05); } + html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1) { + transform: translateY(5px) rotate(45deg); } + html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2) { + opacity: 0; } + html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3) { + transform: translateY(-5px) rotate(-45deg); } + html.theme--documenter-dark .navbar-menu { + display: none; } + html.theme--documenter-dark .navbar-item, + html.theme--documenter-dark .navbar-link { + color: #fff; + display: block; + line-height: 1.5; + padding: 0.5rem 0.75rem; + position: relative; } + html.theme--documenter-dark .navbar-item .icon:only-child, + html.theme--documenter-dark .navbar-link .icon:only-child { + margin-left: -0.25rem; + margin-right: -0.25rem; } + html.theme--documenter-dark a.navbar-item, + html.theme--documenter-dark .navbar-link { + cursor: pointer; } + html.theme--documenter-dark a.navbar-item:focus, html.theme--documenter-dark a.navbar-item:focus-within, html.theme--documenter-dark a.navbar-item:hover, html.theme--documenter-dark a.navbar-item.is-active, + html.theme--documenter-dark .navbar-link:focus, + html.theme--documenter-dark .navbar-link:focus-within, + html.theme--documenter-dark .navbar-link:hover, + html.theme--documenter-dark .navbar-link.is-active { + background-color: transparent; + color: #1abc9c; } + html.theme--documenter-dark .navbar-item { + display: block; + flex-grow: 0; + flex-shrink: 0; } + html.theme--documenter-dark .navbar-item img { + max-height: 1.75rem; } + html.theme--documenter-dark .navbar-item.has-dropdown { + padding: 0; } + html.theme--documenter-dark .navbar-item.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .navbar-item.is-tab { + border-bottom: 1px solid transparent; + min-height: 4rem; + padding-bottom: calc(0.5rem - 1px); } + html.theme--documenter-dark .navbar-item.is-tab:focus, html.theme--documenter-dark .navbar-item.is-tab:hover { + background-color: transparent; + border-bottom-color: #1abc9c; } + html.theme--documenter-dark .navbar-item.is-tab.is-active { + background-color: transparent; + border-bottom-color: #1abc9c; + border-bottom-style: solid; + border-bottom-width: 3px; + color: #1abc9c; + padding-bottom: calc(0.5rem - 3px); } + html.theme--documenter-dark .navbar-content { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .navbar-link:not(.is-arrowless) { + padding-right: 2.5em; } + html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after { + border-color: #fff; + margin-top: -0.375em; + right: 1.125em; } + html.theme--documenter-dark .navbar-dropdown { + font-size: 0.875rem; + padding-bottom: 0.5rem; + padding-top: 0.5rem; } + html.theme--documenter-dark .navbar-dropdown .navbar-item { + padding-left: 1.5rem; + padding-right: 1.5rem; } + html.theme--documenter-dark .navbar-divider { + background-color: rgba(0, 0, 0, 0.2); + border: none; + display: none; + height: 2px; + margin: 0.5rem 0; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .navbar > .container { + display: block; } + html.theme--documenter-dark .navbar-brand .navbar-item, + html.theme--documenter-dark .navbar-tabs .navbar-item { + align-items: center; + display: flex; } + html.theme--documenter-dark .navbar-link::after { + display: none; } + html.theme--documenter-dark .navbar-menu { + background-color: #375a7f; + box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); + padding: 0.5rem 0; } + html.theme--documenter-dark .navbar-menu.is-active { + display: block; } + html.theme--documenter-dark .navbar.is-fixed-bottom-touch, html.theme--documenter-dark .navbar.is-fixed-top-touch { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + html.theme--documenter-dark .navbar.is-fixed-bottom-touch { + bottom: 0; } + html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .navbar.is-fixed-top-touch { + top: 0; } + html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu, html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu { + -webkit-overflow-scrolling: touch; + max-height: calc(100vh - 4rem); + overflow: auto; } + html.theme--documenter-dark html.has-navbar-fixed-top-touch, + html.theme--documenter-dark body.has-navbar-fixed-top-touch { + padding-top: 4rem; } + html.theme--documenter-dark html.has-navbar-fixed-bottom-touch, + html.theme--documenter-dark body.has-navbar-fixed-bottom-touch { + padding-bottom: 4rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar, + html.theme--documenter-dark .navbar-menu, + html.theme--documenter-dark .navbar-start, + html.theme--documenter-dark .navbar-end { + align-items: stretch; + display: flex; } + html.theme--documenter-dark .navbar { + min-height: 4rem; } + html.theme--documenter-dark .navbar.is-spaced { + padding: 1rem 2rem; } + html.theme--documenter-dark .navbar.is-spaced .navbar-start, + html.theme--documenter-dark .navbar.is-spaced .navbar-end { + align-items: center; } + html.theme--documenter-dark .navbar.is-spaced a.navbar-item, + html.theme--documenter-dark .navbar.is-spaced .navbar-link { + border-radius: 0.4em; } + html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus, html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover, html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus, + html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover, + html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active { + background-color: transparent !important; } + html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { + background-color: transparent !important; } + html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { + background-color: transparent; + color: #dbdee0; } + html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { + background-color: transparent; + color: #1abc9c; } + html.theme--documenter-dark .navbar-burger { + display: none; } + html.theme--documenter-dark .navbar-item, + html.theme--documenter-dark .navbar-link { + align-items: center; + display: flex; } + html.theme--documenter-dark .navbar-item { + display: flex; } + html.theme--documenter-dark .navbar-item.has-dropdown { + align-items: stretch; } + html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after { + transform: rotate(135deg) translate(0.25em, -0.25em); } + html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown { + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 8px 8px 0 0; + border-top: none; + bottom: 100%; + box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); + top: auto; } + html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown { + display: block; } + .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { + opacity: 1; + pointer-events: auto; + transform: translateY(0); } + html.theme--documenter-dark .navbar-menu { + flex-grow: 1; + flex-shrink: 0; } + html.theme--documenter-dark .navbar-start { + justify-content: flex-start; + margin-right: auto; } + html.theme--documenter-dark .navbar-end { + justify-content: flex-end; + margin-left: auto; } + html.theme--documenter-dark .navbar-dropdown { + background-color: #375a7f; + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + border-top: 1px solid rgba(0, 0, 0, 0.2); + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); + display: none; + font-size: 0.875rem; + left: 0; + min-width: 100%; + position: absolute; + top: 100%; + z-index: 20; } + html.theme--documenter-dark .navbar-dropdown .navbar-item { + padding: 0.375rem 1rem; + white-space: nowrap; } + html.theme--documenter-dark .navbar-dropdown a.navbar-item { + padding-right: 3rem; } + html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus, html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover { + background-color: transparent; + color: #dbdee0; } + html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active { + background-color: transparent; + color: #1abc9c; } + .navbar.is-spaced html.theme--documenter-dark .navbar-dropdown, html.theme--documenter-dark .navbar-dropdown.is-boxed { + border-radius: 8px; + border-top: none; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + display: block; + opacity: 0; + pointer-events: none; + top: calc(100% + (-4px)); + transform: translateY(-5px); + transition-duration: 86ms; + transition-property: opacity, transform; } + html.theme--documenter-dark .navbar-dropdown.is-right { + left: auto; + right: 0; } + html.theme--documenter-dark .navbar-divider { + display: block; } + html.theme--documenter-dark .navbar > .container .navbar-brand, + html.theme--documenter-dark .container > .navbar .navbar-brand { + margin-left: -.75rem; } + html.theme--documenter-dark .navbar > .container .navbar-menu, + html.theme--documenter-dark .container > .navbar .navbar-menu { + margin-right: -.75rem; } + html.theme--documenter-dark .navbar.is-fixed-bottom-desktop, html.theme--documenter-dark .navbar.is-fixed-top-desktop { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + html.theme--documenter-dark .navbar.is-fixed-bottom-desktop { + bottom: 0; } + html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .navbar.is-fixed-top-desktop { + top: 0; } + html.theme--documenter-dark html.has-navbar-fixed-top-desktop, + html.theme--documenter-dark body.has-navbar-fixed-top-desktop { + padding-top: 4rem; } + html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop, + html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop { + padding-bottom: 4rem; } + html.theme--documenter-dark html.has-spaced-navbar-fixed-top, + html.theme--documenter-dark body.has-spaced-navbar-fixed-top { + padding-top: 6rem; } + html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom, + html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom { + padding-bottom: 6rem; } + html.theme--documenter-dark a.navbar-item.is-active, + html.theme--documenter-dark .navbar-link.is-active { + color: #1abc9c; } + html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover), + html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover) { + background-color: transparent; } + html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link, html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link { + background-color: transparent; } } + html.theme--documenter-dark .hero.is-fullheight-with-navbar { + min-height: calc(100vh - 4rem); } + html.theme--documenter-dark .pagination { + font-size: 15px; + margin: -0.25rem; } + html.theme--documenter-dark .pagination.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination { + font-size: 0.85em; } + html.theme--documenter-dark .pagination.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .pagination.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .pagination.is-rounded .pagination-previous, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-previous, + html.theme--documenter-dark .pagination.is-rounded .pagination-next, + html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-next { + padding-left: 1em; + padding-right: 1em; + border-radius: 290486px; } + html.theme--documenter-dark .pagination.is-rounded .pagination-link, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-link { + border-radius: 290486px; } + html.theme--documenter-dark .pagination, + html.theme--documenter-dark .pagination-list { + align-items: center; + display: flex; + justify-content: center; + text-align: center; } + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark .pagination-link, + html.theme--documenter-dark .pagination-ellipsis { + font-size: 1em; + justify-content: center; + margin: 0.25rem; + padding-left: 0.5em; + padding-right: 0.5em; + text-align: center; } + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark .pagination-link { + border-color: #5e6d6f; + color: #1abc9c; + min-width: 2.25em; } + html.theme--documenter-dark .pagination-previous:hover, + html.theme--documenter-dark .pagination-next:hover, + html.theme--documenter-dark .pagination-link:hover { + border-color: #8c9b9d; + color: #1dd2af; } + html.theme--documenter-dark .pagination-previous:focus, + html.theme--documenter-dark .pagination-next:focus, + html.theme--documenter-dark .pagination-link:focus { + border-color: #8c9b9d; } + html.theme--documenter-dark .pagination-previous:active, + html.theme--documenter-dark .pagination-next:active, + html.theme--documenter-dark .pagination-link:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); } + html.theme--documenter-dark .pagination-previous[disabled], + html.theme--documenter-dark .pagination-next[disabled], + html.theme--documenter-dark .pagination-link[disabled] { + background-color: #dbdee0; + border-color: #dbdee0; + box-shadow: none; + color: #5e6d6f; + opacity: 0.5; } + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .pagination-next { + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; } + html.theme--documenter-dark .pagination-link.is-current { + background-color: #1abc9c; + border-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .pagination-ellipsis { + color: #8c9b9d; + pointer-events: none; } + html.theme--documenter-dark .pagination-list { + flex-wrap: wrap; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .pagination { + flex-wrap: wrap; } + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .pagination-next { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .pagination-list li { + flex-grow: 1; + flex-shrink: 1; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .pagination-list { + flex-grow: 1; + flex-shrink: 1; + justify-content: flex-start; + order: 1; } + html.theme--documenter-dark .pagination-previous { + order: 2; } + html.theme--documenter-dark .pagination-next { + order: 3; } + html.theme--documenter-dark .pagination { + justify-content: space-between; } + html.theme--documenter-dark .pagination.is-centered .pagination-previous { + order: 1; } + html.theme--documenter-dark .pagination.is-centered .pagination-list { + justify-content: center; + order: 2; } + html.theme--documenter-dark .pagination.is-centered .pagination-next { + order: 3; } + html.theme--documenter-dark .pagination.is-right .pagination-previous { + order: 1; } + html.theme--documenter-dark .pagination.is-right .pagination-next { + order: 2; } + html.theme--documenter-dark .pagination.is-right .pagination-list { + justify-content: flex-end; + order: 3; } } + html.theme--documenter-dark .panel { + font-size: 15px; } + html.theme--documenter-dark .panel:not(:last-child) { + margin-bottom: 1.5rem; } + html.theme--documenter-dark .panel-heading, + html.theme--documenter-dark .panel-tabs, + html.theme--documenter-dark .panel-block { + border-bottom: 1px solid #5e6d6f; + border-left: 1px solid #5e6d6f; + border-right: 1px solid #5e6d6f; } + html.theme--documenter-dark .panel-heading:first-child, + html.theme--documenter-dark .panel-tabs:first-child, + html.theme--documenter-dark .panel-block:first-child { + border-top: 1px solid #5e6d6f; } + html.theme--documenter-dark .panel-heading { + background-color: #282f2f; + border-radius: 0.4em 0.4em 0 0; + color: #f2f2f2; + font-size: 1.25em; + font-weight: 300; + line-height: 1.25; + padding: 0.5em 0.75em; } + html.theme--documenter-dark .panel-tabs { + align-items: flex-end; + display: flex; + font-size: 0.875em; + justify-content: center; } + html.theme--documenter-dark .panel-tabs a { + border-bottom: 1px solid #5e6d6f; + margin-bottom: -1px; + padding: 0.5em; } + html.theme--documenter-dark .panel-tabs a.is-active { + border-bottom-color: #343c3d; + color: #17a689; } + html.theme--documenter-dark .panel-list a { + color: #fff; } + html.theme--documenter-dark .panel-list a:hover { + color: #1abc9c; } + html.theme--documenter-dark .panel-block { + align-items: center; + color: #f2f2f2; + display: flex; + justify-content: flex-start; + padding: 0.5em 0.75em; } + html.theme--documenter-dark .panel-block input[type="checkbox"] { + margin-right: 0.75em; } + html.theme--documenter-dark .panel-block > .control { + flex-grow: 1; + flex-shrink: 1; + width: 100%; } + html.theme--documenter-dark .panel-block.is-wrapped { + flex-wrap: wrap; } + html.theme--documenter-dark .panel-block.is-active { + border-left-color: #1abc9c; + color: #17a689; } + html.theme--documenter-dark .panel-block.is-active .panel-icon { + color: #1abc9c; } + html.theme--documenter-dark a.panel-block, + html.theme--documenter-dark label.panel-block { + cursor: pointer; } + html.theme--documenter-dark a.panel-block:hover, + html.theme--documenter-dark label.panel-block:hover { + background-color: #282f2f; } + html.theme--documenter-dark .panel-icon { + display: inline-block; + font-size: 14px; + height: 1em; + line-height: 1em; + text-align: center; + vertical-align: top; + width: 1em; + color: white; + margin-right: 0.75em; } + html.theme--documenter-dark .panel-icon .fa { + font-size: inherit; + line-height: inherit; } + html.theme--documenter-dark .tabs { + -webkit-overflow-scrolling: touch; + align-items: stretch; + display: flex; + font-size: 15px; + justify-content: space-between; + overflow: hidden; + overflow-x: auto; + white-space: nowrap; } + html.theme--documenter-dark .tabs a { + align-items: center; + border-bottom-color: #5e6d6f; + border-bottom-style: solid; + border-bottom-width: 1px; + color: #fff; + display: flex; + justify-content: center; + margin-bottom: -1px; + padding: 0.5em 1em; + vertical-align: top; } + html.theme--documenter-dark .tabs a:hover { + border-bottom-color: #f2f2f2; + color: #f2f2f2; } + html.theme--documenter-dark .tabs li { + display: block; } + html.theme--documenter-dark .tabs li.is-active a { + border-bottom-color: #1abc9c; + color: #1abc9c; } + html.theme--documenter-dark .tabs ul { + align-items: center; + border-bottom-color: #5e6d6f; + border-bottom-style: solid; + border-bottom-width: 1px; + display: flex; + flex-grow: 1; + flex-shrink: 0; + justify-content: flex-start; } + html.theme--documenter-dark .tabs ul.is-left { + padding-right: 0.75em; } + html.theme--documenter-dark .tabs ul.is-center { + flex: none; + justify-content: center; + padding-left: 0.75em; + padding-right: 0.75em; } + html.theme--documenter-dark .tabs ul.is-right { + justify-content: flex-end; + padding-left: 0.75em; } + html.theme--documenter-dark .tabs .icon:first-child { + margin-right: 0.5em; } + html.theme--documenter-dark .tabs .icon:last-child { + margin-left: 0.5em; } + html.theme--documenter-dark .tabs.is-centered ul { + justify-content: center; } + html.theme--documenter-dark .tabs.is-right ul { + justify-content: flex-end; } + html.theme--documenter-dark .tabs.is-boxed a { + border: 1px solid transparent; + border-radius: 0.4em 0.4em 0 0; } + html.theme--documenter-dark .tabs.is-boxed a:hover { + background-color: #282f2f; + border-bottom-color: #5e6d6f; } + html.theme--documenter-dark .tabs.is-boxed li.is-active a { + background-color: white; + border-color: #5e6d6f; + border-bottom-color: transparent !important; } + html.theme--documenter-dark .tabs.is-fullwidth li { + flex-grow: 1; + flex-shrink: 0; } + html.theme--documenter-dark .tabs.is-toggle a { + border-color: #5e6d6f; + border-style: solid; + border-width: 1px; + margin-bottom: 0; + position: relative; } + html.theme--documenter-dark .tabs.is-toggle a:hover { + background-color: #282f2f; + border-color: #8c9b9d; + z-index: 2; } + html.theme--documenter-dark .tabs.is-toggle li + li { + margin-left: -1px; } + html.theme--documenter-dark .tabs.is-toggle li:first-child a { + border-radius: 0.4em 0 0 0.4em; } + html.theme--documenter-dark .tabs.is-toggle li:last-child a { + border-radius: 0 0.4em 0.4em 0; } + html.theme--documenter-dark .tabs.is-toggle li.is-active a { + background-color: #1abc9c; + border-color: #1abc9c; + color: #fff; + z-index: 1; } + html.theme--documenter-dark .tabs.is-toggle ul { + border-bottom: none; } + html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a { + border-bottom-left-radius: 290486px; + border-top-left-radius: 290486px; + padding-left: 1.25em; } + html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a { + border-bottom-right-radius: 290486px; + border-top-right-radius: 290486px; + padding-right: 1.25em; } + html.theme--documenter-dark .tabs.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.tabs { + font-size: 0.85em; } + html.theme--documenter-dark .tabs.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .tabs.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .column { + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + padding: 0.75rem; } + .columns.is-mobile > html.theme--documenter-dark .column.is-narrow { + flex: none; } + .columns.is-mobile > html.theme--documenter-dark .column.is-full { + flex: none; + width: 100%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-three-quarters { + flex: none; + width: 75%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-two-thirds { + flex: none; + width: 66.6666%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-half { + flex: none; + width: 50%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-one-third { + flex: none; + width: 33.3333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-one-quarter { + flex: none; + width: 25%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-one-fifth { + flex: none; + width: 20%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-two-fifths { + flex: none; + width: 40%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-three-fifths { + flex: none; + width: 60%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-four-fifths { + flex: none; + width: 80%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-three-quarters { + margin-left: 75%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-two-thirds { + margin-left: 66.6666%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-half { + margin-left: 50%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-third { + margin-left: 33.3333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-quarter { + margin-left: 25%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-fifth { + margin-left: 20%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-two-fifths { + margin-left: 40%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-three-fifths { + margin-left: 60%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-four-fifths { + margin-left: 80%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-0 { + flex: none; + width: 0%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-0 { + margin-left: 0%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-1 { + flex: none; + width: 8.3333333333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-1 { + margin-left: 8.3333333333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-2 { + flex: none; + width: 16.6666666667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-2 { + margin-left: 16.6666666667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-3 { + flex: none; + width: 25%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-3 { + margin-left: 25%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-4 { + flex: none; + width: 33.3333333333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-4 { + margin-left: 33.3333333333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-5 { + flex: none; + width: 41.6666666667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-5 { + margin-left: 41.6666666667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-6 { + flex: none; + width: 50%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-6 { + margin-left: 50%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-7 { + flex: none; + width: 58.3333333333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-7 { + margin-left: 58.3333333333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-8 { + flex: none; + width: 66.6666666667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-8 { + margin-left: 66.6666666667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-9 { + flex: none; + width: 75%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-9 { + margin-left: 75%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-10 { + flex: none; + width: 83.3333333333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-10 { + margin-left: 83.3333333333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-11 { + flex: none; + width: 91.6666666667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-11 { + margin-left: 91.6666666667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-12 { + flex: none; + width: 100%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-12 { + margin-left: 100%; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .column.is-narrow-mobile { + flex: none; } + html.theme--documenter-dark .column.is-full-mobile { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-mobile { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-mobile { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-mobile { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-mobile { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-mobile { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-mobile { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-mobile { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-mobile { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-mobile { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-mobile { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-mobile { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-mobile { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-mobile { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-mobile { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-mobile { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-mobile { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-mobile { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-mobile { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-mobile { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-mobile { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-mobile { + flex: none; + width: 8.3333333333%; } + html.theme--documenter-dark .column.is-offset-1-mobile { + margin-left: 8.3333333333%; } + html.theme--documenter-dark .column.is-2-mobile { + flex: none; + width: 16.6666666667%; } + html.theme--documenter-dark .column.is-offset-2-mobile { + margin-left: 16.6666666667%; } + html.theme--documenter-dark .column.is-3-mobile { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-mobile { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-mobile { + flex: none; + width: 33.3333333333%; } + html.theme--documenter-dark .column.is-offset-4-mobile { + margin-left: 33.3333333333%; } + html.theme--documenter-dark .column.is-5-mobile { + flex: none; + width: 41.6666666667%; } + html.theme--documenter-dark .column.is-offset-5-mobile { + margin-left: 41.6666666667%; } + html.theme--documenter-dark .column.is-6-mobile { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-mobile { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-mobile { + flex: none; + width: 58.3333333333%; } + html.theme--documenter-dark .column.is-offset-7-mobile { + margin-left: 58.3333333333%; } + html.theme--documenter-dark .column.is-8-mobile { + flex: none; + width: 66.6666666667%; } + html.theme--documenter-dark .column.is-offset-8-mobile { + margin-left: 66.6666666667%; } + html.theme--documenter-dark .column.is-9-mobile { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-mobile { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-mobile { + flex: none; + width: 83.3333333333%; } + html.theme--documenter-dark .column.is-offset-10-mobile { + margin-left: 83.3333333333%; } + html.theme--documenter-dark .column.is-11-mobile { + flex: none; + width: 91.6666666667%; } + html.theme--documenter-dark .column.is-offset-11-mobile { + margin-left: 91.6666666667%; } + html.theme--documenter-dark .column.is-12-mobile { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-mobile { + margin-left: 100%; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .column.is-narrow, html.theme--documenter-dark .column.is-narrow-tablet { + flex: none; } + html.theme--documenter-dark .column.is-full, html.theme--documenter-dark .column.is-full-tablet { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters, html.theme--documenter-dark .column.is-three-quarters-tablet { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds, html.theme--documenter-dark .column.is-two-thirds-tablet { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half, html.theme--documenter-dark .column.is-half-tablet { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third, html.theme--documenter-dark .column.is-one-third-tablet { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter, html.theme--documenter-dark .column.is-one-quarter-tablet { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth, html.theme--documenter-dark .column.is-one-fifth-tablet { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths, html.theme--documenter-dark .column.is-two-fifths-tablet { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths, html.theme--documenter-dark .column.is-three-fifths-tablet { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths, html.theme--documenter-dark .column.is-four-fifths-tablet { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters, html.theme--documenter-dark .column.is-offset-three-quarters-tablet { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds, html.theme--documenter-dark .column.is-offset-two-thirds-tablet { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half, html.theme--documenter-dark .column.is-offset-half-tablet { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third, html.theme--documenter-dark .column.is-offset-one-third-tablet { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter, html.theme--documenter-dark .column.is-offset-one-quarter-tablet { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth, html.theme--documenter-dark .column.is-offset-one-fifth-tablet { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths, html.theme--documenter-dark .column.is-offset-two-fifths-tablet { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths, html.theme--documenter-dark .column.is-offset-three-fifths-tablet { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths, html.theme--documenter-dark .column.is-offset-four-fifths-tablet { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0, html.theme--documenter-dark .column.is-0-tablet { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0, html.theme--documenter-dark .column.is-offset-0-tablet { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1, html.theme--documenter-dark .column.is-1-tablet { + flex: none; + width: 8.3333333333%; } + html.theme--documenter-dark .column.is-offset-1, html.theme--documenter-dark .column.is-offset-1-tablet { + margin-left: 8.3333333333%; } + html.theme--documenter-dark .column.is-2, html.theme--documenter-dark .column.is-2-tablet { + flex: none; + width: 16.6666666667%; } + html.theme--documenter-dark .column.is-offset-2, html.theme--documenter-dark .column.is-offset-2-tablet { + margin-left: 16.6666666667%; } + html.theme--documenter-dark .column.is-3, html.theme--documenter-dark .column.is-3-tablet { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3, html.theme--documenter-dark .column.is-offset-3-tablet { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4, html.theme--documenter-dark .column.is-4-tablet { + flex: none; + width: 33.3333333333%; } + html.theme--documenter-dark .column.is-offset-4, html.theme--documenter-dark .column.is-offset-4-tablet { + margin-left: 33.3333333333%; } + html.theme--documenter-dark .column.is-5, html.theme--documenter-dark .column.is-5-tablet { + flex: none; + width: 41.6666666667%; } + html.theme--documenter-dark .column.is-offset-5, html.theme--documenter-dark .column.is-offset-5-tablet { + margin-left: 41.6666666667%; } + html.theme--documenter-dark .column.is-6, html.theme--documenter-dark .column.is-6-tablet { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6, html.theme--documenter-dark .column.is-offset-6-tablet { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7, html.theme--documenter-dark .column.is-7-tablet { + flex: none; + width: 58.3333333333%; } + html.theme--documenter-dark .column.is-offset-7, html.theme--documenter-dark .column.is-offset-7-tablet { + margin-left: 58.3333333333%; } + html.theme--documenter-dark .column.is-8, html.theme--documenter-dark .column.is-8-tablet { + flex: none; + width: 66.6666666667%; } + html.theme--documenter-dark .column.is-offset-8, html.theme--documenter-dark .column.is-offset-8-tablet { + margin-left: 66.6666666667%; } + html.theme--documenter-dark .column.is-9, html.theme--documenter-dark .column.is-9-tablet { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9, html.theme--documenter-dark .column.is-offset-9-tablet { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10, html.theme--documenter-dark .column.is-10-tablet { + flex: none; + width: 83.3333333333%; } + html.theme--documenter-dark .column.is-offset-10, html.theme--documenter-dark .column.is-offset-10-tablet { + margin-left: 83.3333333333%; } + html.theme--documenter-dark .column.is-11, html.theme--documenter-dark .column.is-11-tablet { + flex: none; + width: 91.6666666667%; } + html.theme--documenter-dark .column.is-offset-11, html.theme--documenter-dark .column.is-offset-11-tablet { + margin-left: 91.6666666667%; } + html.theme--documenter-dark .column.is-12, html.theme--documenter-dark .column.is-12-tablet { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12, html.theme--documenter-dark .column.is-offset-12-tablet { + margin-left: 100%; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .column.is-narrow-touch { + flex: none; } + html.theme--documenter-dark .column.is-full-touch { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-touch { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-touch { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-touch { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-touch { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-touch { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-touch { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-touch { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-touch { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-touch { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-touch { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-touch { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-touch { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-touch { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-touch { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-touch { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-touch { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-touch { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-touch { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-touch { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-touch { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-touch { + flex: none; + width: 8.3333333333%; } + html.theme--documenter-dark .column.is-offset-1-touch { + margin-left: 8.3333333333%; } + html.theme--documenter-dark .column.is-2-touch { + flex: none; + width: 16.6666666667%; } + html.theme--documenter-dark .column.is-offset-2-touch { + margin-left: 16.6666666667%; } + html.theme--documenter-dark .column.is-3-touch { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-touch { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-touch { + flex: none; + width: 33.3333333333%; } + html.theme--documenter-dark .column.is-offset-4-touch { + margin-left: 33.3333333333%; } + html.theme--documenter-dark .column.is-5-touch { + flex: none; + width: 41.6666666667%; } + html.theme--documenter-dark .column.is-offset-5-touch { + margin-left: 41.6666666667%; } + html.theme--documenter-dark .column.is-6-touch { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-touch { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-touch { + flex: none; + width: 58.3333333333%; } + html.theme--documenter-dark .column.is-offset-7-touch { + margin-left: 58.3333333333%; } + html.theme--documenter-dark .column.is-8-touch { + flex: none; + width: 66.6666666667%; } + html.theme--documenter-dark .column.is-offset-8-touch { + margin-left: 66.6666666667%; } + html.theme--documenter-dark .column.is-9-touch { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-touch { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-touch { + flex: none; + width: 83.3333333333%; } + html.theme--documenter-dark .column.is-offset-10-touch { + margin-left: 83.3333333333%; } + html.theme--documenter-dark .column.is-11-touch { + flex: none; + width: 91.6666666667%; } + html.theme--documenter-dark .column.is-offset-11-touch { + margin-left: 91.6666666667%; } + html.theme--documenter-dark .column.is-12-touch { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-touch { + margin-left: 100%; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .column.is-narrow-desktop { + flex: none; } + html.theme--documenter-dark .column.is-full-desktop { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-desktop { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-desktop { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-desktop { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-desktop { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-desktop { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-desktop { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-desktop { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-desktop { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-desktop { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-desktop { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-desktop { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-desktop { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-desktop { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-desktop { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-desktop { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-desktop { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-desktop { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-desktop { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-desktop { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-desktop { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-desktop { + flex: none; + width: 8.3333333333%; } + html.theme--documenter-dark .column.is-offset-1-desktop { + margin-left: 8.3333333333%; } + html.theme--documenter-dark .column.is-2-desktop { + flex: none; + width: 16.6666666667%; } + html.theme--documenter-dark .column.is-offset-2-desktop { + margin-left: 16.6666666667%; } + html.theme--documenter-dark .column.is-3-desktop { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-desktop { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-desktop { + flex: none; + width: 33.3333333333%; } + html.theme--documenter-dark .column.is-offset-4-desktop { + margin-left: 33.3333333333%; } + html.theme--documenter-dark .column.is-5-desktop { + flex: none; + width: 41.6666666667%; } + html.theme--documenter-dark .column.is-offset-5-desktop { + margin-left: 41.6666666667%; } + html.theme--documenter-dark .column.is-6-desktop { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-desktop { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-desktop { + flex: none; + width: 58.3333333333%; } + html.theme--documenter-dark .column.is-offset-7-desktop { + margin-left: 58.3333333333%; } + html.theme--documenter-dark .column.is-8-desktop { + flex: none; + width: 66.6666666667%; } + html.theme--documenter-dark .column.is-offset-8-desktop { + margin-left: 66.6666666667%; } + html.theme--documenter-dark .column.is-9-desktop { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-desktop { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-desktop { + flex: none; + width: 83.3333333333%; } + html.theme--documenter-dark .column.is-offset-10-desktop { + margin-left: 83.3333333333%; } + html.theme--documenter-dark .column.is-11-desktop { + flex: none; + width: 91.6666666667%; } + html.theme--documenter-dark .column.is-offset-11-desktop { + margin-left: 91.6666666667%; } + html.theme--documenter-dark .column.is-12-desktop { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-desktop { + margin-left: 100%; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .column.is-narrow-widescreen { + flex: none; } + html.theme--documenter-dark .column.is-full-widescreen { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-widescreen { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-widescreen { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-widescreen { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-widescreen { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-widescreen { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-widescreen { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-widescreen { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-widescreen { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-widescreen { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-widescreen { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-widescreen { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-widescreen { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-widescreen { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-widescreen { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-widescreen { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-widescreen { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-widescreen { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-widescreen { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-widescreen { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-widescreen { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-widescreen { + flex: none; + width: 8.3333333333%; } + html.theme--documenter-dark .column.is-offset-1-widescreen { + margin-left: 8.3333333333%; } + html.theme--documenter-dark .column.is-2-widescreen { + flex: none; + width: 16.6666666667%; } + html.theme--documenter-dark .column.is-offset-2-widescreen { + margin-left: 16.6666666667%; } + html.theme--documenter-dark .column.is-3-widescreen { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-widescreen { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-widescreen { + flex: none; + width: 33.3333333333%; } + html.theme--documenter-dark .column.is-offset-4-widescreen { + margin-left: 33.3333333333%; } + html.theme--documenter-dark .column.is-5-widescreen { + flex: none; + width: 41.6666666667%; } + html.theme--documenter-dark .column.is-offset-5-widescreen { + margin-left: 41.6666666667%; } + html.theme--documenter-dark .column.is-6-widescreen { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-widescreen { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-widescreen { + flex: none; + width: 58.3333333333%; } + html.theme--documenter-dark .column.is-offset-7-widescreen { + margin-left: 58.3333333333%; } + html.theme--documenter-dark .column.is-8-widescreen { + flex: none; + width: 66.6666666667%; } + html.theme--documenter-dark .column.is-offset-8-widescreen { + margin-left: 66.6666666667%; } + html.theme--documenter-dark .column.is-9-widescreen { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-widescreen { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-widescreen { + flex: none; + width: 83.3333333333%; } + html.theme--documenter-dark .column.is-offset-10-widescreen { + margin-left: 83.3333333333%; } + html.theme--documenter-dark .column.is-11-widescreen { + flex: none; + width: 91.6666666667%; } + html.theme--documenter-dark .column.is-offset-11-widescreen { + margin-left: 91.6666666667%; } + html.theme--documenter-dark .column.is-12-widescreen { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-widescreen { + margin-left: 100%; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .column.is-narrow-fullhd { + flex: none; } + html.theme--documenter-dark .column.is-full-fullhd { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-fullhd { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-fullhd { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-fullhd { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-fullhd { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-fullhd { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-fullhd { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-fullhd { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-fullhd { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-fullhd { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-fullhd { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-fullhd { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-fullhd { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-fullhd { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-fullhd { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-fullhd { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-fullhd { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-fullhd { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-fullhd { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-fullhd { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-fullhd { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-fullhd { + flex: none; + width: 8.3333333333%; } + html.theme--documenter-dark .column.is-offset-1-fullhd { + margin-left: 8.3333333333%; } + html.theme--documenter-dark .column.is-2-fullhd { + flex: none; + width: 16.6666666667%; } + html.theme--documenter-dark .column.is-offset-2-fullhd { + margin-left: 16.6666666667%; } + html.theme--documenter-dark .column.is-3-fullhd { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-fullhd { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-fullhd { + flex: none; + width: 33.3333333333%; } + html.theme--documenter-dark .column.is-offset-4-fullhd { + margin-left: 33.3333333333%; } + html.theme--documenter-dark .column.is-5-fullhd { + flex: none; + width: 41.6666666667%; } + html.theme--documenter-dark .column.is-offset-5-fullhd { + margin-left: 41.6666666667%; } + html.theme--documenter-dark .column.is-6-fullhd { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-fullhd { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-fullhd { + flex: none; + width: 58.3333333333%; } + html.theme--documenter-dark .column.is-offset-7-fullhd { + margin-left: 58.3333333333%; } + html.theme--documenter-dark .column.is-8-fullhd { + flex: none; + width: 66.6666666667%; } + html.theme--documenter-dark .column.is-offset-8-fullhd { + margin-left: 66.6666666667%; } + html.theme--documenter-dark .column.is-9-fullhd { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-fullhd { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-fullhd { + flex: none; + width: 83.3333333333%; } + html.theme--documenter-dark .column.is-offset-10-fullhd { + margin-left: 83.3333333333%; } + html.theme--documenter-dark .column.is-11-fullhd { + flex: none; + width: 91.6666666667%; } + html.theme--documenter-dark .column.is-offset-11-fullhd { + margin-left: 91.6666666667%; } + html.theme--documenter-dark .column.is-12-fullhd { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-fullhd { + margin-left: 100%; } } + html.theme--documenter-dark .columns { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; } + html.theme--documenter-dark .columns:last-child { + margin-bottom: -0.75rem; } + html.theme--documenter-dark .columns:not(:last-child) { + margin-bottom: calc(1.5rem - 0.75rem); } + html.theme--documenter-dark .columns.is-centered { + justify-content: center; } + html.theme--documenter-dark .columns.is-gapless { + margin-left: 0; + margin-right: 0; + margin-top: 0; } + html.theme--documenter-dark .columns.is-gapless > .column { + margin: 0; + padding: 0 !important; } + html.theme--documenter-dark .columns.is-gapless:not(:last-child) { + margin-bottom: 1.5rem; } + html.theme--documenter-dark .columns.is-gapless:last-child { + margin-bottom: 0; } + html.theme--documenter-dark .columns.is-mobile { + display: flex; } + html.theme--documenter-dark .columns.is-multiline { + flex-wrap: wrap; } + html.theme--documenter-dark .columns.is-vcentered { + align-items: center; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns:not(.is-desktop) { + display: flex; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-desktop { + display: flex; } } + html.theme--documenter-dark .columns.is-variable { + --columnGap: 0.75rem; + margin-left: calc(-1 * var(--columnGap)); + margin-right: calc(-1 * var(--columnGap)); } + html.theme--documenter-dark .columns.is-variable .column { + padding-left: var(--columnGap); + padding-right: var(--columnGap); } + html.theme--documenter-dark .columns.is-variable.is-0 { + --columnGap: 0rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-0-mobile { + --columnGap: 0rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-0-tablet { + --columnGap: 0rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-0-tablet-only { + --columnGap: 0rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-0-touch { + --columnGap: 0rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-0-desktop { + --columnGap: 0rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-0-desktop-only { + --columnGap: 0rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-0-widescreen { + --columnGap: 0rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only { + --columnGap: 0rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-0-fullhd { + --columnGap: 0rem; } } + html.theme--documenter-dark .columns.is-variable.is-1 { + --columnGap: 0.25rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-1-mobile { + --columnGap: 0.25rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-1-tablet { + --columnGap: 0.25rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-1-tablet-only { + --columnGap: 0.25rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-1-touch { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-1-desktop { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-1-desktop-only { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-1-widescreen { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-1-fullhd { + --columnGap: 0.25rem; } } + html.theme--documenter-dark .columns.is-variable.is-2 { + --columnGap: 0.5rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-2-mobile { + --columnGap: 0.5rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-2-tablet { + --columnGap: 0.5rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-2-tablet-only { + --columnGap: 0.5rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-2-touch { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-2-desktop { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-2-desktop-only { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-2-widescreen { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-2-fullhd { + --columnGap: 0.5rem; } } + html.theme--documenter-dark .columns.is-variable.is-3 { + --columnGap: 0.75rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-3-mobile { + --columnGap: 0.75rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-3-tablet { + --columnGap: 0.75rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-3-tablet-only { + --columnGap: 0.75rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-3-touch { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-3-desktop { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-3-desktop-only { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-3-widescreen { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-3-fullhd { + --columnGap: 0.75rem; } } + html.theme--documenter-dark .columns.is-variable.is-4 { + --columnGap: 1rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-4-mobile { + --columnGap: 1rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-4-tablet { + --columnGap: 1rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-4-tablet-only { + --columnGap: 1rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-4-touch { + --columnGap: 1rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-4-desktop { + --columnGap: 1rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-4-desktop-only { + --columnGap: 1rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-4-widescreen { + --columnGap: 1rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only { + --columnGap: 1rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-4-fullhd { + --columnGap: 1rem; } } + html.theme--documenter-dark .columns.is-variable.is-5 { + --columnGap: 1.25rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-5-mobile { + --columnGap: 1.25rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-5-tablet { + --columnGap: 1.25rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-5-tablet-only { + --columnGap: 1.25rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-5-touch { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-5-desktop { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-5-desktop-only { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-5-widescreen { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-5-fullhd { + --columnGap: 1.25rem; } } + html.theme--documenter-dark .columns.is-variable.is-6 { + --columnGap: 1.5rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-6-mobile { + --columnGap: 1.5rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-6-tablet { + --columnGap: 1.5rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-6-tablet-only { + --columnGap: 1.5rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-6-touch { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-6-desktop { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-6-desktop-only { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-6-widescreen { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-6-fullhd { + --columnGap: 1.5rem; } } + html.theme--documenter-dark .columns.is-variable.is-7 { + --columnGap: 1.75rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-7-mobile { + --columnGap: 1.75rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-7-tablet { + --columnGap: 1.75rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-7-tablet-only { + --columnGap: 1.75rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-7-touch { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-7-desktop { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-7-desktop-only { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-7-widescreen { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-7-fullhd { + --columnGap: 1.75rem; } } + html.theme--documenter-dark .columns.is-variable.is-8 { + --columnGap: 2rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-8-mobile { + --columnGap: 2rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-8-tablet { + --columnGap: 2rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-8-tablet-only { + --columnGap: 2rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-8-touch { + --columnGap: 2rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-8-desktop { + --columnGap: 2rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-8-desktop-only { + --columnGap: 2rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-8-widescreen { + --columnGap: 2rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only { + --columnGap: 2rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-8-fullhd { + --columnGap: 2rem; } } + html.theme--documenter-dark .tile { + align-items: stretch; + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + min-height: min-content; } + html.theme--documenter-dark .tile.is-ancestor { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; } + html.theme--documenter-dark .tile.is-ancestor:last-child { + margin-bottom: -0.75rem; } + html.theme--documenter-dark .tile.is-ancestor:not(:last-child) { + margin-bottom: 0.75rem; } + html.theme--documenter-dark .tile.is-child { + margin: 0 !important; } + html.theme--documenter-dark .tile.is-parent { + padding: 0.75rem; } + html.theme--documenter-dark .tile.is-vertical { + flex-direction: column; } + html.theme--documenter-dark .tile.is-vertical > .tile.is-child:not(:last-child) { + margin-bottom: 1.5rem !important; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .tile:not(.is-child) { + display: flex; } + html.theme--documenter-dark .tile.is-1 { + flex: none; + width: 8.3333333333%; } + html.theme--documenter-dark .tile.is-2 { + flex: none; + width: 16.6666666667%; } + html.theme--documenter-dark .tile.is-3 { + flex: none; + width: 25%; } + html.theme--documenter-dark .tile.is-4 { + flex: none; + width: 33.3333333333%; } + html.theme--documenter-dark .tile.is-5 { + flex: none; + width: 41.6666666667%; } + html.theme--documenter-dark .tile.is-6 { + flex: none; + width: 50%; } + html.theme--documenter-dark .tile.is-7 { + flex: none; + width: 58.3333333333%; } + html.theme--documenter-dark .tile.is-8 { + flex: none; + width: 66.6666666667%; } + html.theme--documenter-dark .tile.is-9 { + flex: none; + width: 75%; } + html.theme--documenter-dark .tile.is-10 { + flex: none; + width: 83.3333333333%; } + html.theme--documenter-dark .tile.is-11 { + flex: none; + width: 91.6666666667%; } + html.theme--documenter-dark .tile.is-12 { + flex: none; + width: 100%; } } + html.theme--documenter-dark .hero { + align-items: stretch; + display: flex; + flex-direction: column; + justify-content: space-between; } + html.theme--documenter-dark .hero .navbar { + background: none; } + html.theme--documenter-dark .hero .tabs ul { + border-bottom: none; } + html.theme--documenter-dark .hero.is-white { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-white strong { + color: inherit; } + html.theme--documenter-dark .hero.is-white .title { + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-white .subtitle { + color: rgba(10, 10, 10, 0.9); } + html.theme--documenter-dark .hero.is-white .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-white .subtitle strong { + color: #0a0a0a; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-white .navbar-menu { + background-color: white; } } + html.theme--documenter-dark .hero.is-white .navbar-item, + html.theme--documenter-dark .hero.is-white .navbar-link { + color: rgba(10, 10, 10, 0.7); } + html.theme--documenter-dark .hero.is-white a.navbar-item:hover, html.theme--documenter-dark .hero.is-white a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-white .navbar-link:hover, + html.theme--documenter-dark .hero.is-white .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-white .tabs a { + color: #0a0a0a; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-white .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-white .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-white .tabs.is-boxed a, html.theme--documenter-dark .hero.is-white .tabs.is-toggle a { + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .hero.is-white.is-bold { + background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); } } + html.theme--documenter-dark .hero.is-black { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-black strong { + color: inherit; } + html.theme--documenter-dark .hero.is-black .title { + color: white; } + html.theme--documenter-dark .hero.is-black .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-black .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-black .subtitle strong { + color: white; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-black .navbar-menu { + background-color: #0a0a0a; } } + html.theme--documenter-dark .hero.is-black .navbar-item, + html.theme--documenter-dark .hero.is-black .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-black a.navbar-item:hover, html.theme--documenter-dark .hero.is-black a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-black .navbar-link:hover, + html.theme--documenter-dark .hero.is-black .navbar-link.is-active { + background-color: black; + color: white; } + html.theme--documenter-dark .hero.is-black .tabs a { + color: white; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-black .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-black .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-black .tabs.is-boxed a, html.theme--documenter-dark .hero.is-black .tabs.is-toggle a { + color: white; } + html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover { + background-color: white; + border-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-black.is-bold { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } } + html.theme--documenter-dark .hero.is-light { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-light strong { + color: inherit; } + html.theme--documenter-dark .hero.is-light .title { + color: #282f2f; } + html.theme--documenter-dark .hero.is-light .subtitle { + color: rgba(40, 47, 47, 0.9); } + html.theme--documenter-dark .hero.is-light .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-light .subtitle strong { + color: #282f2f; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-light .navbar-menu { + background-color: #ecf0f1; } } + html.theme--documenter-dark .hero.is-light .navbar-item, + html.theme--documenter-dark .hero.is-light .navbar-link { + color: rgba(40, 47, 47, 0.7); } + html.theme--documenter-dark .hero.is-light a.navbar-item:hover, html.theme--documenter-dark .hero.is-light a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-light .navbar-link:hover, + html.theme--documenter-dark .hero.is-light .navbar-link.is-active { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .hero.is-light .tabs a { + color: #282f2f; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-light .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-light .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-light .tabs.is-boxed a, html.theme--documenter-dark .hero.is-light .tabs.is-toggle a { + color: #282f2f; } + html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover { + background-color: #282f2f; + border-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-light.is-bold { + background-image: linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%); } } + html.theme--documenter-dark .hero.is-dark, html.theme--documenter-dark .content kbd.hero { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-dark strong, + html.theme--documenter-dark .content kbd.hero strong { + color: inherit; } + html.theme--documenter-dark .hero.is-dark .title, html.theme--documenter-dark .content kbd.hero .title { + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-dark .subtitle, html.theme--documenter-dark .content kbd.hero .subtitle { + color: rgba(236, 240, 241, 0.9); } + html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button), html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-dark .subtitle strong, + html.theme--documenter-dark .content kbd.hero .subtitle strong { + color: #ecf0f1; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-dark .navbar-menu, html.theme--documenter-dark .content kbd.hero .navbar-menu { + background-color: #282f2f; } } + html.theme--documenter-dark .hero.is-dark .navbar-item, html.theme--documenter-dark .content kbd.hero .navbar-item, + html.theme--documenter-dark .hero.is-dark .navbar-link, + html.theme--documenter-dark .content kbd.hero .navbar-link { + color: rgba(236, 240, 241, 0.7); } + html.theme--documenter-dark .hero.is-dark a.navbar-item:hover, html.theme--documenter-dark .content kbd.hero a.navbar-item:hover, html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active, html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-dark .navbar-link:hover, + html.theme--documenter-dark .content kbd.hero .navbar-link:hover, + html.theme--documenter-dark .hero.is-dark .navbar-link.is-active, + html.theme--documenter-dark .content kbd.hero .navbar-link.is-active { + background-color: #1d2122; + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-dark .tabs a, html.theme--documenter-dark .content kbd.hero .tabs a { + color: #ecf0f1; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-dark .tabs a:hover, html.theme--documenter-dark .content kbd.hero .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-dark .tabs li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a { + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover { + background-color: #ecf0f1; + border-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .hero.is-dark.is-bold, html.theme--documenter-dark .content kbd.hero.is-bold { + background-image: linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu, html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%); } } + html.theme--documenter-dark .hero.is-primary, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-primary strong, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink strong { + color: inherit; } + html.theme--documenter-dark .hero.is-primary .title, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .title { + color: #fff; } + html.theme--documenter-dark .hero.is-primary .subtitle, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button), html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-primary .subtitle strong, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-primary .navbar-menu, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-menu { + background-color: #375a7f; } } + html.theme--documenter-dark .hero.is-primary .navbar-item, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-item, + html.theme--documenter-dark .hero.is-primary .navbar-link, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-primary a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a.navbar-item:hover, html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-primary .navbar-link:hover, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link:hover, + html.theme--documenter-dark .hero.is-primary .navbar-link.is-active, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link.is-active { + background-color: #2f4d6d; + color: #fff; } + html.theme--documenter-dark .hero.is-primary .tabs a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-primary .tabs a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-primary .tabs li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #375a7f; } + html.theme--documenter-dark .hero.is-primary.is-bold, html.theme--documenter-dark .docstring > section > a.hero.is-bold.docs-sourcelink { + background-image: linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu, html.theme--documenter-dark .docstring > section > a.hero.is-bold.docs-sourcelink .navbar-menu { + background-image: linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%); } } + html.theme--documenter-dark .hero.is-link { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-link strong { + color: inherit; } + html.theme--documenter-dark .hero.is-link .title { + color: #fff; } + html.theme--documenter-dark .hero.is-link .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-link .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-link .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-link .navbar-menu { + background-color: #1abc9c; } } + html.theme--documenter-dark .hero.is-link .navbar-item, + html.theme--documenter-dark .hero.is-link .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-link a.navbar-item:hover, html.theme--documenter-dark .hero.is-link a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-link .navbar-link:hover, + html.theme--documenter-dark .hero.is-link .navbar-link.is-active { + background-color: #17a689; + color: #fff; } + html.theme--documenter-dark .hero.is-link .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-link .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-link .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-link .tabs.is-boxed a, html.theme--documenter-dark .hero.is-link .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #1abc9c; } + html.theme--documenter-dark .hero.is-link.is-bold { + background-image: linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%); } } + html.theme--documenter-dark .hero.is-info { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-info strong { + color: inherit; } + html.theme--documenter-dark .hero.is-info .title { + color: #fff; } + html.theme--documenter-dark .hero.is-info .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-info .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-info .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-info .navbar-menu { + background-color: #024c7d; } } + html.theme--documenter-dark .hero.is-info .navbar-item, + html.theme--documenter-dark .hero.is-info .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-info a.navbar-item:hover, html.theme--documenter-dark .hero.is-info a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-info .navbar-link:hover, + html.theme--documenter-dark .hero.is-info .navbar-link.is-active { + background-color: #023d64; + color: #fff; } + html.theme--documenter-dark .hero.is-info .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-info .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-info .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-info .tabs.is-boxed a, html.theme--documenter-dark .hero.is-info .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #024c7d; } + html.theme--documenter-dark .hero.is-info.is-bold { + background-image: linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%); } } + html.theme--documenter-dark .hero.is-success { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-success strong { + color: inherit; } + html.theme--documenter-dark .hero.is-success .title { + color: #fff; } + html.theme--documenter-dark .hero.is-success .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-success .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-success .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-success .navbar-menu { + background-color: #008438; } } + html.theme--documenter-dark .hero.is-success .navbar-item, + html.theme--documenter-dark .hero.is-success .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-success a.navbar-item:hover, html.theme--documenter-dark .hero.is-success a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-success .navbar-link:hover, + html.theme--documenter-dark .hero.is-success .navbar-link.is-active { + background-color: #006b2d; + color: #fff; } + html.theme--documenter-dark .hero.is-success .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-success .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-success .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-success .tabs.is-boxed a, html.theme--documenter-dark .hero.is-success .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #008438; } + html.theme--documenter-dark .hero.is-success.is-bold { + background-image: linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%); } } + html.theme--documenter-dark .hero.is-warning { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-warning strong { + color: inherit; } + html.theme--documenter-dark .hero.is-warning .title { + color: #fff; } + html.theme--documenter-dark .hero.is-warning .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-warning .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-warning .navbar-menu { + background-color: #ad8100; } } + html.theme--documenter-dark .hero.is-warning .navbar-item, + html.theme--documenter-dark .hero.is-warning .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-warning a.navbar-item:hover, html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-warning .navbar-link:hover, + html.theme--documenter-dark .hero.is-warning .navbar-link.is-active { + background-color: #946e00; + color: #fff; } + html.theme--documenter-dark .hero.is-warning .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-warning .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-warning .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #ad8100; } + html.theme--documenter-dark .hero.is-warning.is-bold { + background-image: linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%); } } + html.theme--documenter-dark .hero.is-danger { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-danger strong { + color: inherit; } + html.theme--documenter-dark .hero.is-danger .title { + color: #fff; } + html.theme--documenter-dark .hero.is-danger .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-danger .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-danger .navbar-menu { + background-color: #9e1b0d; } } + html.theme--documenter-dark .hero.is-danger .navbar-item, + html.theme--documenter-dark .hero.is-danger .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-danger a.navbar-item:hover, html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-danger .navbar-link:hover, + html.theme--documenter-dark .hero.is-danger .navbar-link.is-active { + background-color: #86170b; + color: #fff; } + html.theme--documenter-dark .hero.is-danger .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-danger .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-danger .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #9e1b0d; } + html.theme--documenter-dark .hero.is-danger.is-bold { + background-image: linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%); } } + html.theme--documenter-dark .hero.is-small .hero-body, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.hero .hero-body { + padding-bottom: 1.5rem; + padding-top: 1.5rem; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .hero.is-medium .hero-body { + padding-bottom: 9rem; + padding-top: 9rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .hero.is-large .hero-body { + padding-bottom: 18rem; + padding-top: 18rem; } } + html.theme--documenter-dark .hero.is-halfheight .hero-body, html.theme--documenter-dark .hero.is-fullheight .hero-body, html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body { + align-items: center; + display: flex; } + html.theme--documenter-dark .hero.is-halfheight .hero-body > .container, html.theme--documenter-dark .hero.is-fullheight .hero-body > .container, html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body > .container { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .hero.is-halfheight { + min-height: 50vh; } + html.theme--documenter-dark .hero.is-fullheight { + min-height: 100vh; } + html.theme--documenter-dark .hero-video { + overflow: hidden; } + html.theme--documenter-dark .hero-video video { + left: 50%; + min-height: 100%; + min-width: 100%; + position: absolute; + top: 50%; + transform: translate3d(-50%, -50%, 0); } + html.theme--documenter-dark .hero-video.is-transparent { + opacity: 0.3; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero-video { + display: none; } } + html.theme--documenter-dark .hero-buttons { + margin-top: 1.5rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero-buttons .button { + display: flex; } + html.theme--documenter-dark .hero-buttons .button:not(:last-child) { + margin-bottom: 0.75rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .hero-buttons { + display: flex; + justify-content: center; } + html.theme--documenter-dark .hero-buttons .button:not(:last-child) { + margin-right: 1.5rem; } } + html.theme--documenter-dark .hero-head, + html.theme--documenter-dark .hero-foot { + flex-grow: 0; + flex-shrink: 0; } + html.theme--documenter-dark .hero-body { + flex-grow: 1; + flex-shrink: 0; + padding: 3rem 1.5rem; } + html.theme--documenter-dark .section { + padding: 3rem 1.5rem; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .section.is-medium { + padding: 9rem 1.5rem; } + html.theme--documenter-dark .section.is-large { + padding: 18rem 1.5rem; } } + html.theme--documenter-dark .footer { + background-color: #282f2f; + padding: 3rem 1.5rem 6rem; } + html.theme--documenter-dark hr { + height: 1px; } + html.theme--documenter-dark h6 { + text-transform: uppercase; + letter-spacing: 0.5px; } + html.theme--documenter-dark .hero { + background-color: #343c3d; } + html.theme--documenter-dark a { + transition: all 200ms ease; } + html.theme--documenter-dark .button { + transition: all 200ms ease; + border-width: 1px; + color: white; } + html.theme--documenter-dark .button.is-active, html.theme--documenter-dark .button.is-focused, html.theme--documenter-dark .button:active, html.theme--documenter-dark .button:focus { + box-shadow: 0 0 0 2px rgba(140, 155, 157, 0.5); } + html.theme--documenter-dark .button.is-white.is-hovered, html.theme--documenter-dark .button.is-white:hover { + background-color: white; } + html.theme--documenter-dark .button.is-white.is-active, html.theme--documenter-dark .button.is-white.is-focused, html.theme--documenter-dark .button.is-white:active, html.theme--documenter-dark .button.is-white:focus { + border-color: white; + box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5); } + html.theme--documenter-dark .button.is-black.is-hovered, html.theme--documenter-dark .button.is-black:hover { + background-color: #1d1d1d; } + html.theme--documenter-dark .button.is-black.is-active, html.theme--documenter-dark .button.is-black.is-focused, html.theme--documenter-dark .button.is-black:active, html.theme--documenter-dark .button.is-black:focus { + border-color: #0a0a0a; + box-shadow: 0 0 0 2px rgba(10, 10, 10, 0.5); } + html.theme--documenter-dark .button.is-light.is-hovered, html.theme--documenter-dark .button.is-light:hover { + background-color: white; } + html.theme--documenter-dark .button.is-light.is-active, html.theme--documenter-dark .button.is-light.is-focused, html.theme--documenter-dark .button.is-light:active, html.theme--documenter-dark .button.is-light:focus { + border-color: #ecf0f1; + box-shadow: 0 0 0 2px rgba(236, 240, 241, 0.5); } + html.theme--documenter-dark .button.is-dark.is-hovered, html.theme--documenter-dark .content kbd.button.is-hovered, html.theme--documenter-dark .button.is-dark:hover, html.theme--documenter-dark .content kbd.button:hover { + background-color: #3a4344; } + html.theme--documenter-dark .button.is-dark.is-active, html.theme--documenter-dark .content kbd.button.is-active, html.theme--documenter-dark .button.is-dark.is-focused, html.theme--documenter-dark .content kbd.button.is-focused, html.theme--documenter-dark .button.is-dark:active, html.theme--documenter-dark .content kbd.button:active, html.theme--documenter-dark .button.is-dark:focus, html.theme--documenter-dark .content kbd.button:focus { + border-color: #282f2f; + box-shadow: 0 0 0 2px rgba(40, 47, 47, 0.5); } + html.theme--documenter-dark .button.is-primary.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary:hover, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:hover { + background-color: #436d9a; } + html.theme--documenter-dark .button.is-primary.is-active, html.theme--documenter-dark .docstring > section > a.button.is-active.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink, html.theme--documenter-dark .button.is-primary:active, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:active, html.theme--documenter-dark .button.is-primary:focus, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus { + border-color: #375a7f; + box-shadow: 0 0 0 2px rgba(55, 90, 127, 0.5); } + html.theme--documenter-dark .button.is-link.is-hovered, html.theme--documenter-dark .button.is-link:hover { + background-color: #1fdeb8; } + html.theme--documenter-dark .button.is-link.is-active, html.theme--documenter-dark .button.is-link.is-focused, html.theme--documenter-dark .button.is-link:active, html.theme--documenter-dark .button.is-link:focus { + border-color: #1abc9c; + box-shadow: 0 0 0 2px rgba(26, 188, 156, 0.5); } + html.theme--documenter-dark .button.is-info.is-hovered, html.theme--documenter-dark .button.is-info:hover { + background-color: #0363a3; } + html.theme--documenter-dark .button.is-info.is-active, html.theme--documenter-dark .button.is-info.is-focused, html.theme--documenter-dark .button.is-info:active, html.theme--documenter-dark .button.is-info:focus { + border-color: #024c7d; + box-shadow: 0 0 0 2px rgba(2, 76, 125, 0.5); } + html.theme--documenter-dark .button.is-success.is-hovered, html.theme--documenter-dark .button.is-success:hover { + background-color: #00aa48; } + html.theme--documenter-dark .button.is-success.is-active, html.theme--documenter-dark .button.is-success.is-focused, html.theme--documenter-dark .button.is-success:active, html.theme--documenter-dark .button.is-success:focus { + border-color: #008438; + box-shadow: 0 0 0 2px rgba(0, 132, 56, 0.5); } + html.theme--documenter-dark .button.is-warning.is-hovered, html.theme--documenter-dark .button.is-warning:hover { + background-color: #d39e00; } + html.theme--documenter-dark .button.is-warning.is-active, html.theme--documenter-dark .button.is-warning.is-focused, html.theme--documenter-dark .button.is-warning:active, html.theme--documenter-dark .button.is-warning:focus { + border-color: #ad8100; + box-shadow: 0 0 0 2px rgba(173, 129, 0, 0.5); } + html.theme--documenter-dark .button.is-danger.is-hovered, html.theme--documenter-dark .button.is-danger:hover { + background-color: #c12110; } + html.theme--documenter-dark .button.is-danger.is-active, html.theme--documenter-dark .button.is-danger.is-focused, html.theme--documenter-dark .button.is-danger:active, html.theme--documenter-dark .button.is-danger:focus { + border-color: #9e1b0d; + box-shadow: 0 0 0 2px rgba(158, 27, 13, 0.5); } + html.theme--documenter-dark .label { + color: #dbdee0; } + html.theme--documenter-dark .button, + html.theme--documenter-dark .control.has-icons-left .icon, + html.theme--documenter-dark .control.has-icons-right .icon, + html.theme--documenter-dark .input, + html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark .pagination-ellipsis, + html.theme--documenter-dark .pagination-link, + html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .select, + html.theme--documenter-dark .select select, + html.theme--documenter-dark .textarea { + height: 2.5em; } + html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark .textarea { + transition: all 200ms ease; + box-shadow: none; + border-width: 1px; + padding-left: 1em; + padding-right: 1em; } + html.theme--documenter-dark .select:after, + html.theme--documenter-dark .select select { + border-width: 1px; } + html.theme--documenter-dark .control.has-addons .button, + html.theme--documenter-dark .control.has-addons .input, + html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search > input, + html.theme--documenter-dark .control.has-addons .select { + margin-right: -1px; } + html.theme--documenter-dark .notification { + background-color: #343c3d; } + html.theme--documenter-dark .card { + box-shadow: none; + border: 1px solid #343c3d; + background-color: #282f2f; + border-radius: 0.4em; } + html.theme--documenter-dark .card .card-image img { + border-radius: 0.4em 0.4em 0 0; } + html.theme--documenter-dark .card .card-header { + box-shadow: none; + background-color: rgba(18, 18, 18, 0.2); + border-radius: 0.4em 0.4em 0 0; } + html.theme--documenter-dark .card .card-footer { + background-color: rgba(18, 18, 18, 0.2); } + html.theme--documenter-dark .card .card-footer, + html.theme--documenter-dark .card .card-footer-item { + border-width: 1px; + border-color: #343c3d; } + html.theme--documenter-dark .notification.is-white a:not(.button) { + color: #0a0a0a; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-black a:not(.button) { + color: white; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-light a:not(.button) { + color: #282f2f; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-dark a:not(.button), html.theme--documenter-dark .content kbd.notification a:not(.button) { + color: #ecf0f1; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-primary a:not(.button), html.theme--documenter-dark .docstring > section > a.notification.docs-sourcelink a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-link a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-info a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-success a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-warning a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-danger a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .tag, html.theme--documenter-dark .content kbd, html.theme--documenter-dark .docstring > section > a.docs-sourcelink { + border-radius: 0.4em; } + html.theme--documenter-dark .menu-list a { + transition: all 300ms ease; } + html.theme--documenter-dark .modal-card-body { + background-color: #282f2f; } + html.theme--documenter-dark .modal-card-foot, + html.theme--documenter-dark .modal-card-head { + border-color: #343c3d; } + html.theme--documenter-dark .message-header { + font-weight: 700; + background-color: #343c3d; + color: white; } + html.theme--documenter-dark .message-body { + border-width: 1px; + border-color: #343c3d; } + html.theme--documenter-dark .navbar { + border-radius: 0.4em; } + html.theme--documenter-dark .navbar.is-transparent { + background: none; } + html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { + background-color: #1abc9c; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .navbar .navbar-menu { + background-color: #375a7f; + border-radius: 0 0 0.4em 0.4em; } } + html.theme--documenter-dark .hero .navbar, + html.theme--documenter-dark body > .navbar { + border-radius: 0; } + html.theme--documenter-dark .pagination-link, + html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark .pagination-previous { + border-width: 1px; } + html.theme--documenter-dark .panel-block, + html.theme--documenter-dark .panel-heading, + html.theme--documenter-dark .panel-tabs { + border-width: 1px; } + html.theme--documenter-dark .panel-block:first-child, + html.theme--documenter-dark .panel-heading:first-child, + html.theme--documenter-dark .panel-tabs:first-child { + border-top-width: 1px; } + html.theme--documenter-dark .panel-heading { + font-weight: 700; } + html.theme--documenter-dark .panel-tabs a { + border-width: 1px; + margin-bottom: -1px; } + html.theme--documenter-dark .panel-tabs a.is-active { + border-bottom-color: #17a689; } + html.theme--documenter-dark .panel-block:hover { + color: #1dd2af; } + html.theme--documenter-dark .panel-block:hover .panel-icon { + color: #1dd2af; } + html.theme--documenter-dark .panel-block.is-active .panel-icon { + color: #17a689; } + html.theme--documenter-dark .tabs a { + border-bottom-width: 1px; + margin-bottom: -1px; } + html.theme--documenter-dark .tabs ul { + border-bottom-width: 1px; } + html.theme--documenter-dark .tabs.is-boxed a { + border-width: 1px; } + html.theme--documenter-dark .tabs.is-boxed li.is-active a { + background-color: #1f2424; } + html.theme--documenter-dark .tabs.is-toggle li a { + border-width: 1px; + margin-bottom: 0; } + html.theme--documenter-dark .tabs.is-toggle li + li { + margin-left: -1px; } + html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover, html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark h1 .docs-heading-anchor, html.theme--documenter-dark h1 .docs-heading-anchor:hover, html.theme--documenter-dark h1 .docs-heading-anchor:visited, html.theme--documenter-dark h2 .docs-heading-anchor, html.theme--documenter-dark h2 .docs-heading-anchor:hover, html.theme--documenter-dark h2 .docs-heading-anchor:visited, html.theme--documenter-dark h3 .docs-heading-anchor, html.theme--documenter-dark h3 .docs-heading-anchor:hover, html.theme--documenter-dark h3 .docs-heading-anchor:visited, html.theme--documenter-dark h4 .docs-heading-anchor, html.theme--documenter-dark h4 .docs-heading-anchor:hover, html.theme--documenter-dark h4 .docs-heading-anchor:visited, html.theme--documenter-dark h5 .docs-heading-anchor, html.theme--documenter-dark h5 .docs-heading-anchor:hover, html.theme--documenter-dark h5 .docs-heading-anchor:visited, html.theme--documenter-dark h6 .docs-heading-anchor, html.theme--documenter-dark h6 .docs-heading-anchor:hover, html.theme--documenter-dark h6 .docs-heading-anchor:visited { + color: #f2f2f2; } + html.theme--documenter-dark h1 .docs-heading-anchor-permalink, html.theme--documenter-dark h2 .docs-heading-anchor-permalink, html.theme--documenter-dark h3 .docs-heading-anchor-permalink, html.theme--documenter-dark h4 .docs-heading-anchor-permalink, html.theme--documenter-dark h5 .docs-heading-anchor-permalink, html.theme--documenter-dark h6 .docs-heading-anchor-permalink { + visibility: hidden; + vertical-align: middle; + margin-left: 0.5em; + font-size: 0.7rem; } + html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + content: "\f0c1"; } + html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink { + visibility: visible; } + html.theme--documenter-dark .docs-light-only { + display: none !important; } + html.theme--documenter-dark pre { + position: relative; + overflow: hidden; } + html.theme--documenter-dark pre code, html.theme--documenter-dark pre code.hljs { + padding: 0 0.75rem !important; + overflow: auto; + display: block; } + html.theme--documenter-dark pre code:first-of-type, html.theme--documenter-dark pre code.hljs:first-of-type { + padding-top: 0.5rem !important; } + html.theme--documenter-dark pre code:last-of-type, html.theme--documenter-dark pre code.hljs:last-of-type { + padding-bottom: 0.5rem !important; } + html.theme--documenter-dark pre .copy-button { + opacity: 0.2; + transition: opacity 0.2s; + position: absolute; + right: 0em; + top: 0em; + padding: 0.5em; + width: 2.5em; + height: 2.5em; + background: transparent; + border: none; + font-family: "Font Awesome 5 Free"; + color: #fff; + cursor: pointer; + text-align: center; } + html.theme--documenter-dark pre .copy-button:focus, html.theme--documenter-dark pre .copy-button:hover { + opacity: 1; + background: rgba(255, 255, 255, 0.1); + color: #1abc9c; } + html.theme--documenter-dark pre .copy-button.success { + color: #259a12; + opacity: 1; } + html.theme--documenter-dark pre .copy-button.error { + color: #cb3c33; + opacity: 1; } + html.theme--documenter-dark pre:hover .copy-button { + opacity: 1; } + html.theme--documenter-dark .admonition { + background-color: #282f2f; + border-style: solid; + border-width: 1px; + border-color: #5e6d6f; + border-radius: 0.4em; + font-size: 15px; } + html.theme--documenter-dark .admonition strong { + color: currentColor; } + html.theme--documenter-dark .admonition.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.admonition { + font-size: 0.85em; } + html.theme--documenter-dark .admonition.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .admonition.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .admonition.is-default { + background-color: #282f2f; + border-color: #5e6d6f; } + html.theme--documenter-dark .admonition.is-default > .admonition-header { + background-color: #5e6d6f; } + html.theme--documenter-dark .admonition.is-info { + background-color: #282f2f; + border-color: #024c7d; } + html.theme--documenter-dark .admonition.is-info > .admonition-header { + background-color: #024c7d; } + html.theme--documenter-dark .admonition.is-success { + background-color: #282f2f; + border-color: #008438; } + html.theme--documenter-dark .admonition.is-success > .admonition-header { + background-color: #008438; } + html.theme--documenter-dark .admonition.is-warning { + background-color: #282f2f; + border-color: #ad8100; } + html.theme--documenter-dark .admonition.is-warning > .admonition-header { + background-color: #ad8100; } + html.theme--documenter-dark .admonition.is-danger { + background-color: #282f2f; + border-color: #9e1b0d; } + html.theme--documenter-dark .admonition.is-danger > .admonition-header { + background-color: #9e1b0d; } + html.theme--documenter-dark .admonition.is-compat { + background-color: #282f2f; + border-color: #137886; } + html.theme--documenter-dark .admonition.is-compat > .admonition-header { + background-color: #137886; } + html.theme--documenter-dark .admonition-header { + background-color: #5e6d6f; + align-items: center; + font-weight: 700; + justify-content: space-between; + line-height: 1.25; + padding: 0.5rem 0.75rem; + position: relative; } + html.theme--documenter-dark .admonition-header:before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + margin-right: 0.75rem; + content: "\f06a"; } + html.theme--documenter-dark .admonition-body { + color: #fff; + padding: 0.5rem 0.75rem; } + html.theme--documenter-dark .admonition-body pre { + background-color: #282f2f; } + html.theme--documenter-dark .admonition-body code { + background-color: rgba(255, 255, 255, 0.05); } + html.theme--documenter-dark .docstring { + margin-bottom: 1em; + background-color: transparent; + border: 1px solid #5e6d6f; + box-shadow: none; + max-width: 100%; } + html.theme--documenter-dark .docstring > header { + display: flex; + flex-grow: 1; + align-items: stretch; + padding: 0.5rem 0.75rem; + background-color: #282f2f; + box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); + box-shadow: none; + border-bottom: 1px solid #5e6d6f; } + html.theme--documenter-dark .docstring > header code { + background-color: transparent; } + html.theme--documenter-dark .docstring > header .docstring-binding { + margin-right: 0.3em; } + html.theme--documenter-dark .docstring > header .docstring-category { + margin-left: 0.3em; } + html.theme--documenter-dark .docstring > section { + position: relative; + padding: 0.75rem 0.75rem; + border-bottom: 1px solid #5e6d6f; } + html.theme--documenter-dark .docstring > section:last-child { + border-bottom: none; } + html.theme--documenter-dark .docstring > section > a.docs-sourcelink { + transition: opacity 0.3s; + opacity: 0; + position: absolute; + right: 0.375rem; + bottom: 0.375rem; } + html.theme--documenter-dark .docstring > section > a.docs-sourcelink:focus { + opacity: 1 !important; } + html.theme--documenter-dark .docstring:hover > section > a.docs-sourcelink { + opacity: 0.2; } + html.theme--documenter-dark .docstring:focus-within > section > a.docs-sourcelink { + opacity: 0.2; } + html.theme--documenter-dark .docstring > section:hover a.docs-sourcelink { + opacity: 1; } + html.theme--documenter-dark .documenter-example-output { + background-color: #1f2424; } + html.theme--documenter-dark .outdated-warning-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + z-index: 999; + background-color: #282f2f; + border-bottom: 3px solid #9e1b0d; + padding: 10px 35px; + text-align: center; + font-size: 15px; } + html.theme--documenter-dark .outdated-warning-overlay .outdated-warning-closer { + position: absolute; + top: calc(50% - 10px); + right: 18px; + cursor: pointer; + width: 12px; } + html.theme--documenter-dark .outdated-warning-overlay a { + color: #1abc9c; } + html.theme--documenter-dark .outdated-warning-overlay a:hover { + color: #1dd2af; } + html.theme--documenter-dark .content pre { + border: 1px solid #5e6d6f; } + html.theme--documenter-dark .content code { + font-weight: inherit; } + html.theme--documenter-dark .content a code { + color: #1abc9c; } + html.theme--documenter-dark .content h1 code, html.theme--documenter-dark .content h2 code, html.theme--documenter-dark .content h3 code, html.theme--documenter-dark .content h4 code, html.theme--documenter-dark .content h5 code, html.theme--documenter-dark .content h6 code { + color: #f2f2f2; } + html.theme--documenter-dark .content table { + display: block; + width: initial; + max-width: 100%; + overflow-x: auto; } + html.theme--documenter-dark .content blockquote > ul:first-child, html.theme--documenter-dark .content blockquote > ol:first-child, html.theme--documenter-dark .content .admonition-body > ul:first-child, html.theme--documenter-dark .content .admonition-body > ol:first-child { + margin-top: 0; } + html.theme--documenter-dark pre, html.theme--documenter-dark code { + font-variant-ligatures: no-contextual; } + html.theme--documenter-dark .breadcrumb a.is-disabled { + cursor: default; + pointer-events: none; } + html.theme--documenter-dark .breadcrumb a.is-disabled, html.theme--documenter-dark .breadcrumb a.is-disabled:hover { + color: #f2f2f2; } + html.theme--documenter-dark .hljs { + background: initial !important; } + html.theme--documenter-dark .katex .katex-mathml { + top: 0; + right: 0; } + html.theme--documenter-dark .katex-display, html.theme--documenter-dark mjx-container, html.theme--documenter-dark .MathJax_Display { + margin: 0.5em 0 !important; } + html.theme--documenter-dark html { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; } + html.theme--documenter-dark li.no-marker { + list-style: none; } + html.theme--documenter-dark #documenter .docs-main > article { + overflow-wrap: break-word; } + html.theme--documenter-dark #documenter .docs-main > article .math-container { + overflow-x: auto; + overflow-y: hidden; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark #documenter .docs-main { + max-width: 52rem; + margin-left: 20rem; + padding-right: 1rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark #documenter .docs-main { + width: 100%; } + html.theme--documenter-dark #documenter .docs-main > article { + max-width: 52rem; + margin-left: auto; + margin-right: auto; + margin-bottom: 1rem; + padding: 0 1rem; } + html.theme--documenter-dark #documenter .docs-main > header, html.theme--documenter-dark #documenter .docs-main > nav { + max-width: 100%; + width: 100%; + margin: 0; } } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar { + background-color: #1f2424; + border-bottom: 1px solid #5e6d6f; + z-index: 2; + min-height: 4rem; + margin-bottom: 1rem; + display: flex; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb { + flex-grow: 1; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right { + display: flex; + white-space: nowrap; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon, html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label, html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { + display: inline-block; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label { + padding: 0; + margin-left: 0.3em; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button { + margin: auto 0 auto 1rem; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { + font-size: 1.5rem; + margin: auto 0 auto 1rem; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar > * { + margin: auto 0; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark #documenter .docs-main header.docs-navbar { + position: sticky; + top: 0; + padding: 0 1rem; + /* For Headroom.js */ + transition-property: top, box-shadow; + -webkit-transition-property: top, box-shadow; + /* Safari */ + transition-duration: 0.3s; + -webkit-transition-duration: 0.3s; + /* Safari */ } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top { + box-shadow: 0.2rem 0rem 0.4rem #171717; + transition-duration: 0.7s; + -webkit-transition-duration: 0.7s; + /* Safari */ } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom { + top: -4.5rem; + transition-duration: 0.7s; + -webkit-transition-duration: 0.7s; + /* Safari */ } } + html.theme--documenter-dark #documenter .docs-main section.footnotes { + border-top: 1px solid #5e6d6f; } + html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child, html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring > section > a.docs-sourcelink:first-child, html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child, html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child { + margin-right: 1em; + margin-bottom: 0.4em; } + html.theme--documenter-dark #documenter .docs-main .docs-footer { + display: flex; + flex-wrap: wrap; + margin-left: 0; + margin-right: 0; + border-top: 1px solid #5e6d6f; + padding-top: 1rem; + padding-bottom: 1rem; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark #documenter .docs-main .docs-footer { + padding-left: 1rem; + padding-right: 1rem; } } + html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage, html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage { + flex-grow: 1; } + html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage { + text-align: right; } + html.theme--documenter-dark #documenter .docs-main .docs-footer .flexbox-break { + flex-basis: 100%; + height: 0; } + html.theme--documenter-dark #documenter .docs-main .docs-footer .footer-message { + font-size: 0.8em; + margin: 0.5em auto 0 auto; + text-align: center; } + html.theme--documenter-dark #documenter .docs-sidebar { + display: flex; + flex-direction: column; + color: #fff; + background-color: #282f2f; + border-right: 1px solid #5e6d6f; + padding: 0; + flex: 0 0 18rem; + z-index: 5; + font-size: 15px; + position: fixed; + left: -18rem; + width: 18rem; + height: 100%; + transition: left 0.3s; + /* Setting up a nicer theme style for the scrollbar */ } + html.theme--documenter-dark #documenter .docs-sidebar.visible { + left: 0; + box-shadow: 0.4rem 0rem 0.8rem #171717; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark #documenter .docs-sidebar.visible { + box-shadow: none; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark #documenter .docs-sidebar { + left: 0; + top: 0; } } + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo { + margin-top: 1rem; + padding: 0 1rem; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img { + max-height: 6rem; + margin: auto; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name { + flex-shrink: 0; + font-size: 1.5rem; + font-weight: 700; + text-align: center; + white-space: nowrap; + overflow: hidden; + padding: 0.5rem 0; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit { + max-width: 16.2rem; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a, html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a:hover { + color: #fff; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector { + border-top: 1px solid #5e6d6f; + display: none; + padding: 0.5rem; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible { + display: flex; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu { + flex-grow: 1; + user-select: none; + border-top: 1px solid #5e6d6f; + padding-bottom: 1.5rem; + /* Managing collapsible submenus */ } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li > .tocitem { + font-weight: bold; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li li { + font-size: 14.25px; + margin-left: 1em; + border-left: 1px solid #5e6d6f; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle { + display: none; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed { + display: none; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked ~ ul.collapsed { + display: block; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem { + display: flex; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label { + flex-grow: 2; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron { + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + font-size: 11.25px; + margin-left: 1rem; + margin-top: auto; + margin-bottom: auto; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + content: "\f054"; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked ~ label.tocitem .docs-chevron::before { + content: "\f078"; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem { + display: block; + padding: 0.5rem 0.5rem; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover { + color: #fff; + background: #282f2f; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover { + color: #fff; + background-color: #32393a; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active { + border-top: 1px solid #5e6d6f; + border-bottom: 1px solid #5e6d6f; + background-color: #1f2424; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover { + background-color: #1f2424; + color: #fff; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover { + background-color: #32393a; + color: #fff; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li.is-active:first-child { + border-top: none; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal { + margin: 0 0.5rem 0.5rem; + border-top: 1px solid #5e6d6f; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li { + font-size: 12.75px; + border-left: none; + margin-left: 0; + margin-top: 0.5rem; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem { + width: 100%; + padding: 0; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before { + content: "⚬"; + margin-right: 0.4em; } + html.theme--documenter-dark #documenter .docs-sidebar form.docs-search { + margin: auto; + margin-top: 0.5rem; + margin-bottom: 0.5rem; } + html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { + width: 14.4rem; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu { + overflow-y: auto; + -webkit-overflow-scroll: touch; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar { + width: .3rem; + background: none; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb { + border-radius: 5px 0px 0px 5px; + background: #3b4445; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover { + background: #4e5a5c; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark #documenter .docs-sidebar { + overflow-y: auto; + -webkit-overflow-scroll: touch; } + html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar { + width: .3rem; + background: none; } + html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb { + border-radius: 5px 0px 0px 5px; + background: #3b4445; } + html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover { + background: #4e5a5c; } } + html.theme--documenter-dark #documenter .docs-main #documenter-search-info { + margin-bottom: 1rem; } + html.theme--documenter-dark #documenter .docs-main #documenter-search-results { + list-style-type: circle; + list-style-position: outside; } + html.theme--documenter-dark #documenter .docs-main #documenter-search-results li { + margin-left: 2rem; } + html.theme--documenter-dark #documenter .docs-main #documenter-search-results .docs-highlight { + background-color: yellow; } + html.theme--documenter-dark { + background-color: #1f2424; + font-size: 16px; + min-width: 300px; + overflow-x: auto; + overflow-y: scroll; + text-rendering: optimizeLegibility; + text-size-adjust: 100%; } + html.theme--documenter-dark .ansi span.sgr1 { + font-weight: bolder; } + html.theme--documenter-dark .ansi span.sgr2 { + font-weight: lighter; } + html.theme--documenter-dark .ansi span.sgr3 { + font-style: italic; } + html.theme--documenter-dark .ansi span.sgr4 { + text-decoration: underline; } + html.theme--documenter-dark .ansi span.sgr7 { + color: #1f2424; + background-color: #fff; } + html.theme--documenter-dark .ansi span.sgr8 { + color: transparent; } + html.theme--documenter-dark .ansi span.sgr8 span { + color: transparent; } + html.theme--documenter-dark .ansi span.sgr9 { + text-decoration: line-through; } + html.theme--documenter-dark .ansi span.sgr30 { + color: #242424; } + html.theme--documenter-dark .ansi span.sgr31 { + color: #f6705f; } + html.theme--documenter-dark .ansi span.sgr32 { + color: #4fb43a; } + html.theme--documenter-dark .ansi span.sgr33 { + color: #f4c72f; } + html.theme--documenter-dark .ansi span.sgr34 { + color: #7587f0; } + html.theme--documenter-dark .ansi span.sgr35 { + color: #bc89d3; } + html.theme--documenter-dark .ansi span.sgr36 { + color: #49b6ca; } + html.theme--documenter-dark .ansi span.sgr37 { + color: #b3bdbe; } + html.theme--documenter-dark .ansi span.sgr40 { + background-color: #242424; } + html.theme--documenter-dark .ansi span.sgr41 { + background-color: #f6705f; } + html.theme--documenter-dark .ansi span.sgr42 { + background-color: #4fb43a; } + html.theme--documenter-dark .ansi span.sgr43 { + background-color: #f4c72f; } + html.theme--documenter-dark .ansi span.sgr44 { + background-color: #7587f0; } + html.theme--documenter-dark .ansi span.sgr45 { + background-color: #bc89d3; } + html.theme--documenter-dark .ansi span.sgr46 { + background-color: #49b6ca; } + html.theme--documenter-dark .ansi span.sgr47 { + background-color: #b3bdbe; } + html.theme--documenter-dark .ansi span.sgr90 { + color: #92a0a2; } + html.theme--documenter-dark .ansi span.sgr91 { + color: #ff8674; } + html.theme--documenter-dark .ansi span.sgr92 { + color: #79d462; } + html.theme--documenter-dark .ansi span.sgr93 { + color: #ffe76b; } + html.theme--documenter-dark .ansi span.sgr94 { + color: #8a98ff; } + html.theme--documenter-dark .ansi span.sgr95 { + color: #d2a4e6; } + html.theme--documenter-dark .ansi span.sgr96 { + color: #6bc8db; } + html.theme--documenter-dark .ansi span.sgr97 { + color: #ecf0f1; } + html.theme--documenter-dark .ansi span.sgr100 { + background-color: #92a0a2; } + html.theme--documenter-dark .ansi span.sgr101 { + background-color: #ff8674; } + html.theme--documenter-dark .ansi span.sgr102 { + background-color: #79d462; } + html.theme--documenter-dark .ansi span.sgr103 { + background-color: #ffe76b; } + html.theme--documenter-dark .ansi span.sgr104 { + background-color: #8a98ff; } + html.theme--documenter-dark .ansi span.sgr105 { + background-color: #d2a4e6; } + html.theme--documenter-dark .ansi span.sgr106 { + background-color: #6bc8db; } + html.theme--documenter-dark .ansi span.sgr107 { + background-color: #ecf0f1; } + html.theme--documenter-dark code.language-julia-repl > span.hljs-meta { + color: #4fb43a; + font-weight: bolder; } + html.theme--documenter-dark .hljs { + background: #2b2b2b; + color: #f8f8f2; } + html.theme--documenter-dark .hljs-comment, + html.theme--documenter-dark .hljs-quote { + color: #d4d0ab; } + html.theme--documenter-dark .hljs-variable, + html.theme--documenter-dark .hljs-template-variable, + html.theme--documenter-dark .hljs-tag, + html.theme--documenter-dark .hljs-name, + html.theme--documenter-dark .hljs-selector-id, + html.theme--documenter-dark .hljs-selector-class, + html.theme--documenter-dark .hljs-regexp, + html.theme--documenter-dark .hljs-deletion { + color: #ffa07a; } + html.theme--documenter-dark .hljs-number, + html.theme--documenter-dark .hljs-built_in, + html.theme--documenter-dark .hljs-literal, + html.theme--documenter-dark .hljs-type, + html.theme--documenter-dark .hljs-params, + html.theme--documenter-dark .hljs-meta, + html.theme--documenter-dark .hljs-link { + color: #f5ab35; } + html.theme--documenter-dark .hljs-attribute { + color: #ffd700; } + html.theme--documenter-dark .hljs-string, + html.theme--documenter-dark .hljs-symbol, + html.theme--documenter-dark .hljs-bullet, + html.theme--documenter-dark .hljs-addition { + color: #abe338; } + html.theme--documenter-dark .hljs-title, + html.theme--documenter-dark .hljs-section { + color: #00e0e0; } + html.theme--documenter-dark .hljs-keyword, + html.theme--documenter-dark .hljs-selector-tag { + color: #dcc6e0; } + html.theme--documenter-dark .hljs-emphasis { + font-style: italic; } + html.theme--documenter-dark .hljs-strong { + font-weight: bold; } + @media screen and (-ms-high-contrast: active) { + html.theme--documenter-dark .hljs-addition, + html.theme--documenter-dark .hljs-attribute, + html.theme--documenter-dark .hljs-built_in, + html.theme--documenter-dark .hljs-bullet, + html.theme--documenter-dark .hljs-comment, + html.theme--documenter-dark .hljs-link, + html.theme--documenter-dark .hljs-literal, + html.theme--documenter-dark .hljs-meta, + html.theme--documenter-dark .hljs-number, + html.theme--documenter-dark .hljs-params, + html.theme--documenter-dark .hljs-string, + html.theme--documenter-dark .hljs-symbol, + html.theme--documenter-dark .hljs-type, + html.theme--documenter-dark .hljs-quote { + color: highlight; } + html.theme--documenter-dark .hljs-keyword, + html.theme--documenter-dark .hljs-selector-tag { + font-weight: bold; } } + html.theme--documenter-dark .hljs-subst { + color: #f8f8f2; } diff --git a/stable/assets/themes/documenter-light.css b/stable/assets/themes/documenter-light.css new file mode 100644 index 0000000..9595d5b --- /dev/null +++ b/stable/assets/themes/documenter-light.css @@ -0,0 +1,7738 @@ +@charset "UTF-8"; +/* Font Awesome 5 mixin. Can be included in any rule that should render Font Awesome icons. */ +@keyframes spinAround { + from { + transform: rotate(0deg); } + to { + transform: rotate(359deg); } } + +.tabs, .pagination-previous, +.pagination-next, +.pagination-link, +.pagination-ellipsis, .breadcrumb, .file, .button, .is-unselectable, .modal-close, .delete { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.navbar-link:not(.is-arrowless)::after, .select:not(.is-multiple):not(.is-loading)::after { + border: 3px solid transparent; + border-radius: 2px; + border-right: 0; + border-top: 0; + content: " "; + display: block; + height: 0.625em; + margin-top: -0.4375em; + pointer-events: none; + position: absolute; + top: 50%; + transform: rotate(-45deg); + transform-origin: center; + width: 0.625em; } + +.admonition:not(:last-child), .tabs:not(:last-child), .message:not(:last-child), .list:not(:last-child), .level:not(:last-child), .breadcrumb:not(:last-child), .highlight:not(:last-child), .block:not(:last-child), .title:not(:last-child), +.subtitle:not(:last-child), .table-container:not(:last-child), .table:not(:last-child), .progress:not(:last-child), .notification:not(:last-child), .content:not(:last-child), .box:not(:last-child) { + margin-bottom: 1.5rem; } + +.modal-close, .delete { + -moz-appearance: none; + -webkit-appearance: none; + background-color: rgba(10, 10, 10, 0.2); + border: none; + border-radius: 290486px; + cursor: pointer; + pointer-events: auto; + display: inline-block; + flex-grow: 0; + flex-shrink: 0; + font-size: 0; + height: 20px; + max-height: 20px; + max-width: 20px; + min-height: 20px; + min-width: 20px; + outline: none; + position: relative; + vertical-align: top; + width: 20px; } + .modal-close::before, .delete::before, .modal-close::after, .delete::after { + background-color: white; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; } + .modal-close::before, .delete::before { + height: 2px; + width: 50%; } + .modal-close::after, .delete::after { + height: 50%; + width: 2px; } + .modal-close:hover, .delete:hover, .modal-close:focus, .delete:focus { + background-color: rgba(10, 10, 10, 0.3); } + .modal-close:active, .delete:active { + background-color: rgba(10, 10, 10, 0.4); } + .is-small.modal-close, #documenter .docs-sidebar form.docs-search > input.modal-close, .is-small.delete, #documenter .docs-sidebar form.docs-search > input.delete { + height: 16px; + max-height: 16px; + max-width: 16px; + min-height: 16px; + min-width: 16px; + width: 16px; } + .is-medium.modal-close, .is-medium.delete { + height: 24px; + max-height: 24px; + max-width: 24px; + min-height: 24px; + min-width: 24px; + width: 24px; } + .is-large.modal-close, .is-large.delete { + height: 32px; + max-height: 32px; + max-width: 32px; + min-height: 32px; + min-width: 32px; + width: 32px; } + +.control.is-loading::after, .select.is-loading::after, .loader, .button.is-loading::after { + animation: spinAround 500ms infinite linear; + border: 2px solid #dbdbdb; + border-radius: 290486px; + border-right-color: transparent; + border-top-color: transparent; + content: ""; + display: block; + height: 1em; + position: relative; + width: 1em; } + +.hero-video, .modal-background, .modal, .image.is-square img, #documenter .docs-sidebar .docs-logo > img.is-square img, +.image.is-square .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, .image.is-1by1 img, #documenter .docs-sidebar .docs-logo > img.is-1by1 img, +.image.is-1by1 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, .image.is-5by4 img, #documenter .docs-sidebar .docs-logo > img.is-5by4 img, +.image.is-5by4 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, .image.is-4by3 img, #documenter .docs-sidebar .docs-logo > img.is-4by3 img, +.image.is-4by3 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, .image.is-3by2 img, #documenter .docs-sidebar .docs-logo > img.is-3by2 img, +.image.is-3by2 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, .image.is-5by3 img, #documenter .docs-sidebar .docs-logo > img.is-5by3 img, +.image.is-5by3 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, .image.is-16by9 img, #documenter .docs-sidebar .docs-logo > img.is-16by9 img, +.image.is-16by9 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, .image.is-2by1 img, #documenter .docs-sidebar .docs-logo > img.is-2by1 img, +.image.is-2by1 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, .image.is-3by1 img, #documenter .docs-sidebar .docs-logo > img.is-3by1 img, +.image.is-3by1 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, .image.is-4by5 img, #documenter .docs-sidebar .docs-logo > img.is-4by5 img, +.image.is-4by5 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, .image.is-3by4 img, #documenter .docs-sidebar .docs-logo > img.is-3by4 img, +.image.is-3by4 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, .image.is-2by3 img, #documenter .docs-sidebar .docs-logo > img.is-2by3 img, +.image.is-2by3 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, .image.is-3by5 img, #documenter .docs-sidebar .docs-logo > img.is-3by5 img, +.image.is-3by5 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, .image.is-9by16 img, #documenter .docs-sidebar .docs-logo > img.is-9by16 img, +.image.is-9by16 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, .image.is-1by2 img, #documenter .docs-sidebar .docs-logo > img.is-1by2 img, +.image.is-1by2 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, .image.is-1by3 img, #documenter .docs-sidebar .docs-logo > img.is-1by3 img, +.image.is-1by3 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio, .is-overlay { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; } + +.pagination-previous, +.pagination-next, +.pagination-link, +.pagination-ellipsis, .file-cta, +.file-name, .select select, .textarea, .input, #documenter .docs-sidebar form.docs-search > input, .button { + -moz-appearance: none; + -webkit-appearance: none; + align-items: center; + border: 1px solid transparent; + border-radius: 4px; + box-shadow: none; + display: inline-flex; + font-size: 1rem; + height: 2.25em; + justify-content: flex-start; + line-height: 1.5; + padding-bottom: calc(0.375em - 1px); + padding-left: calc(0.625em - 1px); + padding-right: calc(0.625em - 1px); + padding-top: calc(0.375em - 1px); + position: relative; + vertical-align: top; } + .pagination-previous:focus, + .pagination-next:focus, + .pagination-link:focus, + .pagination-ellipsis:focus, .file-cta:focus, + .file-name:focus, .select select:focus, .textarea:focus, .input:focus, #documenter .docs-sidebar form.docs-search > input:focus, .button:focus, .is-focused.pagination-previous, + .is-focused.pagination-next, + .is-focused.pagination-link, + .is-focused.pagination-ellipsis, .is-focused.file-cta, + .is-focused.file-name, .select select.is-focused, .is-focused.textarea, .is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-focused.button, .pagination-previous:active, + .pagination-next:active, + .pagination-link:active, + .pagination-ellipsis:active, .file-cta:active, + .file-name:active, .select select:active, .textarea:active, .input:active, #documenter .docs-sidebar form.docs-search > input:active, .button:active, .is-active.pagination-previous, + .is-active.pagination-next, + .is-active.pagination-link, + .is-active.pagination-ellipsis, .is-active.file-cta, + .is-active.file-name, .select select.is-active, .is-active.textarea, .is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active, .is-active.button { + outline: none; } + .pagination-previous[disabled], + .pagination-next[disabled], + .pagination-link[disabled], + .pagination-ellipsis[disabled], .file-cta[disabled], + .file-name[disabled], .select select[disabled], .textarea[disabled], .input[disabled], #documenter .docs-sidebar form.docs-search > input[disabled], .button[disabled], fieldset[disabled] .pagination-previous, + fieldset[disabled] .pagination-next, + fieldset[disabled] .pagination-link, + fieldset[disabled] .pagination-ellipsis, fieldset[disabled] .file-cta, + fieldset[disabled] .file-name, fieldset[disabled] .select select, .select fieldset[disabled] select, fieldset[disabled] .textarea, fieldset[disabled] .input, fieldset[disabled] #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, fieldset[disabled] .button { + cursor: not-allowed; } + +/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ +html, +body, +p, +ol, +ul, +li, +dl, +dt, +dd, +blockquote, +figure, +fieldset, +legend, +textarea, +pre, +iframe, +hr, +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal; } + +ul { + list-style: none; } + +button, +input, +select, +textarea { + margin: 0; } + +html { + box-sizing: border-box; } + +*, *::before, *::after { + box-sizing: inherit; } + +img, +embed, +iframe, +object, +video { + height: auto; + max-width: 100%; } + +audio { + max-width: 100%; } + +iframe { + border: 0; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + td:not([align]), + th:not([align]) { + text-align: left; } + +html { + background-color: white; + font-size: 16px; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + min-width: 300px; + overflow-x: auto; + overflow-y: scroll; + text-rendering: optimizeLegibility; + text-size-adjust: 100%; } + +article, +aside, +figure, +footer, +header, +hgroup, +section { + display: block; } + +body, +button, +input, +select, +textarea { + font-family: "Lato Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif; } + +code, +pre { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; + font-family: "JuliaMono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace; } + +body { + color: #222222; + font-size: 1em; + font-weight: 400; + line-height: 1.5; } + +a { + color: #2e63b8; + cursor: pointer; + text-decoration: none; } + a strong { + color: currentColor; } + a:hover { + color: #363636; } + +code { + background-color: rgba(0, 0, 0, 0.05); + color: #000000; + font-size: 0.875em; + font-weight: normal; + padding: 0.1em; } + +hr { + background-color: whitesmoke; + border: none; + display: block; + height: 2px; + margin: 1.5rem 0; } + +img { + height: auto; + max-width: 100%; } + +input[type="checkbox"], +input[type="radio"] { + vertical-align: baseline; } + +small { + font-size: 0.875em; } + +span { + font-style: inherit; + font-weight: inherit; } + +strong { + color: #222222; + font-weight: 700; } + +fieldset { + border: none; } + +pre { + -webkit-overflow-scrolling: touch; + background-color: whitesmoke; + color: #222222; + font-size: 0.875em; + overflow-x: auto; + padding: 1.25rem 1.5rem; + white-space: pre; + word-wrap: normal; } + pre code { + background-color: transparent; + color: currentColor; + font-size: 1em; + padding: 0; } + +table td, +table th { + vertical-align: top; } + table td:not([align]), + table th:not([align]) { + text-align: left; } + +table th { + color: #222222; } + +.is-clearfix::after { + clear: both; + content: " "; + display: table; } + +.is-pulled-left { + float: left !important; } + +.is-pulled-right { + float: right !important; } + +.is-clipped { + overflow: hidden !important; } + +.is-size-1 { + font-size: 3rem !important; } + +.is-size-2 { + font-size: 2.5rem !important; } + +.is-size-3 { + font-size: 2rem !important; } + +.is-size-4 { + font-size: 1.5rem !important; } + +.is-size-5 { + font-size: 1.25rem !important; } + +.is-size-6 { + font-size: 1rem !important; } + +.is-size-7, .docstring > section > a.docs-sourcelink { + font-size: 0.75rem !important; } + +@media screen and (max-width: 768px) { + .is-size-1-mobile { + font-size: 3rem !important; } + .is-size-2-mobile { + font-size: 2.5rem !important; } + .is-size-3-mobile { + font-size: 2rem !important; } + .is-size-4-mobile { + font-size: 1.5rem !important; } + .is-size-5-mobile { + font-size: 1.25rem !important; } + .is-size-6-mobile { + font-size: 1rem !important; } + .is-size-7-mobile { + font-size: 0.75rem !important; } } + +@media screen and (min-width: 769px), print { + .is-size-1-tablet { + font-size: 3rem !important; } + .is-size-2-tablet { + font-size: 2.5rem !important; } + .is-size-3-tablet { + font-size: 2rem !important; } + .is-size-4-tablet { + font-size: 1.5rem !important; } + .is-size-5-tablet { + font-size: 1.25rem !important; } + .is-size-6-tablet { + font-size: 1rem !important; } + .is-size-7-tablet { + font-size: 0.75rem !important; } } + +@media screen and (max-width: 1055px) { + .is-size-1-touch { + font-size: 3rem !important; } + .is-size-2-touch { + font-size: 2.5rem !important; } + .is-size-3-touch { + font-size: 2rem !important; } + .is-size-4-touch { + font-size: 1.5rem !important; } + .is-size-5-touch { + font-size: 1.25rem !important; } + .is-size-6-touch { + font-size: 1rem !important; } + .is-size-7-touch { + font-size: 0.75rem !important; } } + +@media screen and (min-width: 1056px) { + .is-size-1-desktop { + font-size: 3rem !important; } + .is-size-2-desktop { + font-size: 2.5rem !important; } + .is-size-3-desktop { + font-size: 2rem !important; } + .is-size-4-desktop { + font-size: 1.5rem !important; } + .is-size-5-desktop { + font-size: 1.25rem !important; } + .is-size-6-desktop { + font-size: 1rem !important; } + .is-size-7-desktop { + font-size: 0.75rem !important; } } + +@media screen and (min-width: 1216px) { + .is-size-1-widescreen { + font-size: 3rem !important; } + .is-size-2-widescreen { + font-size: 2.5rem !important; } + .is-size-3-widescreen { + font-size: 2rem !important; } + .is-size-4-widescreen { + font-size: 1.5rem !important; } + .is-size-5-widescreen { + font-size: 1.25rem !important; } + .is-size-6-widescreen { + font-size: 1rem !important; } + .is-size-7-widescreen { + font-size: 0.75rem !important; } } + +@media screen and (min-width: 1408px) { + .is-size-1-fullhd { + font-size: 3rem !important; } + .is-size-2-fullhd { + font-size: 2.5rem !important; } + .is-size-3-fullhd { + font-size: 2rem !important; } + .is-size-4-fullhd { + font-size: 1.5rem !important; } + .is-size-5-fullhd { + font-size: 1.25rem !important; } + .is-size-6-fullhd { + font-size: 1rem !important; } + .is-size-7-fullhd { + font-size: 0.75rem !important; } } + +.has-text-centered { + text-align: center !important; } + +.has-text-justified { + text-align: justify !important; } + +.has-text-left { + text-align: left !important; } + +.has-text-right { + text-align: right !important; } + +@media screen and (max-width: 768px) { + .has-text-centered-mobile { + text-align: center !important; } } + +@media screen and (min-width: 769px), print { + .has-text-centered-tablet { + text-align: center !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-centered-tablet-only { + text-align: center !important; } } + +@media screen and (max-width: 1055px) { + .has-text-centered-touch { + text-align: center !important; } } + +@media screen and (min-width: 1056px) { + .has-text-centered-desktop { + text-align: center !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-centered-desktop-only { + text-align: center !important; } } + +@media screen and (min-width: 1216px) { + .has-text-centered-widescreen { + text-align: center !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-centered-widescreen-only { + text-align: center !important; } } + +@media screen and (min-width: 1408px) { + .has-text-centered-fullhd { + text-align: center !important; } } + +@media screen and (max-width: 768px) { + .has-text-justified-mobile { + text-align: justify !important; } } + +@media screen and (min-width: 769px), print { + .has-text-justified-tablet { + text-align: justify !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-justified-tablet-only { + text-align: justify !important; } } + +@media screen and (max-width: 1055px) { + .has-text-justified-touch { + text-align: justify !important; } } + +@media screen and (min-width: 1056px) { + .has-text-justified-desktop { + text-align: justify !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-justified-desktop-only { + text-align: justify !important; } } + +@media screen and (min-width: 1216px) { + .has-text-justified-widescreen { + text-align: justify !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-justified-widescreen-only { + text-align: justify !important; } } + +@media screen and (min-width: 1408px) { + .has-text-justified-fullhd { + text-align: justify !important; } } + +@media screen and (max-width: 768px) { + .has-text-left-mobile { + text-align: left !important; } } + +@media screen and (min-width: 769px), print { + .has-text-left-tablet { + text-align: left !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-left-tablet-only { + text-align: left !important; } } + +@media screen and (max-width: 1055px) { + .has-text-left-touch { + text-align: left !important; } } + +@media screen and (min-width: 1056px) { + .has-text-left-desktop { + text-align: left !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-left-desktop-only { + text-align: left !important; } } + +@media screen and (min-width: 1216px) { + .has-text-left-widescreen { + text-align: left !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-left-widescreen-only { + text-align: left !important; } } + +@media screen and (min-width: 1408px) { + .has-text-left-fullhd { + text-align: left !important; } } + +@media screen and (max-width: 768px) { + .has-text-right-mobile { + text-align: right !important; } } + +@media screen and (min-width: 769px), print { + .has-text-right-tablet { + text-align: right !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-right-tablet-only { + text-align: right !important; } } + +@media screen and (max-width: 1055px) { + .has-text-right-touch { + text-align: right !important; } } + +@media screen and (min-width: 1056px) { + .has-text-right-desktop { + text-align: right !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-right-desktop-only { + text-align: right !important; } } + +@media screen and (min-width: 1216px) { + .has-text-right-widescreen { + text-align: right !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-right-widescreen-only { + text-align: right !important; } } + +@media screen and (min-width: 1408px) { + .has-text-right-fullhd { + text-align: right !important; } } + +.is-capitalized { + text-transform: capitalize !important; } + +.is-lowercase { + text-transform: lowercase !important; } + +.is-uppercase { + text-transform: uppercase !important; } + +.is-italic { + font-style: italic !important; } + +.has-text-white { + color: white !important; } + +a.has-text-white:hover, a.has-text-white:focus { + color: #e6e6e6 !important; } + +.has-background-white { + background-color: white !important; } + +.has-text-black { + color: #0a0a0a !important; } + +a.has-text-black:hover, a.has-text-black:focus { + color: black !important; } + +.has-background-black { + background-color: #0a0a0a !important; } + +.has-text-light { + color: whitesmoke !important; } + +a.has-text-light:hover, a.has-text-light:focus { + color: #dbdbdb !important; } + +.has-background-light { + background-color: whitesmoke !important; } + +.has-text-dark { + color: #363636 !important; } + +a.has-text-dark:hover, a.has-text-dark:focus { + color: #1c1c1c !important; } + +.has-background-dark { + background-color: #363636 !important; } + +.has-text-primary { + color: #4eb5de !important; } + +a.has-text-primary:hover, a.has-text-primary:focus { + color: #27a1d2 !important; } + +.has-background-primary { + background-color: #4eb5de !important; } + +.has-text-link { + color: #2e63b8 !important; } + +a.has-text-link:hover, a.has-text-link:focus { + color: #244d8f !important; } + +.has-background-link { + background-color: #2e63b8 !important; } + +.has-text-info { + color: #209cee !important; } + +a.has-text-info:hover, a.has-text-info:focus { + color: #1081cb !important; } + +.has-background-info { + background-color: #209cee !important; } + +.has-text-success { + color: #22c35b !important; } + +a.has-text-success:hover, a.has-text-success:focus { + color: #1a9847 !important; } + +.has-background-success { + background-color: #22c35b !important; } + +.has-text-warning { + color: #ffdd57 !important; } + +a.has-text-warning:hover, a.has-text-warning:focus { + color: #ffd324 !important; } + +.has-background-warning { + background-color: #ffdd57 !important; } + +.has-text-danger { + color: #da0b00 !important; } + +a.has-text-danger:hover, a.has-text-danger:focus { + color: #a70800 !important; } + +.has-background-danger { + background-color: #da0b00 !important; } + +.has-text-black-bis { + color: #121212 !important; } + +.has-background-black-bis { + background-color: #121212 !important; } + +.has-text-black-ter { + color: #242424 !important; } + +.has-background-black-ter { + background-color: #242424 !important; } + +.has-text-grey-darker { + color: #363636 !important; } + +.has-background-grey-darker { + background-color: #363636 !important; } + +.has-text-grey-dark { + color: #4a4a4a !important; } + +.has-background-grey-dark { + background-color: #4a4a4a !important; } + +.has-text-grey { + color: #6b6b6b !important; } + +.has-background-grey { + background-color: #6b6b6b !important; } + +.has-text-grey-light { + color: #b5b5b5 !important; } + +.has-background-grey-light { + background-color: #b5b5b5 !important; } + +.has-text-grey-lighter { + color: #dbdbdb !important; } + +.has-background-grey-lighter { + background-color: #dbdbdb !important; } + +.has-text-white-ter { + color: whitesmoke !important; } + +.has-background-white-ter { + background-color: whitesmoke !important; } + +.has-text-white-bis { + color: #fafafa !important; } + +.has-background-white-bis { + background-color: #fafafa !important; } + +.has-text-weight-light { + font-weight: 300 !important; } + +.has-text-weight-normal { + font-weight: 400 !important; } + +.has-text-weight-medium { + font-weight: 500 !important; } + +.has-text-weight-semibold { + font-weight: 600 !important; } + +.has-text-weight-bold { + font-weight: 700 !important; } + +.is-family-primary { + font-family: "Lato Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-secondary { + font-family: "Lato Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-sans-serif { + font-family: "Lato Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-monospace { + font-family: "JuliaMono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } + +.is-family-code { + font-family: "JuliaMono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } + +.is-block { + display: block !important; } + +@media screen and (max-width: 768px) { + .is-block-mobile { + display: block !important; } } + +@media screen and (min-width: 769px), print { + .is-block-tablet { + display: block !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-block-tablet-only { + display: block !important; } } + +@media screen and (max-width: 1055px) { + .is-block-touch { + display: block !important; } } + +@media screen and (min-width: 1056px) { + .is-block-desktop { + display: block !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-block-desktop-only { + display: block !important; } } + +@media screen and (min-width: 1216px) { + .is-block-widescreen { + display: block !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-block-widescreen-only { + display: block !important; } } + +@media screen and (min-width: 1408px) { + .is-block-fullhd { + display: block !important; } } + +.is-flex { + display: flex !important; } + +@media screen and (max-width: 768px) { + .is-flex-mobile { + display: flex !important; } } + +@media screen and (min-width: 769px), print { + .is-flex-tablet { + display: flex !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-flex-tablet-only { + display: flex !important; } } + +@media screen and (max-width: 1055px) { + .is-flex-touch { + display: flex !important; } } + +@media screen and (min-width: 1056px) { + .is-flex-desktop { + display: flex !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-flex-desktop-only { + display: flex !important; } } + +@media screen and (min-width: 1216px) { + .is-flex-widescreen { + display: flex !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-flex-widescreen-only { + display: flex !important; } } + +@media screen and (min-width: 1408px) { + .is-flex-fullhd { + display: flex !important; } } + +.is-inline { + display: inline !important; } + +@media screen and (max-width: 768px) { + .is-inline-mobile { + display: inline !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-tablet { + display: inline !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-tablet-only { + display: inline !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-touch { + display: inline !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-desktop { + display: inline !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-desktop-only { + display: inline !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-widescreen { + display: inline !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-widescreen-only { + display: inline !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-fullhd { + display: inline !important; } } + +.is-inline-block { + display: inline-block !important; } + +@media screen and (max-width: 768px) { + .is-inline-block-mobile { + display: inline-block !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-block-tablet { + display: inline-block !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-block-tablet-only { + display: inline-block !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-block-touch { + display: inline-block !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-block-desktop { + display: inline-block !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-block-desktop-only { + display: inline-block !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-block-widescreen { + display: inline-block !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-block-widescreen-only { + display: inline-block !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-block-fullhd { + display: inline-block !important; } } + +.is-inline-flex { + display: inline-flex !important; } + +@media screen and (max-width: 768px) { + .is-inline-flex-mobile { + display: inline-flex !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-flex-tablet { + display: inline-flex !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-flex-tablet-only { + display: inline-flex !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-flex-touch { + display: inline-flex !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-flex-desktop { + display: inline-flex !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-flex-desktop-only { + display: inline-flex !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-flex-widescreen { + display: inline-flex !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-flex-widescreen-only { + display: inline-flex !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-flex-fullhd { + display: inline-flex !important; } } + +.is-hidden { + display: none !important; } + +.is-sr-only { + border: none !important; + clip: rect(0, 0, 0, 0) !important; + height: 0.01em !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + white-space: nowrap !important; + width: 0.01em !important; } + +@media screen and (max-width: 768px) { + .is-hidden-mobile { + display: none !important; } } + +@media screen and (min-width: 769px), print { + .is-hidden-tablet { + display: none !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-hidden-tablet-only { + display: none !important; } } + +@media screen and (max-width: 1055px) { + .is-hidden-touch { + display: none !important; } } + +@media screen and (min-width: 1056px) { + .is-hidden-desktop { + display: none !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-hidden-desktop-only { + display: none !important; } } + +@media screen and (min-width: 1216px) { + .is-hidden-widescreen { + display: none !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-hidden-widescreen-only { + display: none !important; } } + +@media screen and (min-width: 1408px) { + .is-hidden-fullhd { + display: none !important; } } + +.is-invisible { + visibility: hidden !important; } + +@media screen and (max-width: 768px) { + .is-invisible-mobile { + visibility: hidden !important; } } + +@media screen and (min-width: 769px), print { + .is-invisible-tablet { + visibility: hidden !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-invisible-tablet-only { + visibility: hidden !important; } } + +@media screen and (max-width: 1055px) { + .is-invisible-touch { + visibility: hidden !important; } } + +@media screen and (min-width: 1056px) { + .is-invisible-desktop { + visibility: hidden !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-invisible-desktop-only { + visibility: hidden !important; } } + +@media screen and (min-width: 1216px) { + .is-invisible-widescreen { + visibility: hidden !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-invisible-widescreen-only { + visibility: hidden !important; } } + +@media screen and (min-width: 1408px) { + .is-invisible-fullhd { + visibility: hidden !important; } } + +.is-marginless { + margin: 0 !important; } + +.is-paddingless { + padding: 0 !important; } + +.is-radiusless { + border-radius: 0 !important; } + +.is-shadowless { + box-shadow: none !important; } + +.is-relative { + position: relative !important; } + +.box { + background-color: white; + border-radius: 6px; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + color: #222222; + display: block; + padding: 1.25rem; } + +a.box:hover, a.box:focus { + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #2e63b8; } + +a.box:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #2e63b8; } + +.button { + background-color: white; + border-color: #dbdbdb; + border-width: 1px; + color: #363636; + cursor: pointer; + justify-content: center; + padding-bottom: calc(0.375em - 1px); + padding-left: 0.75em; + padding-right: 0.75em; + padding-top: calc(0.375em - 1px); + text-align: center; + white-space: nowrap; } + .button strong { + color: inherit; } + .button .icon, .button .icon.is-small, .button #documenter .docs-sidebar form.docs-search > input.icon, #documenter .docs-sidebar .button form.docs-search > input.icon, .button .icon.is-medium, .button .icon.is-large { + height: 1.5em; + width: 1.5em; } + .button .icon:first-child:not(:last-child) { + margin-left: calc(-0.375em - 1px); + margin-right: 0.1875em; } + .button .icon:last-child:not(:first-child) { + margin-left: 0.1875em; + margin-right: calc(-0.375em - 1px); } + .button .icon:first-child:last-child { + margin-left: calc(-0.375em - 1px); + margin-right: calc(-0.375em - 1px); } + .button:hover, .button.is-hovered { + border-color: #b5b5b5; + color: #363636; } + .button:focus, .button.is-focused { + border-color: #3c5dcd; + color: #363636; } + .button:focus:not(:active), .button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .button:active, .button.is-active { + border-color: #4a4a4a; + color: #363636; } + .button.is-text { + background-color: transparent; + border-color: transparent; + color: #222222; + text-decoration: underline; } + .button.is-text:hover, .button.is-text.is-hovered, .button.is-text:focus, .button.is-text.is-focused { + background-color: whitesmoke; + color: #222222; } + .button.is-text:active, .button.is-text.is-active { + background-color: #e8e8e8; + color: #222222; } + .button.is-text[disabled], fieldset[disabled] .button.is-text { + background-color: transparent; + border-color: transparent; + box-shadow: none; } + .button.is-white { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + .button.is-white:hover, .button.is-white.is-hovered { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + .button.is-white:focus, .button.is-white.is-focused { + border-color: transparent; + color: #0a0a0a; } + .button.is-white:focus:not(:active), .button.is-white.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + .button.is-white:active, .button.is-white.is-active { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + .button.is-white[disabled], fieldset[disabled] .button.is-white { + background-color: white; + border-color: transparent; + box-shadow: none; } + .button.is-white.is-inverted { + background-color: #0a0a0a; + color: white; } + .button.is-white.is-inverted:hover, .button.is-white.is-inverted.is-hovered { + background-color: black; } + .button.is-white.is-inverted[disabled], fieldset[disabled] .button.is-white.is-inverted { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; + color: white; } + .button.is-white.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + .button.is-white.is-outlined:hover, .button.is-white.is-outlined.is-hovered, .button.is-white.is-outlined:focus, .button.is-white.is-outlined.is-focused { + background-color: white; + border-color: white; + color: #0a0a0a; } + .button.is-white.is-outlined.is-loading::after { + border-color: transparent transparent white white !important; } + .button.is-white.is-outlined.is-loading:hover::after, .button.is-white.is-outlined.is-loading.is-hovered::after, .button.is-white.is-outlined.is-loading:focus::after, .button.is-white.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-white.is-outlined[disabled], fieldset[disabled] .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + .button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined.is-hovered, .button.is-white.is-inverted.is-outlined:focus, .button.is-white.is-inverted.is-outlined.is-focused { + background-color: #0a0a0a; + color: white; } + .button.is-white.is-inverted.is-outlined.is-loading:hover::after, .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-white.is-inverted.is-outlined.is-loading:focus::after, .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + .button.is-white.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + .button.is-black:hover, .button.is-black.is-hovered { + background-color: #040404; + border-color: transparent; + color: white; } + .button.is-black:focus, .button.is-black.is-focused { + border-color: transparent; + color: white; } + .button.is-black:focus:not(:active), .button.is-black.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + .button.is-black:active, .button.is-black.is-active { + background-color: black; + border-color: transparent; + color: white; } + .button.is-black[disabled], fieldset[disabled] .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; } + .button.is-black.is-inverted { + background-color: white; + color: #0a0a0a; } + .button.is-black.is-inverted:hover, .button.is-black.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-black.is-inverted[disabled], fieldset[disabled] .button.is-black.is-inverted { + background-color: white; + border-color: transparent; + box-shadow: none; + color: #0a0a0a; } + .button.is-black.is-loading::after { + border-color: transparent transparent white white !important; } + .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + .button.is-black.is-outlined:hover, .button.is-black.is-outlined.is-hovered, .button.is-black.is-outlined:focus, .button.is-black.is-outlined.is-focused { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + .button.is-black.is-outlined.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-black.is-outlined.is-loading:hover::after, .button.is-black.is-outlined.is-loading.is-hovered::after, .button.is-black.is-outlined.is-loading:focus::after, .button.is-black.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + .button.is-black.is-outlined[disabled], fieldset[disabled] .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + .button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined.is-hovered, .button.is-black.is-inverted.is-outlined:focus, .button.is-black.is-inverted.is-outlined.is-focused { + background-color: white; + color: #0a0a0a; } + .button.is-black.is-inverted.is-outlined.is-loading:hover::after, .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-black.is-inverted.is-outlined.is-loading:focus::after, .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-black.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + .button.is-light { + background-color: whitesmoke; + border-color: transparent; + color: #363636; } + .button.is-light:hover, .button.is-light.is-hovered { + background-color: #eeeeee; + border-color: transparent; + color: #363636; } + .button.is-light:focus, .button.is-light.is-focused { + border-color: transparent; + color: #363636; } + .button.is-light:focus:not(:active), .button.is-light.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } + .button.is-light:active, .button.is-light.is-active { + background-color: #e8e8e8; + border-color: transparent; + color: #363636; } + .button.is-light[disabled], fieldset[disabled] .button.is-light { + background-color: whitesmoke; + border-color: transparent; + box-shadow: none; } + .button.is-light.is-inverted { + background-color: #363636; + color: whitesmoke; } + .button.is-light.is-inverted:hover, .button.is-light.is-inverted.is-hovered { + background-color: #292929; } + .button.is-light.is-inverted[disabled], fieldset[disabled] .button.is-light.is-inverted { + background-color: #363636; + border-color: transparent; + box-shadow: none; + color: whitesmoke; } + .button.is-light.is-loading::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-light.is-outlined { + background-color: transparent; + border-color: whitesmoke; + color: whitesmoke; } + .button.is-light.is-outlined:hover, .button.is-light.is-outlined.is-hovered, .button.is-light.is-outlined:focus, .button.is-light.is-outlined.is-focused { + background-color: whitesmoke; + border-color: whitesmoke; + color: #363636; } + .button.is-light.is-outlined.is-loading::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-light.is-outlined.is-loading:hover::after, .button.is-light.is-outlined.is-loading.is-hovered::after, .button.is-light.is-outlined.is-loading:focus::after, .button.is-light.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-light.is-outlined[disabled], fieldset[disabled] .button.is-light.is-outlined { + background-color: transparent; + border-color: whitesmoke; + box-shadow: none; + color: whitesmoke; } + .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: #363636; + color: #363636; } + .button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined.is-hovered, .button.is-light.is-inverted.is-outlined:focus, .button.is-light.is-inverted.is-outlined.is-focused { + background-color: #363636; + color: whitesmoke; } + .button.is-light.is-inverted.is-outlined.is-loading:hover::after, .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-light.is-inverted.is-outlined.is-loading:focus::after, .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-light.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: #363636; + box-shadow: none; + color: #363636; } + .button.is-dark, .content kbd.button { + background-color: #363636; + border-color: transparent; + color: whitesmoke; } + .button.is-dark:hover, .content kbd.button:hover, .button.is-dark.is-hovered, .content kbd.button.is-hovered { + background-color: #2f2f2f; + border-color: transparent; + color: whitesmoke; } + .button.is-dark:focus, .content kbd.button:focus, .button.is-dark.is-focused, .content kbd.button.is-focused { + border-color: transparent; + color: whitesmoke; } + .button.is-dark:focus:not(:active), .content kbd.button:focus:not(:active), .button.is-dark.is-focused:not(:active), .content kbd.button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } + .button.is-dark:active, .content kbd.button:active, .button.is-dark.is-active, .content kbd.button.is-active { + background-color: #292929; + border-color: transparent; + color: whitesmoke; } + .button.is-dark[disabled], .content kbd.button[disabled], fieldset[disabled] .button.is-dark, fieldset[disabled] .content kbd.button, .content fieldset[disabled] kbd.button { + background-color: #363636; + border-color: transparent; + box-shadow: none; } + .button.is-dark.is-inverted, .content kbd.button.is-inverted { + background-color: whitesmoke; + color: #363636; } + .button.is-dark.is-inverted:hover, .content kbd.button.is-inverted:hover, .button.is-dark.is-inverted.is-hovered, .content kbd.button.is-inverted.is-hovered { + background-color: #e8e8e8; } + .button.is-dark.is-inverted[disabled], .content kbd.button.is-inverted[disabled], fieldset[disabled] .button.is-dark.is-inverted, fieldset[disabled] .content kbd.button.is-inverted, .content fieldset[disabled] kbd.button.is-inverted { + background-color: whitesmoke; + border-color: transparent; + box-shadow: none; + color: #363636; } + .button.is-dark.is-loading::after, .content kbd.button.is-loading::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-dark.is-outlined, .content kbd.button.is-outlined { + background-color: transparent; + border-color: #363636; + color: #363636; } + .button.is-dark.is-outlined:hover, .content kbd.button.is-outlined:hover, .button.is-dark.is-outlined.is-hovered, .content kbd.button.is-outlined.is-hovered, .button.is-dark.is-outlined:focus, .content kbd.button.is-outlined:focus, .button.is-dark.is-outlined.is-focused, .content kbd.button.is-outlined.is-focused { + background-color: #363636; + border-color: #363636; + color: whitesmoke; } + .button.is-dark.is-outlined.is-loading::after, .content kbd.button.is-outlined.is-loading::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-dark.is-outlined.is-loading:hover::after, .content kbd.button.is-outlined.is-loading:hover::after, .button.is-dark.is-outlined.is-loading.is-hovered::after, .content kbd.button.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-outlined.is-loading:focus::after, .content kbd.button.is-outlined.is-loading:focus::after, .button.is-dark.is-outlined.is-loading.is-focused::after, .content kbd.button.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-dark.is-outlined[disabled], .content kbd.button.is-outlined[disabled], fieldset[disabled] .button.is-dark.is-outlined, fieldset[disabled] .content kbd.button.is-outlined, .content fieldset[disabled] kbd.button.is-outlined { + background-color: transparent; + border-color: #363636; + box-shadow: none; + color: #363636; } + .button.is-dark.is-inverted.is-outlined, .content kbd.button.is-inverted.is-outlined { + background-color: transparent; + border-color: whitesmoke; + color: whitesmoke; } + .button.is-dark.is-inverted.is-outlined:hover, .content kbd.button.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined.is-hovered, .content kbd.button.is-inverted.is-outlined.is-hovered, .button.is-dark.is-inverted.is-outlined:focus, .content kbd.button.is-inverted.is-outlined:focus, .button.is-dark.is-inverted.is-outlined.is-focused, .content kbd.button.is-inverted.is-outlined.is-focused { + background-color: whitesmoke; + color: #363636; } + .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, .content kbd.button.is-inverted.is-outlined.is-loading:hover::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, .content kbd.button.is-inverted.is-outlined.is-loading:focus::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after, .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-dark.is-inverted.is-outlined[disabled], .content kbd.button.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-dark.is-inverted.is-outlined, fieldset[disabled] .content kbd.button.is-inverted.is-outlined, .content fieldset[disabled] kbd.button.is-inverted.is-outlined { + background-color: transparent; + border-color: whitesmoke; + box-shadow: none; + color: whitesmoke; } + .button.is-primary, .docstring > section > a.button.docs-sourcelink { + background-color: #4eb5de; + border-color: transparent; + color: #fff; } + .button.is-primary:hover, .docstring > section > a.button.docs-sourcelink:hover, .button.is-primary.is-hovered, .docstring > section > a.button.is-hovered.docs-sourcelink { + background-color: #43b1dc; + border-color: transparent; + color: #fff; } + .button.is-primary:focus, .docstring > section > a.button.docs-sourcelink:focus, .button.is-primary.is-focused, .docstring > section > a.button.is-focused.docs-sourcelink { + border-color: transparent; + color: #fff; } + .button.is-primary:focus:not(:active), .docstring > section > a.button.docs-sourcelink:focus:not(:active), .button.is-primary.is-focused:not(:active), .docstring > section > a.button.is-focused.docs-sourcelink:not(:active) { + box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } + .button.is-primary:active, .docstring > section > a.button.docs-sourcelink:active, .button.is-primary.is-active, .docstring > section > a.button.is-active.docs-sourcelink { + background-color: #39acda; + border-color: transparent; + color: #fff; } + .button.is-primary[disabled], .docstring > section > a.button.docs-sourcelink[disabled], fieldset[disabled] .button.is-primary, fieldset[disabled] .docstring > section > a.button.docs-sourcelink { + background-color: #4eb5de; + border-color: transparent; + box-shadow: none; } + .button.is-primary.is-inverted, .docstring > section > a.button.is-inverted.docs-sourcelink { + background-color: #fff; + color: #4eb5de; } + .button.is-primary.is-inverted:hover, .docstring > section > a.button.is-inverted.docs-sourcelink:hover, .button.is-primary.is-inverted.is-hovered, .docstring > section > a.button.is-inverted.is-hovered.docs-sourcelink { + background-color: #f2f2f2; } + .button.is-primary.is-inverted[disabled], .docstring > section > a.button.is-inverted.docs-sourcelink[disabled], fieldset[disabled] .button.is-primary.is-inverted, fieldset[disabled] .docstring > section > a.button.is-inverted.docs-sourcelink { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #4eb5de; } + .button.is-primary.is-loading::after, .docstring > section > a.button.is-loading.docs-sourcelink::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-primary.is-outlined, .docstring > section > a.button.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #4eb5de; + color: #4eb5de; } + .button.is-primary.is-outlined:hover, .docstring > section > a.button.is-outlined.docs-sourcelink:hover, .button.is-primary.is-outlined.is-hovered, .docstring > section > a.button.is-outlined.is-hovered.docs-sourcelink, .button.is-primary.is-outlined:focus, .docstring > section > a.button.is-outlined.docs-sourcelink:focus, .button.is-primary.is-outlined.is-focused, .docstring > section > a.button.is-outlined.is-focused.docs-sourcelink { + background-color: #4eb5de; + border-color: #4eb5de; + color: #fff; } + .button.is-primary.is-outlined.is-loading::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink::after { + border-color: transparent transparent #4eb5de #4eb5de !important; } + .button.is-primary.is-outlined.is-loading:hover::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:hover::after, .button.is-primary.is-outlined.is-loading.is-hovered::after, .docstring > section > a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after, .button.is-primary.is-outlined.is-loading:focus::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:focus::after, .button.is-primary.is-outlined.is-loading.is-focused::after, .docstring > section > a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-primary.is-outlined[disabled], .docstring > section > a.button.is-outlined.docs-sourcelink[disabled], fieldset[disabled] .button.is-primary.is-outlined, fieldset[disabled] .docstring > section > a.button.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #4eb5de; + box-shadow: none; + color: #4eb5de; } + .button.is-primary.is-inverted.is-outlined, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-primary.is-inverted.is-outlined:hover, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:hover, .button.is-primary.is-inverted.is-outlined.is-hovered, .docstring > section > a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink, .button.is-primary.is-inverted.is-outlined:focus, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:focus, .button.is-primary.is-inverted.is-outlined.is-focused, .docstring > section > a.button.is-inverted.is-outlined.is-focused.docs-sourcelink { + background-color: #fff; + color: #4eb5de; } + .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after, .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after { + border-color: transparent transparent #4eb5de #4eb5de !important; } + .button.is-primary.is-inverted.is-outlined[disabled], .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink[disabled], fieldset[disabled] .button.is-primary.is-inverted.is-outlined, fieldset[disabled] .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-link { + background-color: #2e63b8; + border-color: transparent; + color: #fff; } + .button.is-link:hover, .button.is-link.is-hovered { + background-color: #2b5eae; + border-color: transparent; + color: #fff; } + .button.is-link:focus, .button.is-link.is-focused { + border-color: transparent; + color: #fff; } + .button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .button.is-link:active, .button.is-link.is-active { + background-color: #2958a4; + border-color: transparent; + color: #fff; } + .button.is-link[disabled], fieldset[disabled] .button.is-link { + background-color: #2e63b8; + border-color: transparent; + box-shadow: none; } + .button.is-link.is-inverted { + background-color: #fff; + color: #2e63b8; } + .button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-link.is-inverted[disabled], fieldset[disabled] .button.is-link.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #2e63b8; } + .button.is-link.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-link.is-outlined { + background-color: transparent; + border-color: #2e63b8; + color: #2e63b8; } + .button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused { + background-color: #2e63b8; + border-color: #2e63b8; + color: #fff; } + .button.is-link.is-outlined.is-loading::after { + border-color: transparent transparent #2e63b8 #2e63b8 !important; } + .button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-link.is-outlined[disabled], fieldset[disabled] .button.is-link.is-outlined { + background-color: transparent; + border-color: #2e63b8; + box-shadow: none; + color: #2e63b8; } + .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-link.is-inverted.is-outlined:hover, .button.is-link.is-inverted.is-outlined.is-hovered, .button.is-link.is-inverted.is-outlined:focus, .button.is-link.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #2e63b8; } + .button.is-link.is-inverted.is-outlined.is-loading:hover::after, .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #2e63b8 #2e63b8 !important; } + .button.is-link.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-info { + background-color: #209cee; + border-color: transparent; + color: #fff; } + .button.is-info:hover, .button.is-info.is-hovered { + background-color: #1497ed; + border-color: transparent; + color: #fff; } + .button.is-info:focus, .button.is-info.is-focused { + border-color: transparent; + color: #fff; } + .button.is-info:focus:not(:active), .button.is-info.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } + .button.is-info:active, .button.is-info.is-active { + background-color: #1190e3; + border-color: transparent; + color: #fff; } + .button.is-info[disabled], fieldset[disabled] .button.is-info { + background-color: #209cee; + border-color: transparent; + box-shadow: none; } + .button.is-info.is-inverted { + background-color: #fff; + color: #209cee; } + .button.is-info.is-inverted:hover, .button.is-info.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-info.is-inverted[disabled], fieldset[disabled] .button.is-info.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #209cee; } + .button.is-info.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-info.is-outlined { + background-color: transparent; + border-color: #209cee; + color: #209cee; } + .button.is-info.is-outlined:hover, .button.is-info.is-outlined.is-hovered, .button.is-info.is-outlined:focus, .button.is-info.is-outlined.is-focused { + background-color: #209cee; + border-color: #209cee; + color: #fff; } + .button.is-info.is-outlined.is-loading::after { + border-color: transparent transparent #209cee #209cee !important; } + .button.is-info.is-outlined.is-loading:hover::after, .button.is-info.is-outlined.is-loading.is-hovered::after, .button.is-info.is-outlined.is-loading:focus::after, .button.is-info.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-info.is-outlined[disabled], fieldset[disabled] .button.is-info.is-outlined { + background-color: transparent; + border-color: #209cee; + box-shadow: none; + color: #209cee; } + .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined.is-hovered, .button.is-info.is-inverted.is-outlined:focus, .button.is-info.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #209cee; } + .button.is-info.is-inverted.is-outlined.is-loading:hover::after, .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-info.is-inverted.is-outlined.is-loading:focus::after, .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #209cee #209cee !important; } + .button.is-info.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-success { + background-color: #22c35b; + border-color: transparent; + color: #fff; } + .button.is-success:hover, .button.is-success.is-hovered { + background-color: #20b856; + border-color: transparent; + color: #fff; } + .button.is-success:focus, .button.is-success.is-focused { + border-color: transparent; + color: #fff; } + .button.is-success:focus:not(:active), .button.is-success.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } + .button.is-success:active, .button.is-success.is-active { + background-color: #1ead51; + border-color: transparent; + color: #fff; } + .button.is-success[disabled], fieldset[disabled] .button.is-success { + background-color: #22c35b; + border-color: transparent; + box-shadow: none; } + .button.is-success.is-inverted { + background-color: #fff; + color: #22c35b; } + .button.is-success.is-inverted:hover, .button.is-success.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-success.is-inverted[disabled], fieldset[disabled] .button.is-success.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #22c35b; } + .button.is-success.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-success.is-outlined { + background-color: transparent; + border-color: #22c35b; + color: #22c35b; } + .button.is-success.is-outlined:hover, .button.is-success.is-outlined.is-hovered, .button.is-success.is-outlined:focus, .button.is-success.is-outlined.is-focused { + background-color: #22c35b; + border-color: #22c35b; + color: #fff; } + .button.is-success.is-outlined.is-loading::after { + border-color: transparent transparent #22c35b #22c35b !important; } + .button.is-success.is-outlined.is-loading:hover::after, .button.is-success.is-outlined.is-loading.is-hovered::after, .button.is-success.is-outlined.is-loading:focus::after, .button.is-success.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-success.is-outlined[disabled], fieldset[disabled] .button.is-success.is-outlined { + background-color: transparent; + border-color: #22c35b; + box-shadow: none; + color: #22c35b; } + .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined.is-hovered, .button.is-success.is-inverted.is-outlined:focus, .button.is-success.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #22c35b; } + .button.is-success.is-inverted.is-outlined.is-loading:hover::after, .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-success.is-inverted.is-outlined.is-loading:focus::after, .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #22c35b #22c35b !important; } + .button.is-success.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-warning { + background-color: #ffdd57; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning:hover, .button.is-warning.is-hovered { + background-color: #ffda4a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning:focus, .button.is-warning.is-focused { + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning:focus:not(:active), .button.is-warning.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } + .button.is-warning:active, .button.is-warning.is-active { + background-color: #ffd83e; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning[disabled], fieldset[disabled] .button.is-warning { + background-color: #ffdd57; + border-color: transparent; + box-shadow: none; } + .button.is-warning.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + color: #ffdd57; } + .button.is-warning.is-inverted:hover, .button.is-warning.is-inverted.is-hovered { + background-color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-inverted[disabled], fieldset[disabled] .button.is-warning.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + border-color: transparent; + box-shadow: none; + color: #ffdd57; } + .button.is-warning.is-loading::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ffdd57; + color: #ffdd57; } + .button.is-warning.is-outlined:hover, .button.is-warning.is-outlined.is-hovered, .button.is-warning.is-outlined:focus, .button.is-warning.is-outlined.is-focused { + background-color: #ffdd57; + border-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-outlined.is-loading::after { + border-color: transparent transparent #ffdd57 #ffdd57 !important; } + .button.is-warning.is-outlined.is-loading:hover::after, .button.is-warning.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-outlined.is-loading:focus::after, .button.is-warning.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-warning.is-outlined[disabled], fieldset[disabled] .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ffdd57; + box-shadow: none; + color: #ffdd57; } + .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined.is-hovered, .button.is-warning.is-inverted.is-outlined:focus, .button.is-warning.is-inverted.is-outlined.is-focused { + background-color: rgba(0, 0, 0, 0.7); + color: #ffdd57; } + .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ffdd57 #ffdd57 !important; } + .button.is-warning.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + box-shadow: none; + color: rgba(0, 0, 0, 0.7); } + .button.is-danger { + background-color: #da0b00; + border-color: transparent; + color: #fff; } + .button.is-danger:hover, .button.is-danger.is-hovered { + background-color: #cd0a00; + border-color: transparent; + color: #fff; } + .button.is-danger:focus, .button.is-danger.is-focused { + border-color: transparent; + color: #fff; } + .button.is-danger:focus:not(:active), .button.is-danger.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } + .button.is-danger:active, .button.is-danger.is-active { + background-color: #c10a00; + border-color: transparent; + color: #fff; } + .button.is-danger[disabled], fieldset[disabled] .button.is-danger { + background-color: #da0b00; + border-color: transparent; + box-shadow: none; } + .button.is-danger.is-inverted { + background-color: #fff; + color: #da0b00; } + .button.is-danger.is-inverted:hover, .button.is-danger.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-danger.is-inverted[disabled], fieldset[disabled] .button.is-danger.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #da0b00; } + .button.is-danger.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-danger.is-outlined { + background-color: transparent; + border-color: #da0b00; + color: #da0b00; } + .button.is-danger.is-outlined:hover, .button.is-danger.is-outlined.is-hovered, .button.is-danger.is-outlined:focus, .button.is-danger.is-outlined.is-focused { + background-color: #da0b00; + border-color: #da0b00; + color: #fff; } + .button.is-danger.is-outlined.is-loading::after { + border-color: transparent transparent #da0b00 #da0b00 !important; } + .button.is-danger.is-outlined.is-loading:hover::after, .button.is-danger.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-outlined.is-loading:focus::after, .button.is-danger.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-danger.is-outlined[disabled], fieldset[disabled] .button.is-danger.is-outlined { + background-color: transparent; + border-color: #da0b00; + box-shadow: none; + color: #da0b00; } + .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined.is-hovered, .button.is-danger.is-inverted.is-outlined:focus, .button.is-danger.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #da0b00; } + .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #da0b00 #da0b00 !important; } + .button.is-danger.is-inverted.is-outlined[disabled], fieldset[disabled] .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-small, #documenter .docs-sidebar form.docs-search > input.button { + border-radius: 2px; + font-size: 0.75rem; } + .button.is-normal { + font-size: 1rem; } + .button.is-medium { + font-size: 1.25rem; } + .button.is-large { + font-size: 1.5rem; } + .button[disabled], fieldset[disabled] .button { + background-color: white; + border-color: #dbdbdb; + box-shadow: none; + opacity: 0.5; } + .button.is-fullwidth { + display: flex; + width: 100%; } + .button.is-loading { + color: transparent !important; + pointer-events: none; } + .button.is-loading::after { + position: absolute; + left: calc(50% - (1em / 2)); + top: calc(50% - (1em / 2)); + position: absolute !important; } + .button.is-static { + background-color: whitesmoke; + border-color: #dbdbdb; + color: #6b6b6b; + box-shadow: none; + pointer-events: none; } + .button.is-rounded, #documenter .docs-sidebar form.docs-search > input.button { + border-radius: 290486px; + padding-left: 1em; + padding-right: 1em; } + +.buttons { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .buttons .button { + margin-bottom: 0.5rem; } + .buttons .button:not(:last-child):not(.is-fullwidth) { + margin-right: 0.5rem; } + .buttons:last-child { + margin-bottom: -0.5rem; } + .buttons:not(:last-child) { + margin-bottom: 1rem; } + .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { + border-radius: 2px; + font-size: 0.75rem; } + .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { + font-size: 1.25rem; } + .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { + font-size: 1.5rem; } + .buttons.has-addons .button:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .buttons.has-addons .button:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + margin-right: -1px; } + .buttons.has-addons .button:last-child { + margin-right: 0; } + .buttons.has-addons .button:hover, .buttons.has-addons .button.is-hovered { + z-index: 2; } + .buttons.has-addons .button:focus, .buttons.has-addons .button.is-focused, .buttons.has-addons .button:active, .buttons.has-addons .button.is-active, .buttons.has-addons .button.is-selected { + z-index: 3; } + .buttons.has-addons .button:focus:hover, .buttons.has-addons .button.is-focused:hover, .buttons.has-addons .button:active:hover, .buttons.has-addons .button.is-active:hover, .buttons.has-addons .button.is-selected:hover { + z-index: 4; } + .buttons.has-addons .button.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .buttons.is-centered { + justify-content: center; } + .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + .buttons.is-right { + justify-content: flex-end; } + .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + +.container { + flex-grow: 1; + margin: 0 auto; + position: relative; + width: auto; } + @media screen and (min-width: 1056px) { + .container { + max-width: 992px; } + .container.is-fluid { + margin-left: 32px; + margin-right: 32px; + max-width: none; } } + @media screen and (max-width: 1215px) { + .container.is-widescreen { + max-width: 1152px; } } + @media screen and (max-width: 1407px) { + .container.is-fullhd { + max-width: 1344px; } } + @media screen and (min-width: 1216px) { + .container { + max-width: 1152px; } } + @media screen and (min-width: 1408px) { + .container { + max-width: 1344px; } } +.content li + li { + margin-top: 0.25em; } + +.content p:not(:last-child), +.content dl:not(:last-child), +.content ol:not(:last-child), +.content ul:not(:last-child), +.content blockquote:not(:last-child), +.content pre:not(:last-child), +.content table:not(:last-child) { + margin-bottom: 1em; } + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + color: #222222; + font-weight: 600; + line-height: 1.125; } + +.content h1 { + font-size: 2em; + margin-bottom: 0.5em; } + .content h1:not(:first-child) { + margin-top: 1em; } + +.content h2 { + font-size: 1.75em; + margin-bottom: 0.5714em; } + .content h2:not(:first-child) { + margin-top: 1.1428em; } + +.content h3 { + font-size: 1.5em; + margin-bottom: 0.6666em; } + .content h3:not(:first-child) { + margin-top: 1.3333em; } + +.content h4 { + font-size: 1.25em; + margin-bottom: 0.8em; } + +.content h5 { + font-size: 1.125em; + margin-bottom: 0.8888em; } + +.content h6 { + font-size: 1em; + margin-bottom: 1em; } + +.content blockquote { + background-color: whitesmoke; + border-left: 5px solid #dbdbdb; + padding: 1.25em 1.5em; } + +.content ol { + list-style-position: outside; + margin-left: 2em; + margin-top: 1em; } + .content ol:not([type]) { + list-style-type: decimal; } + .content ol.is-lower-alpha:not([type]) { + list-style-type: lower-alpha; } + .content ol.is-lower-roman:not([type]) { + list-style-type: lower-roman; } + .content ol.is-upper-alpha:not([type]) { + list-style-type: upper-alpha; } + .content ol.is-upper-roman:not([type]) { + list-style-type: upper-roman; } + +.content ul { + list-style: disc outside; + margin-left: 2em; + margin-top: 1em; } + .content ul ul { + list-style-type: circle; + margin-top: 0.5em; } + .content ul ul ul { + list-style-type: square; } + +.content dd { + margin-left: 2em; } + +.content figure { + margin-left: 2em; + margin-right: 2em; + text-align: center; } + .content figure:not(:first-child) { + margin-top: 2em; } + .content figure:not(:last-child) { + margin-bottom: 2em; } + .content figure img { + display: inline-block; } + .content figure figcaption { + font-style: italic; } + +.content pre { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding: 0; + white-space: pre; + word-wrap: normal; } + +.content sup, +.content sub { + font-size: 75%; } + +.content table { + width: 100%; } + .content table td, + .content table th { + border: 1px solid #dbdbdb; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; } + .content table th { + color: #222222; } + .content table th:not([align]) { + text-align: left; } + .content table thead td, + .content table thead th { + border-width: 0 0 2px; + color: #222222; } + .content table tfoot td, + .content table tfoot th { + border-width: 2px 0 0; + color: #222222; } + .content table tbody tr:last-child td, + .content table tbody tr:last-child th { + border-bottom-width: 0; } + +.content .tabs li + li { + margin-top: 0; } + +.content.is-small, #documenter .docs-sidebar form.docs-search > input.content { + font-size: 0.75rem; } + +.content.is-medium { + font-size: 1.25rem; } + +.content.is-large { + font-size: 1.5rem; } + +.icon { + align-items: center; + display: inline-flex; + justify-content: center; + height: 1.5rem; + width: 1.5rem; } + .icon.is-small, #documenter .docs-sidebar form.docs-search > input.icon { + height: 1rem; + width: 1rem; } + .icon.is-medium { + height: 2rem; + width: 2rem; } + .icon.is-large { + height: 3rem; + width: 3rem; } + +.image, #documenter .docs-sidebar .docs-logo > img { + display: block; + position: relative; } + .image img, #documenter .docs-sidebar .docs-logo > img img { + display: block; + height: auto; + width: 100%; } + .image img.is-rounded, #documenter .docs-sidebar .docs-logo > img img.is-rounded { + border-radius: 290486px; } + .image.is-square img, #documenter .docs-sidebar .docs-logo > img.is-square img, + .image.is-square .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, .image.is-1by1 img, #documenter .docs-sidebar .docs-logo > img.is-1by1 img, + .image.is-1by1 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, .image.is-5by4 img, #documenter .docs-sidebar .docs-logo > img.is-5by4 img, + .image.is-5by4 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, .image.is-4by3 img, #documenter .docs-sidebar .docs-logo > img.is-4by3 img, + .image.is-4by3 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, .image.is-3by2 img, #documenter .docs-sidebar .docs-logo > img.is-3by2 img, + .image.is-3by2 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, .image.is-5by3 img, #documenter .docs-sidebar .docs-logo > img.is-5by3 img, + .image.is-5by3 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, .image.is-16by9 img, #documenter .docs-sidebar .docs-logo > img.is-16by9 img, + .image.is-16by9 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, .image.is-2by1 img, #documenter .docs-sidebar .docs-logo > img.is-2by1 img, + .image.is-2by1 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, .image.is-3by1 img, #documenter .docs-sidebar .docs-logo > img.is-3by1 img, + .image.is-3by1 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, .image.is-4by5 img, #documenter .docs-sidebar .docs-logo > img.is-4by5 img, + .image.is-4by5 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, .image.is-3by4 img, #documenter .docs-sidebar .docs-logo > img.is-3by4 img, + .image.is-3by4 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, .image.is-2by3 img, #documenter .docs-sidebar .docs-logo > img.is-2by3 img, + .image.is-2by3 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, .image.is-3by5 img, #documenter .docs-sidebar .docs-logo > img.is-3by5 img, + .image.is-3by5 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, .image.is-9by16 img, #documenter .docs-sidebar .docs-logo > img.is-9by16 img, + .image.is-9by16 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, .image.is-1by2 img, #documenter .docs-sidebar .docs-logo > img.is-1by2 img, + .image.is-1by2 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, .image.is-1by3 img, #documenter .docs-sidebar .docs-logo > img.is-1by3 img, + .image.is-1by3 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio { + height: 100%; + width: 100%; } + .image.is-square, #documenter .docs-sidebar .docs-logo > img.is-square, .image.is-1by1, #documenter .docs-sidebar .docs-logo > img.is-1by1 { + padding-top: 100%; } + .image.is-5by4, #documenter .docs-sidebar .docs-logo > img.is-5by4 { + padding-top: 80%; } + .image.is-4by3, #documenter .docs-sidebar .docs-logo > img.is-4by3 { + padding-top: 75%; } + .image.is-3by2, #documenter .docs-sidebar .docs-logo > img.is-3by2 { + padding-top: 66.6666%; } + .image.is-5by3, #documenter .docs-sidebar .docs-logo > img.is-5by3 { + padding-top: 60%; } + .image.is-16by9, #documenter .docs-sidebar .docs-logo > img.is-16by9 { + padding-top: 56.25%; } + .image.is-2by1, #documenter .docs-sidebar .docs-logo > img.is-2by1 { + padding-top: 50%; } + .image.is-3by1, #documenter .docs-sidebar .docs-logo > img.is-3by1 { + padding-top: 33.3333%; } + .image.is-4by5, #documenter .docs-sidebar .docs-logo > img.is-4by5 { + padding-top: 125%; } + .image.is-3by4, #documenter .docs-sidebar .docs-logo > img.is-3by4 { + padding-top: 133.3333%; } + .image.is-2by3, #documenter .docs-sidebar .docs-logo > img.is-2by3 { + padding-top: 150%; } + .image.is-3by5, #documenter .docs-sidebar .docs-logo > img.is-3by5 { + padding-top: 166.6666%; } + .image.is-9by16, #documenter .docs-sidebar .docs-logo > img.is-9by16 { + padding-top: 177.7777%; } + .image.is-1by2, #documenter .docs-sidebar .docs-logo > img.is-1by2 { + padding-top: 200%; } + .image.is-1by3, #documenter .docs-sidebar .docs-logo > img.is-1by3 { + padding-top: 300%; } + .image.is-16x16, #documenter .docs-sidebar .docs-logo > img.is-16x16 { + height: 16px; + width: 16px; } + .image.is-24x24, #documenter .docs-sidebar .docs-logo > img.is-24x24 { + height: 24px; + width: 24px; } + .image.is-32x32, #documenter .docs-sidebar .docs-logo > img.is-32x32 { + height: 32px; + width: 32px; } + .image.is-48x48, #documenter .docs-sidebar .docs-logo > img.is-48x48 { + height: 48px; + width: 48px; } + .image.is-64x64, #documenter .docs-sidebar .docs-logo > img.is-64x64 { + height: 64px; + width: 64px; } + .image.is-96x96, #documenter .docs-sidebar .docs-logo > img.is-96x96 { + height: 96px; + width: 96px; } + .image.is-128x128, #documenter .docs-sidebar .docs-logo > img.is-128x128 { + height: 128px; + width: 128px; } + +.notification { + background-color: whitesmoke; + border-radius: 4px; + padding: 1.25rem 2.5rem 1.25rem 1.5rem; + position: relative; } + .notification a:not(.button):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; } + .notification strong { + color: currentColor; } + .notification code, + .notification pre { + background: white; } + .notification pre code { + background: transparent; } + .notification > .delete { + position: absolute; + right: 0.5rem; + top: 0.5rem; } + .notification .title, + .notification .subtitle, + .notification .content { + color: currentColor; } + .notification.is-white { + background-color: white; + color: #0a0a0a; } + .notification.is-black { + background-color: #0a0a0a; + color: white; } + .notification.is-light { + background-color: whitesmoke; + color: #363636; } + .notification.is-dark, .content kbd.notification { + background-color: #363636; + color: whitesmoke; } + .notification.is-primary, .docstring > section > a.notification.docs-sourcelink { + background-color: #4eb5de; + color: #fff; } + .notification.is-link { + background-color: #2e63b8; + color: #fff; } + .notification.is-info { + background-color: #209cee; + color: #fff; } + .notification.is-success { + background-color: #22c35b; + color: #fff; } + .notification.is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .notification.is-danger { + background-color: #da0b00; + color: #fff; } + +.progress { + -moz-appearance: none; + -webkit-appearance: none; + border: none; + border-radius: 290486px; + display: block; + height: 1rem; + overflow: hidden; + padding: 0; + width: 100%; } + .progress::-webkit-progress-bar { + background-color: #dbdbdb; } + .progress::-webkit-progress-value { + background-color: #222222; } + .progress::-moz-progress-bar { + background-color: #222222; } + .progress::-ms-fill { + background-color: #222222; + border: none; } + .progress.is-white::-webkit-progress-value { + background-color: white; } + .progress.is-white::-moz-progress-bar { + background-color: white; } + .progress.is-white::-ms-fill { + background-color: white; } + .progress.is-white:indeterminate { + background-image: linear-gradient(to right, white 30%, #dbdbdb 30%); } + .progress.is-black::-webkit-progress-value { + background-color: #0a0a0a; } + .progress.is-black::-moz-progress-bar { + background-color: #0a0a0a; } + .progress.is-black::-ms-fill { + background-color: #0a0a0a; } + .progress.is-black:indeterminate { + background-image: linear-gradient(to right, #0a0a0a 30%, #dbdbdb 30%); } + .progress.is-light::-webkit-progress-value { + background-color: whitesmoke; } + .progress.is-light::-moz-progress-bar { + background-color: whitesmoke; } + .progress.is-light::-ms-fill { + background-color: whitesmoke; } + .progress.is-light:indeterminate { + background-image: linear-gradient(to right, whitesmoke 30%, #dbdbdb 30%); } + .progress.is-dark::-webkit-progress-value, .content kbd.progress::-webkit-progress-value { + background-color: #363636; } + .progress.is-dark::-moz-progress-bar, .content kbd.progress::-moz-progress-bar { + background-color: #363636; } + .progress.is-dark::-ms-fill, .content kbd.progress::-ms-fill { + background-color: #363636; } + .progress.is-dark:indeterminate, .content kbd.progress:indeterminate { + background-image: linear-gradient(to right, #363636 30%, #dbdbdb 30%); } + .progress.is-primary::-webkit-progress-value, .docstring > section > a.progress.docs-sourcelink::-webkit-progress-value { + background-color: #4eb5de; } + .progress.is-primary::-moz-progress-bar, .docstring > section > a.progress.docs-sourcelink::-moz-progress-bar { + background-color: #4eb5de; } + .progress.is-primary::-ms-fill, .docstring > section > a.progress.docs-sourcelink::-ms-fill { + background-color: #4eb5de; } + .progress.is-primary:indeterminate, .docstring > section > a.progress.docs-sourcelink:indeterminate { + background-image: linear-gradient(to right, #4eb5de 30%, #dbdbdb 30%); } + .progress.is-link::-webkit-progress-value { + background-color: #2e63b8; } + .progress.is-link::-moz-progress-bar { + background-color: #2e63b8; } + .progress.is-link::-ms-fill { + background-color: #2e63b8; } + .progress.is-link:indeterminate { + background-image: linear-gradient(to right, #2e63b8 30%, #dbdbdb 30%); } + .progress.is-info::-webkit-progress-value { + background-color: #209cee; } + .progress.is-info::-moz-progress-bar { + background-color: #209cee; } + .progress.is-info::-ms-fill { + background-color: #209cee; } + .progress.is-info:indeterminate { + background-image: linear-gradient(to right, #209cee 30%, #dbdbdb 30%); } + .progress.is-success::-webkit-progress-value { + background-color: #22c35b; } + .progress.is-success::-moz-progress-bar { + background-color: #22c35b; } + .progress.is-success::-ms-fill { + background-color: #22c35b; } + .progress.is-success:indeterminate { + background-image: linear-gradient(to right, #22c35b 30%, #dbdbdb 30%); } + .progress.is-warning::-webkit-progress-value { + background-color: #ffdd57; } + .progress.is-warning::-moz-progress-bar { + background-color: #ffdd57; } + .progress.is-warning::-ms-fill { + background-color: #ffdd57; } + .progress.is-warning:indeterminate { + background-image: linear-gradient(to right, #ffdd57 30%, #dbdbdb 30%); } + .progress.is-danger::-webkit-progress-value { + background-color: #da0b00; } + .progress.is-danger::-moz-progress-bar { + background-color: #da0b00; } + .progress.is-danger::-ms-fill { + background-color: #da0b00; } + .progress.is-danger:indeterminate { + background-image: linear-gradient(to right, #da0b00 30%, #dbdbdb 30%); } + .progress:indeterminate { + animation-duration: 1.5s; + animation-iteration-count: infinite; + animation-name: moveIndeterminate; + animation-timing-function: linear; + background-color: #dbdbdb; + background-image: linear-gradient(to right, #222222 30%, #dbdbdb 30%); + background-position: top left; + background-repeat: no-repeat; + background-size: 150% 150%; } + .progress:indeterminate::-webkit-progress-bar { + background-color: transparent; } + .progress:indeterminate::-moz-progress-bar { + background-color: transparent; } + .progress.is-small, #documenter .docs-sidebar form.docs-search > input.progress { + height: 0.75rem; } + .progress.is-medium { + height: 1.25rem; } + .progress.is-large { + height: 1.5rem; } + +@keyframes moveIndeterminate { + from { + background-position: 200% 0; } + to { + background-position: -200% 0; } } + +.table { + background-color: white; + color: #363636; } + .table td, + .table th { + border: 1px solid #dbdbdb; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; } + .table td.is-white, + .table th.is-white { + background-color: white; + border-color: white; + color: #0a0a0a; } + .table td.is-black, + .table th.is-black { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + .table td.is-light, + .table th.is-light { + background-color: whitesmoke; + border-color: whitesmoke; + color: #363636; } + .table td.is-dark, + .table th.is-dark { + background-color: #363636; + border-color: #363636; + color: whitesmoke; } + .table td.is-primary, + .table th.is-primary { + background-color: #4eb5de; + border-color: #4eb5de; + color: #fff; } + .table td.is-link, + .table th.is-link { + background-color: #2e63b8; + border-color: #2e63b8; + color: #fff; } + .table td.is-info, + .table th.is-info { + background-color: #209cee; + border-color: #209cee; + color: #fff; } + .table td.is-success, + .table th.is-success { + background-color: #22c35b; + border-color: #22c35b; + color: #fff; } + .table td.is-warning, + .table th.is-warning { + background-color: #ffdd57; + border-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .table td.is-danger, + .table th.is-danger { + background-color: #da0b00; + border-color: #da0b00; + color: #fff; } + .table td.is-narrow, + .table th.is-narrow { + white-space: nowrap; + width: 1%; } + .table td.is-selected, + .table th.is-selected { + background-color: #4eb5de; + color: #fff; } + .table td.is-selected a, + .table td.is-selected strong, + .table th.is-selected a, + .table th.is-selected strong { + color: currentColor; } + .table th { + color: #222222; } + .table th:not([align]) { + text-align: left; } + .table tr.is-selected { + background-color: #4eb5de; + color: #fff; } + .table tr.is-selected a, + .table tr.is-selected strong { + color: currentColor; } + .table tr.is-selected td, + .table tr.is-selected th { + border-color: #fff; + color: currentColor; } + .table thead { + background-color: transparent; } + .table thead td, + .table thead th { + border-width: 0 0 2px; + color: #222222; } + .table tfoot { + background-color: transparent; } + .table tfoot td, + .table tfoot th { + border-width: 2px 0 0; + color: #222222; } + .table tbody { + background-color: transparent; } + .table tbody tr:last-child td, + .table tbody tr:last-child th { + border-bottom-width: 0; } + .table.is-bordered td, + .table.is-bordered th { + border-width: 1px; } + .table.is-bordered tr:last-child td, + .table.is-bordered tr:last-child th { + border-bottom-width: 1px; } + .table.is-fullwidth { + width: 100%; } + .table.is-hoverable tbody tr:not(.is-selected):hover { + background-color: #fafafa; } + .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover { + background-color: #fafafa; } + .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) { + background-color: whitesmoke; } + .table.is-narrow td, + .table.is-narrow th { + padding: 0.25em 0.5em; } + .table.is-striped tbody tr:not(.is-selected):nth-child(even) { + background-color: #fafafa; } + +.table-container { + -webkit-overflow-scrolling: touch; + overflow: auto; + overflow-y: hidden; + max-width: 100%; } + +.tags { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .tags .tag, .tags .content kbd, .content .tags kbd, .tags .docstring > section > a.docs-sourcelink { + margin-bottom: 0.5rem; } + .tags .tag:not(:last-child), .tags .content kbd:not(:last-child), .content .tags kbd:not(:last-child), .tags .docstring > section > a.docs-sourcelink:not(:last-child) { + margin-right: 0.5rem; } + .tags:last-child { + margin-bottom: -0.5rem; } + .tags:not(:last-child) { + margin-bottom: 1rem; } + .tags.are-medium .tag:not(.is-normal):not(.is-large), .tags.are-medium .content kbd:not(.is-normal):not(.is-large), .content .tags.are-medium kbd:not(.is-normal):not(.is-large), .tags.are-medium .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-large) { + font-size: 1rem; } + .tags.are-large .tag:not(.is-normal):not(.is-medium), .tags.are-large .content kbd:not(.is-normal):not(.is-medium), .content .tags.are-large kbd:not(.is-normal):not(.is-medium), .tags.are-large .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-medium) { + font-size: 1.25rem; } + .tags.is-centered { + justify-content: center; } + .tags.is-centered .tag, .tags.is-centered .content kbd, .content .tags.is-centered kbd, .tags.is-centered .docstring > section > a.docs-sourcelink { + margin-right: 0.25rem; + margin-left: 0.25rem; } + .tags.is-right { + justify-content: flex-end; } + .tags.is-right .tag:not(:first-child), .tags.is-right .content kbd:not(:first-child), .content .tags.is-right kbd:not(:first-child), .tags.is-right .docstring > section > a.docs-sourcelink:not(:first-child) { + margin-left: 0.5rem; } + .tags.is-right .tag:not(:last-child), .tags.is-right .content kbd:not(:last-child), .content .tags.is-right kbd:not(:last-child), .tags.is-right .docstring > section > a.docs-sourcelink:not(:last-child) { + margin-right: 0; } + .tags.has-addons .tag, .tags.has-addons .content kbd, .content .tags.has-addons kbd, .tags.has-addons .docstring > section > a.docs-sourcelink { + margin-right: 0; } + .tags.has-addons .tag:not(:first-child), .tags.has-addons .content kbd:not(:first-child), .content .tags.has-addons kbd:not(:first-child), .tags.has-addons .docstring > section > a.docs-sourcelink:not(:first-child) { + margin-left: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .tags.has-addons .tag:not(:last-child), .tags.has-addons .content kbd:not(:last-child), .content .tags.has-addons kbd:not(:last-child), .tags.has-addons .docstring > section > a.docs-sourcelink:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + +.tag:not(body), .content kbd:not(body), .docstring > section > a.docs-sourcelink:not(body) { + align-items: center; + background-color: whitesmoke; + border-radius: 4px; + color: #222222; + display: inline-flex; + font-size: 0.75rem; + height: 2em; + justify-content: center; + line-height: 1.5; + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; } + .tag:not(body) .delete, .content kbd:not(body) .delete, .docstring > section > a.docs-sourcelink:not(body) .delete { + margin-left: 0.25rem; + margin-right: -0.375rem; } + .tag.is-white:not(body), .content kbd.is-white:not(body), .docstring > section > a.docs-sourcelink.is-white:not(body) { + background-color: white; + color: #0a0a0a; } + .tag.is-black:not(body), .content kbd.is-black:not(body), .docstring > section > a.docs-sourcelink.is-black:not(body) { + background-color: #0a0a0a; + color: white; } + .tag.is-light:not(body), .content kbd.is-light:not(body), .docstring > section > a.docs-sourcelink.is-light:not(body) { + background-color: whitesmoke; + color: #363636; } + .tag.is-dark:not(body), .content kbd:not(body), .docstring > section > a.docs-sourcelink.is-dark:not(body), .content .docstring > section > kbd:not(body) { + background-color: #363636; + color: whitesmoke; } + .tag.is-primary:not(body), .content kbd.is-primary:not(body), .docstring > section > a.docs-sourcelink:not(body) { + background-color: #4eb5de; + color: #fff; } + .tag.is-link:not(body), .content kbd.is-link:not(body), .docstring > section > a.docs-sourcelink.is-link:not(body) { + background-color: #2e63b8; + color: #fff; } + .tag.is-info:not(body), .content kbd.is-info:not(body), .docstring > section > a.docs-sourcelink.is-info:not(body) { + background-color: #209cee; + color: #fff; } + .tag.is-success:not(body), .content kbd.is-success:not(body), .docstring > section > a.docs-sourcelink.is-success:not(body) { + background-color: #22c35b; + color: #fff; } + .tag.is-warning:not(body), .content kbd.is-warning:not(body), .docstring > section > a.docs-sourcelink.is-warning:not(body) { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .tag.is-danger:not(body), .content kbd.is-danger:not(body), .docstring > section > a.docs-sourcelink.is-danger:not(body) { + background-color: #da0b00; + color: #fff; } + .tag.is-normal:not(body), .content kbd.is-normal:not(body), .docstring > section > a.docs-sourcelink.is-normal:not(body) { + font-size: 0.75rem; } + .tag.is-medium:not(body), .content kbd.is-medium:not(body), .docstring > section > a.docs-sourcelink.is-medium:not(body) { + font-size: 1rem; } + .tag.is-large:not(body), .content kbd.is-large:not(body), .docstring > section > a.docs-sourcelink.is-large:not(body) { + font-size: 1.25rem; } + .tag:not(body) .icon:first-child:not(:last-child), .content kbd:not(body) .icon:first-child:not(:last-child), .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:not(:last-child) { + margin-left: -0.375em; + margin-right: 0.1875em; } + .tag:not(body) .icon:last-child:not(:first-child), .content kbd:not(body) .icon:last-child:not(:first-child), .docstring > section > a.docs-sourcelink:not(body) .icon:last-child:not(:first-child) { + margin-left: 0.1875em; + margin-right: -0.375em; } + .tag:not(body) .icon:first-child:last-child, .content kbd:not(body) .icon:first-child:last-child, .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:last-child { + margin-left: -0.375em; + margin-right: -0.375em; } + .tag.is-delete:not(body), .content kbd.is-delete:not(body), .docstring > section > a.docs-sourcelink.is-delete:not(body) { + margin-left: 1px; + padding: 0; + position: relative; + width: 2em; } + .tag.is-delete:not(body)::before, .content kbd.is-delete:not(body)::before, .docstring > section > a.docs-sourcelink.is-delete:not(body)::before, .tag.is-delete:not(body)::after, .content kbd.is-delete:not(body)::after, .docstring > section > a.docs-sourcelink.is-delete:not(body)::after { + background-color: currentColor; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; } + .tag.is-delete:not(body)::before, .content kbd.is-delete:not(body)::before, .docstring > section > a.docs-sourcelink.is-delete:not(body)::before { + height: 1px; + width: 50%; } + .tag.is-delete:not(body)::after, .content kbd.is-delete:not(body)::after, .docstring > section > a.docs-sourcelink.is-delete:not(body)::after { + height: 50%; + width: 1px; } + .tag.is-delete:not(body):hover, .content kbd.is-delete:not(body):hover, .docstring > section > a.docs-sourcelink.is-delete:not(body):hover, .tag.is-delete:not(body):focus, .content kbd.is-delete:not(body):focus, .docstring > section > a.docs-sourcelink.is-delete:not(body):focus { + background-color: #e8e8e8; } + .tag.is-delete:not(body):active, .content kbd.is-delete:not(body):active, .docstring > section > a.docs-sourcelink.is-delete:not(body):active { + background-color: #dbdbdb; } + .tag.is-rounded:not(body), #documenter .docs-sidebar form.docs-search > input:not(body), .content kbd.is-rounded:not(body), #documenter .docs-sidebar .content form.docs-search > input:not(body), .docstring > section > a.docs-sourcelink.is-rounded:not(body) { + border-radius: 290486px; } + +a.tag:hover, .docstring > section > a.docs-sourcelink:hover { + text-decoration: underline; } + +.title, +.subtitle { + word-break: break-word; } + .title em, + .title span, + .subtitle em, + .subtitle span { + font-weight: inherit; } + .title sub, + .subtitle sub { + font-size: 0.75em; } + .title sup, + .subtitle sup { + font-size: 0.75em; } + .title .tag, .title .content kbd, .content .title kbd, .title .docstring > section > a.docs-sourcelink, + .subtitle .tag, + .subtitle .content kbd, + .content .subtitle kbd, + .subtitle .docstring > section > a.docs-sourcelink { + vertical-align: middle; } + +.title { + color: #363636; + font-size: 2rem; + font-weight: 600; + line-height: 1.125; } + .title strong { + color: inherit; + font-weight: inherit; } + .title + .highlight { + margin-top: -0.75rem; } + .title:not(.is-spaced) + .subtitle { + margin-top: -1.25rem; } + .title.is-1 { + font-size: 3rem; } + .title.is-2 { + font-size: 2.5rem; } + .title.is-3 { + font-size: 2rem; } + .title.is-4 { + font-size: 1.5rem; } + .title.is-5 { + font-size: 1.25rem; } + .title.is-6 { + font-size: 1rem; } + .title.is-7 { + font-size: 0.75rem; } + +.subtitle { + color: #4a4a4a; + font-size: 1.25rem; + font-weight: 400; + line-height: 1.25; } + .subtitle strong { + color: #363636; + font-weight: 600; } + .subtitle:not(.is-spaced) + .title { + margin-top: -1.25rem; } + .subtitle.is-1 { + font-size: 3rem; } + .subtitle.is-2 { + font-size: 2.5rem; } + .subtitle.is-3 { + font-size: 2rem; } + .subtitle.is-4 { + font-size: 1.5rem; } + .subtitle.is-5 { + font-size: 1.25rem; } + .subtitle.is-6 { + font-size: 1rem; } + .subtitle.is-7 { + font-size: 0.75rem; } + +.heading { + display: block; + font-size: 11px; + letter-spacing: 1px; + margin-bottom: 5px; + text-transform: uppercase; } + +.highlight { + font-weight: 400; + max-width: 100%; + overflow: hidden; + padding: 0; } + .highlight pre { + overflow: auto; + max-width: 100%; } + +.number { + align-items: center; + background-color: whitesmoke; + border-radius: 290486px; + display: inline-flex; + font-size: 1.25rem; + height: 2em; + justify-content: center; + margin-right: 1.5rem; + min-width: 2.5em; + padding: 0.25rem 0.5rem; + text-align: center; + vertical-align: top; } + +.select select, .textarea, .input, #documenter .docs-sidebar form.docs-search > input { + background-color: white; + border-color: #dbdbdb; + border-radius: 4px; + color: #363636; } + .select select::-moz-placeholder, .textarea::-moz-placeholder, .input::-moz-placeholder, #documenter .docs-sidebar form.docs-search > input::-moz-placeholder { + color: rgba(54, 54, 54, 0.3); } + .select select::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .input::-webkit-input-placeholder, #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder { + color: rgba(54, 54, 54, 0.3); } + .select select:-moz-placeholder, .textarea:-moz-placeholder, .input:-moz-placeholder, #documenter .docs-sidebar form.docs-search > input:-moz-placeholder { + color: rgba(54, 54, 54, 0.3); } + .select select:-ms-input-placeholder, .textarea:-ms-input-placeholder, .input:-ms-input-placeholder, #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder { + color: rgba(54, 54, 54, 0.3); } + .select select:hover, .textarea:hover, .input:hover, #documenter .docs-sidebar form.docs-search > input:hover, .select select.is-hovered, .is-hovered.textarea, .is-hovered.input, #documenter .docs-sidebar form.docs-search > input.is-hovered { + border-color: #b5b5b5; } + .select select:focus, .textarea:focus, .input:focus, #documenter .docs-sidebar form.docs-search > input:focus, .select select.is-focused, .is-focused.textarea, .is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .select select:active, .textarea:active, .input:active, #documenter .docs-sidebar form.docs-search > input:active, .select select.is-active, .is-active.textarea, .is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active { + border-color: #2e63b8; + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .select select[disabled], .textarea[disabled], .input[disabled], #documenter .docs-sidebar form.docs-search > input[disabled], fieldset[disabled] .select select, .select fieldset[disabled] select, fieldset[disabled] .textarea, fieldset[disabled] .input, fieldset[disabled] #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar fieldset[disabled] form.docs-search > input { + background-color: whitesmoke; + border-color: whitesmoke; + box-shadow: none; + color: #6b6b6b; } + .select select[disabled]::-moz-placeholder, .textarea[disabled]::-moz-placeholder, .input[disabled]::-moz-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]::-moz-placeholder, fieldset[disabled] .select select::-moz-placeholder, .select fieldset[disabled] select::-moz-placeholder, fieldset[disabled] .textarea::-moz-placeholder, fieldset[disabled] .input::-moz-placeholder, fieldset[disabled] #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, #documenter .docs-sidebar fieldset[disabled] form.docs-search > input::-moz-placeholder { + color: rgba(107, 107, 107, 0.3); } + .select select[disabled]::-webkit-input-placeholder, .textarea[disabled]::-webkit-input-placeholder, .input[disabled]::-webkit-input-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]::-webkit-input-placeholder, fieldset[disabled] .select select::-webkit-input-placeholder, .select fieldset[disabled] select::-webkit-input-placeholder, fieldset[disabled] .textarea::-webkit-input-placeholder, fieldset[disabled] .input::-webkit-input-placeholder, fieldset[disabled] #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, #documenter .docs-sidebar fieldset[disabled] form.docs-search > input::-webkit-input-placeholder { + color: rgba(107, 107, 107, 0.3); } + .select select[disabled]:-moz-placeholder, .textarea[disabled]:-moz-placeholder, .input[disabled]:-moz-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]:-moz-placeholder, fieldset[disabled] .select select:-moz-placeholder, .select fieldset[disabled] select:-moz-placeholder, fieldset[disabled] .textarea:-moz-placeholder, fieldset[disabled] .input:-moz-placeholder, fieldset[disabled] #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, #documenter .docs-sidebar fieldset[disabled] form.docs-search > input:-moz-placeholder { + color: rgba(107, 107, 107, 0.3); } + .select select[disabled]:-ms-input-placeholder, .textarea[disabled]:-ms-input-placeholder, .input[disabled]:-ms-input-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]:-ms-input-placeholder, fieldset[disabled] .select select:-ms-input-placeholder, .select fieldset[disabled] select:-ms-input-placeholder, fieldset[disabled] .textarea:-ms-input-placeholder, fieldset[disabled] .input:-ms-input-placeholder, fieldset[disabled] #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, #documenter .docs-sidebar fieldset[disabled] form.docs-search > input:-ms-input-placeholder { + color: rgba(107, 107, 107, 0.3); } + +.textarea, .input, #documenter .docs-sidebar form.docs-search > input { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + max-width: 100%; + width: 100%; } + .textarea[readonly], .input[readonly], #documenter .docs-sidebar form.docs-search > input[readonly] { + box-shadow: none; } + .is-white.textarea, .is-white.input, #documenter .docs-sidebar form.docs-search > input.is-white { + border-color: white; } + .is-white.textarea:focus, .is-white.input:focus, #documenter .docs-sidebar form.docs-search > input.is-white:focus, .is-white.is-focused.textarea, .is-white.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-white.textarea:active, .is-white.input:active, #documenter .docs-sidebar form.docs-search > input.is-white:active, .is-white.is-active.textarea, .is-white.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + .is-black.textarea, .is-black.input, #documenter .docs-sidebar form.docs-search > input.is-black { + border-color: #0a0a0a; } + .is-black.textarea:focus, .is-black.input:focus, #documenter .docs-sidebar form.docs-search > input.is-black:focus, .is-black.is-focused.textarea, .is-black.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-black.textarea:active, .is-black.input:active, #documenter .docs-sidebar form.docs-search > input.is-black:active, .is-black.is-active.textarea, .is-black.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + .is-light.textarea, .is-light.input, #documenter .docs-sidebar form.docs-search > input.is-light { + border-color: whitesmoke; } + .is-light.textarea:focus, .is-light.input:focus, #documenter .docs-sidebar form.docs-search > input.is-light:focus, .is-light.is-focused.textarea, .is-light.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-light.textarea:active, .is-light.input:active, #documenter .docs-sidebar form.docs-search > input.is-light:active, .is-light.is-active.textarea, .is-light.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } + .is-dark.textarea, .content kbd.textarea, .is-dark.input, #documenter .docs-sidebar form.docs-search > input.is-dark, .content kbd.input { + border-color: #363636; } + .is-dark.textarea:focus, .content kbd.textarea:focus, .is-dark.input:focus, #documenter .docs-sidebar form.docs-search > input.is-dark:focus, .content kbd.input:focus, .is-dark.is-focused.textarea, .content kbd.is-focused.textarea, .is-dark.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .content kbd.is-focused.input, #documenter .docs-sidebar .content form.docs-search > input.is-focused, .is-dark.textarea:active, .content kbd.textarea:active, .is-dark.input:active, #documenter .docs-sidebar form.docs-search > input.is-dark:active, .content kbd.input:active, .is-dark.is-active.textarea, .content kbd.is-active.textarea, .is-dark.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active, .content kbd.is-active.input, #documenter .docs-sidebar .content form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } + .is-primary.textarea, .docstring > section > a.textarea.docs-sourcelink, .is-primary.input, #documenter .docs-sidebar form.docs-search > input.is-primary, .docstring > section > a.input.docs-sourcelink { + border-color: #4eb5de; } + .is-primary.textarea:focus, .docstring > section > a.textarea.docs-sourcelink:focus, .is-primary.input:focus, #documenter .docs-sidebar form.docs-search > input.is-primary:focus, .docstring > section > a.input.docs-sourcelink:focus, .is-primary.is-focused.textarea, .docstring > section > a.is-focused.textarea.docs-sourcelink, .is-primary.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .docstring > section > a.is-focused.input.docs-sourcelink, .is-primary.textarea:active, .docstring > section > a.textarea.docs-sourcelink:active, .is-primary.input:active, #documenter .docs-sidebar form.docs-search > input.is-primary:active, .docstring > section > a.input.docs-sourcelink:active, .is-primary.is-active.textarea, .docstring > section > a.is-active.textarea.docs-sourcelink, .is-primary.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active, .docstring > section > a.is-active.input.docs-sourcelink { + box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } + .is-link.textarea, .is-link.input, #documenter .docs-sidebar form.docs-search > input.is-link { + border-color: #2e63b8; } + .is-link.textarea:focus, .is-link.input:focus, #documenter .docs-sidebar form.docs-search > input.is-link:focus, .is-link.is-focused.textarea, .is-link.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-link.textarea:active, .is-link.input:active, #documenter .docs-sidebar form.docs-search > input.is-link:active, .is-link.is-active.textarea, .is-link.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .is-info.textarea, .is-info.input, #documenter .docs-sidebar form.docs-search > input.is-info { + border-color: #209cee; } + .is-info.textarea:focus, .is-info.input:focus, #documenter .docs-sidebar form.docs-search > input.is-info:focus, .is-info.is-focused.textarea, .is-info.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-info.textarea:active, .is-info.input:active, #documenter .docs-sidebar form.docs-search > input.is-info:active, .is-info.is-active.textarea, .is-info.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } + .is-success.textarea, .is-success.input, #documenter .docs-sidebar form.docs-search > input.is-success { + border-color: #22c35b; } + .is-success.textarea:focus, .is-success.input:focus, #documenter .docs-sidebar form.docs-search > input.is-success:focus, .is-success.is-focused.textarea, .is-success.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-success.textarea:active, .is-success.input:active, #documenter .docs-sidebar form.docs-search > input.is-success:active, .is-success.is-active.textarea, .is-success.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } + .is-warning.textarea, .is-warning.input, #documenter .docs-sidebar form.docs-search > input.is-warning { + border-color: #ffdd57; } + .is-warning.textarea:focus, .is-warning.input:focus, #documenter .docs-sidebar form.docs-search > input.is-warning:focus, .is-warning.is-focused.textarea, .is-warning.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-warning.textarea:active, .is-warning.input:active, #documenter .docs-sidebar form.docs-search > input.is-warning:active, .is-warning.is-active.textarea, .is-warning.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } + .is-danger.textarea, .is-danger.input, #documenter .docs-sidebar form.docs-search > input.is-danger { + border-color: #da0b00; } + .is-danger.textarea:focus, .is-danger.input:focus, #documenter .docs-sidebar form.docs-search > input.is-danger:focus, .is-danger.is-focused.textarea, .is-danger.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-danger.textarea:active, .is-danger.input:active, #documenter .docs-sidebar form.docs-search > input.is-danger:active, .is-danger.is-active.textarea, .is-danger.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active { + box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } + .is-small.textarea, .is-small.input, #documenter .docs-sidebar form.docs-search > input { + border-radius: 2px; + font-size: 0.75rem; } + .is-medium.textarea, .is-medium.input, #documenter .docs-sidebar form.docs-search > input.is-medium { + font-size: 1.25rem; } + .is-large.textarea, .is-large.input, #documenter .docs-sidebar form.docs-search > input.is-large { + font-size: 1.5rem; } + .is-fullwidth.textarea, .is-fullwidth.input, #documenter .docs-sidebar form.docs-search > input.is-fullwidth { + display: block; + width: 100%; } + .is-inline.textarea, .is-inline.input, #documenter .docs-sidebar form.docs-search > input.is-inline { + display: inline; + width: auto; } + +.input.is-rounded, #documenter .docs-sidebar form.docs-search > input { + border-radius: 290486px; + padding-left: 1em; + padding-right: 1em; } + +.input.is-static, #documenter .docs-sidebar form.docs-search > input.is-static { + background-color: transparent; + border-color: transparent; + box-shadow: none; + padding-left: 0; + padding-right: 0; } + +.textarea { + display: block; + max-width: 100%; + min-width: 100%; + padding: 0.625em; + resize: vertical; } + .textarea:not([rows]) { + max-height: 600px; + min-height: 120px; } + .textarea[rows] { + height: initial; } + .textarea.has-fixed-size { + resize: none; } + +.radio, .checkbox { + cursor: pointer; + display: inline-block; + line-height: 1.25; + position: relative; } + .radio input, .checkbox input { + cursor: pointer; } + .radio:hover, .checkbox:hover { + color: #363636; } + .radio[disabled], .checkbox[disabled], fieldset[disabled] .radio, fieldset[disabled] .checkbox { + color: #6b6b6b; + cursor: not-allowed; } + +.radio + .radio { + margin-left: 0.5em; } + +.select { + display: inline-block; + max-width: 100%; + position: relative; + vertical-align: top; } + .select:not(.is-multiple) { + height: 2.25em; } + .select:not(.is-multiple):not(.is-loading)::after { + border-color: #2e63b8; + right: 1.125em; + z-index: 4; } + .select.is-rounded select, #documenter .docs-sidebar form.docs-search > input.select select { + border-radius: 290486px; + padding-left: 1em; } + .select select { + cursor: pointer; + display: block; + font-size: 1em; + max-width: 100%; + outline: none; } + .select select::-ms-expand { + display: none; } + .select select[disabled]:hover, fieldset[disabled] .select select:hover { + border-color: whitesmoke; } + .select select:not([multiple]) { + padding-right: 2.5em; } + .select select[multiple] { + height: auto; + padding: 0; } + .select select[multiple] option { + padding: 0.5em 1em; } + .select:not(.is-multiple):not(.is-loading):hover::after { + border-color: #363636; } + .select.is-white:not(:hover)::after { + border-color: white; } + .select.is-white select { + border-color: white; } + .select.is-white select:hover, .select.is-white select.is-hovered { + border-color: #f2f2f2; } + .select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + .select.is-black:not(:hover)::after { + border-color: #0a0a0a; } + .select.is-black select { + border-color: #0a0a0a; } + .select.is-black select:hover, .select.is-black select.is-hovered { + border-color: black; } + .select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + .select.is-light:not(:hover)::after { + border-color: whitesmoke; } + .select.is-light select { + border-color: whitesmoke; } + .select.is-light select:hover, .select.is-light select.is-hovered { + border-color: #e8e8e8; } + .select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } + .select.is-dark:not(:hover)::after, .content kbd.select:not(:hover)::after { + border-color: #363636; } + .select.is-dark select, .content kbd.select select { + border-color: #363636; } + .select.is-dark select:hover, .content kbd.select select:hover, .select.is-dark select.is-hovered, .content kbd.select select.is-hovered { + border-color: #292929; } + .select.is-dark select:focus, .content kbd.select select:focus, .select.is-dark select.is-focused, .content kbd.select select.is-focused, .select.is-dark select:active, .content kbd.select select:active, .select.is-dark select.is-active, .content kbd.select select.is-active { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } + .select.is-primary:not(:hover)::after, .docstring > section > a.select.docs-sourcelink:not(:hover)::after { + border-color: #4eb5de; } + .select.is-primary select, .docstring > section > a.select.docs-sourcelink select { + border-color: #4eb5de; } + .select.is-primary select:hover, .docstring > section > a.select.docs-sourcelink select:hover, .select.is-primary select.is-hovered, .docstring > section > a.select.docs-sourcelink select.is-hovered { + border-color: #39acda; } + .select.is-primary select:focus, .docstring > section > a.select.docs-sourcelink select:focus, .select.is-primary select.is-focused, .docstring > section > a.select.docs-sourcelink select.is-focused, .select.is-primary select:active, .docstring > section > a.select.docs-sourcelink select:active, .select.is-primary select.is-active, .docstring > section > a.select.docs-sourcelink select.is-active { + box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } + .select.is-link:not(:hover)::after { + border-color: #2e63b8; } + .select.is-link select { + border-color: #2e63b8; } + .select.is-link select:hover, .select.is-link select.is-hovered { + border-color: #2958a4; } + .select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active { + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .select.is-info:not(:hover)::after { + border-color: #209cee; } + .select.is-info select { + border-color: #209cee; } + .select.is-info select:hover, .select.is-info select.is-hovered { + border-color: #1190e3; } + .select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active { + box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } + .select.is-success:not(:hover)::after { + border-color: #22c35b; } + .select.is-success select { + border-color: #22c35b; } + .select.is-success select:hover, .select.is-success select.is-hovered { + border-color: #1ead51; } + .select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active { + box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } + .select.is-warning:not(:hover)::after { + border-color: #ffdd57; } + .select.is-warning select { + border-color: #ffdd57; } + .select.is-warning select:hover, .select.is-warning select.is-hovered { + border-color: #ffd83e; } + .select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } + .select.is-danger:not(:hover)::after { + border-color: #da0b00; } + .select.is-danger select { + border-color: #da0b00; } + .select.is-danger select:hover, .select.is-danger select.is-hovered { + border-color: #c10a00; } + .select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active { + box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } + .select.is-small, #documenter .docs-sidebar form.docs-search > input.select { + border-radius: 2px; + font-size: 0.75rem; } + .select.is-medium { + font-size: 1.25rem; } + .select.is-large { + font-size: 1.5rem; } + .select.is-disabled::after { + border-color: #6b6b6b; } + .select.is-fullwidth { + width: 100%; } + .select.is-fullwidth select { + width: 100%; } + .select.is-loading::after { + margin-top: 0; + position: absolute; + right: 0.625em; + top: 0.625em; + transform: none; } + .select.is-loading.is-small:after, #documenter .docs-sidebar form.docs-search > input.is-loading:after { + font-size: 0.75rem; } + .select.is-loading.is-medium:after { + font-size: 1.25rem; } + .select.is-loading.is-large:after { + font-size: 1.5rem; } + +.file { + align-items: stretch; + display: flex; + justify-content: flex-start; + position: relative; } + .file.is-white .file-cta { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + .file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + .file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); + color: #0a0a0a; } + .file.is-white:active .file-cta, .file.is-white.is-active .file-cta { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + .file.is-black .file-cta { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + .file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta { + background-color: #040404; + border-color: transparent; + color: white; } + .file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); + color: white; } + .file.is-black:active .file-cta, .file.is-black.is-active .file-cta { + background-color: black; + border-color: transparent; + color: white; } + .file.is-light .file-cta { + background-color: whitesmoke; + border-color: transparent; + color: #363636; } + .file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta { + background-color: #eeeeee; + border-color: transparent; + color: #363636; } + .file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25); + color: #363636; } + .file.is-light:active .file-cta, .file.is-light.is-active .file-cta { + background-color: #e8e8e8; + border-color: transparent; + color: #363636; } + .file.is-dark .file-cta, .content kbd.file .file-cta { + background-color: #363636; + border-color: transparent; + color: whitesmoke; } + .file.is-dark:hover .file-cta, .content kbd.file:hover .file-cta, .file.is-dark.is-hovered .file-cta, .content kbd.file.is-hovered .file-cta { + background-color: #2f2f2f; + border-color: transparent; + color: whitesmoke; } + .file.is-dark:focus .file-cta, .content kbd.file:focus .file-cta, .file.is-dark.is-focused .file-cta, .content kbd.file.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25); + color: whitesmoke; } + .file.is-dark:active .file-cta, .content kbd.file:active .file-cta, .file.is-dark.is-active .file-cta, .content kbd.file.is-active .file-cta { + background-color: #292929; + border-color: transparent; + color: whitesmoke; } + .file.is-primary .file-cta, .docstring > section > a.file.docs-sourcelink .file-cta { + background-color: #4eb5de; + border-color: transparent; + color: #fff; } + .file.is-primary:hover .file-cta, .docstring > section > a.file.docs-sourcelink:hover .file-cta, .file.is-primary.is-hovered .file-cta, .docstring > section > a.file.is-hovered.docs-sourcelink .file-cta { + background-color: #43b1dc; + border-color: transparent; + color: #fff; } + .file.is-primary:focus .file-cta, .docstring > section > a.file.docs-sourcelink:focus .file-cta, .file.is-primary.is-focused .file-cta, .docstring > section > a.file.is-focused.docs-sourcelink .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(78, 181, 222, 0.25); + color: #fff; } + .file.is-primary:active .file-cta, .docstring > section > a.file.docs-sourcelink:active .file-cta, .file.is-primary.is-active .file-cta, .docstring > section > a.file.is-active.docs-sourcelink .file-cta { + background-color: #39acda; + border-color: transparent; + color: #fff; } + .file.is-link .file-cta { + background-color: #2e63b8; + border-color: transparent; + color: #fff; } + .file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta { + background-color: #2b5eae; + border-color: transparent; + color: #fff; } + .file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(46, 99, 184, 0.25); + color: #fff; } + .file.is-link:active .file-cta, .file.is-link.is-active .file-cta { + background-color: #2958a4; + border-color: transparent; + color: #fff; } + .file.is-info .file-cta { + background-color: #209cee; + border-color: transparent; + color: #fff; } + .file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta { + background-color: #1497ed; + border-color: transparent; + color: #fff; } + .file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(32, 156, 238, 0.25); + color: #fff; } + .file.is-info:active .file-cta, .file.is-info.is-active .file-cta { + background-color: #1190e3; + border-color: transparent; + color: #fff; } + .file.is-success .file-cta { + background-color: #22c35b; + border-color: transparent; + color: #fff; } + .file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta { + background-color: #20b856; + border-color: transparent; + color: #fff; } + .file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(34, 195, 91, 0.25); + color: #fff; } + .file.is-success:active .file-cta, .file.is-success.is-active .file-cta { + background-color: #1ead51; + border-color: transparent; + color: #fff; } + .file.is-warning .file-cta { + background-color: #ffdd57; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta { + background-color: #ffda4a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 221, 87, 0.25); + color: rgba(0, 0, 0, 0.7); } + .file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta { + background-color: #ffd83e; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-danger .file-cta { + background-color: #da0b00; + border-color: transparent; + color: #fff; } + .file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta { + background-color: #cd0a00; + border-color: transparent; + color: #fff; } + .file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(218, 11, 0, 0.25); + color: #fff; } + .file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta { + background-color: #c10a00; + border-color: transparent; + color: #fff; } + .file.is-small, #documenter .docs-sidebar form.docs-search > input.file { + font-size: 0.75rem; } + .file.is-medium { + font-size: 1.25rem; } + .file.is-medium .file-icon .fa { + font-size: 21px; } + .file.is-large { + font-size: 1.5rem; } + .file.is-large .file-icon .fa { + font-size: 28px; } + .file.has-name .file-cta { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + .file.has-name .file-name { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .file.has-name.is-empty .file-cta { + border-radius: 4px; } + .file.has-name.is-empty .file-name { + display: none; } + .file.is-boxed .file-label { + flex-direction: column; } + .file.is-boxed .file-cta { + flex-direction: column; + height: auto; + padding: 1em 3em; } + .file.is-boxed .file-name { + border-width: 0 1px 1px; } + .file.is-boxed .file-icon { + height: 1.5em; + width: 1.5em; } + .file.is-boxed .file-icon .fa { + font-size: 21px; } + .file.is-boxed.is-small .file-icon .fa, #documenter .docs-sidebar form.docs-search > input.is-boxed .file-icon .fa { + font-size: 14px; } + .file.is-boxed.is-medium .file-icon .fa { + font-size: 28px; } + .file.is-boxed.is-large .file-icon .fa { + font-size: 35px; } + .file.is-boxed.has-name .file-cta { + border-radius: 4px 4px 0 0; } + .file.is-boxed.has-name .file-name { + border-radius: 0 0 4px 4px; + border-width: 0 1px 1px; } + .file.is-centered { + justify-content: center; } + .file.is-fullwidth .file-label { + width: 100%; } + .file.is-fullwidth .file-name { + flex-grow: 1; + max-width: none; } + .file.is-right { + justify-content: flex-end; } + .file.is-right .file-cta { + border-radius: 0 4px 4px 0; } + .file.is-right .file-name { + border-radius: 4px 0 0 4px; + border-width: 1px 0 1px 1px; + order: -1; } + +.file-label { + align-items: stretch; + display: flex; + cursor: pointer; + justify-content: flex-start; + overflow: hidden; + position: relative; } + .file-label:hover .file-cta { + background-color: #eeeeee; + color: #363636; } + .file-label:hover .file-name { + border-color: #d5d5d5; } + .file-label:active .file-cta { + background-color: #e8e8e8; + color: #363636; } + .file-label:active .file-name { + border-color: #cfcfcf; } + +.file-input { + height: 100%; + left: 0; + opacity: 0; + outline: none; + position: absolute; + top: 0; + width: 100%; } + +.file-cta, +.file-name { + border-color: #dbdbdb; + border-radius: 4px; + font-size: 1em; + padding-left: 1em; + padding-right: 1em; + white-space: nowrap; } + +.file-cta { + background-color: whitesmoke; + color: #4a4a4a; } + +.file-name { + border-color: #dbdbdb; + border-style: solid; + border-width: 1px 1px 1px 0; + display: block; + max-width: 16em; + overflow: hidden; + text-align: left; + text-overflow: ellipsis; } + +.file-icon { + align-items: center; + display: flex; + height: 1em; + justify-content: center; + margin-right: 0.5em; + width: 1em; } + .file-icon .fa { + font-size: 14px; } + +.label { + color: #363636; + display: block; + font-size: 1rem; + font-weight: 700; } + .label:not(:last-child) { + margin-bottom: 0.5em; } + .label.is-small, #documenter .docs-sidebar form.docs-search > input.label { + font-size: 0.75rem; } + .label.is-medium { + font-size: 1.25rem; } + .label.is-large { + font-size: 1.5rem; } + +.help { + display: block; + font-size: 0.75rem; + margin-top: 0.25rem; } + .help.is-white { + color: white; } + .help.is-black { + color: #0a0a0a; } + .help.is-light { + color: whitesmoke; } + .help.is-dark, .content kbd.help { + color: #363636; } + .help.is-primary, .docstring > section > a.help.docs-sourcelink { + color: #4eb5de; } + .help.is-link { + color: #2e63b8; } + .help.is-info { + color: #209cee; } + .help.is-success { + color: #22c35b; } + .help.is-warning { + color: #ffdd57; } + .help.is-danger { + color: #da0b00; } + +.field:not(:last-child) { + margin-bottom: 0.75rem; } + +.field.has-addons { + display: flex; + justify-content: flex-start; } + .field.has-addons .control:not(:last-child) { + margin-right: -1px; } + .field.has-addons .control:not(:first-child):not(:last-child) .button, + .field.has-addons .control:not(:first-child):not(:last-child) .input, + .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search > input, + #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search > input, + .field.has-addons .control:not(:first-child):not(:last-child) .select select { + border-radius: 0; } + .field.has-addons .control:first-child:not(:only-child) .button, + .field.has-addons .control:first-child:not(:only-child) .input, + .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, + #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search > input, + .field.has-addons .control:first-child:not(:only-child) .select select { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + .field.has-addons .control:last-child:not(:only-child) .button, + .field.has-addons .control:last-child:not(:only-child) .input, + .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, + #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search > input, + .field.has-addons .control:last-child:not(:only-child) .select select { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button.is-hovered:not([disabled]), + .field.has-addons .control .input:not([disabled]):hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):hover, + .field.has-addons .control .input.is-hovered:not([disabled]), + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-hovered:not([disabled]), + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-hovered:not([disabled]), + .field.has-addons .control .select select:not([disabled]):hover, + .field.has-addons .control .select select.is-hovered:not([disabled]) { + z-index: 2; } + .field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button.is-focused:not([disabled]), .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button.is-active:not([disabled]), + .field.has-addons .control .input:not([disabled]):focus, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus, + .field.has-addons .control .input.is-focused:not([disabled]), + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-focused:not([disabled]), + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-focused:not([disabled]), + .field.has-addons .control .input:not([disabled]):active, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active, + .field.has-addons .control .input.is-active:not([disabled]), + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-active:not([disabled]), + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-active:not([disabled]), + .field.has-addons .control .select select:not([disabled]):focus, + .field.has-addons .control .select select.is-focused:not([disabled]), + .field.has-addons .control .select select:not([disabled]):active, + .field.has-addons .control .select select.is-active:not([disabled]) { + z-index: 3; } + .field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button.is-focused:not([disabled]):hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button.is-active:not([disabled]):hover, + .field.has-addons .control .input:not([disabled]):focus:hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus:hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus:hover, + .field.has-addons .control .input.is-focused:not([disabled]):hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-focused:not([disabled]):hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-focused:not([disabled]):hover, + .field.has-addons .control .input:not([disabled]):active:hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active:hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active:hover, + .field.has-addons .control .input.is-active:not([disabled]):hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input.is-active:not([disabled]):hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input.is-active:not([disabled]):hover, + .field.has-addons .control .select select:not([disabled]):focus:hover, + .field.has-addons .control .select select.is-focused:not([disabled]):hover, + .field.has-addons .control .select select:not([disabled]):active:hover, + .field.has-addons .control .select select.is-active:not([disabled]):hover { + z-index: 4; } + .field.has-addons .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .field.has-addons.has-addons-centered { + justify-content: center; } + .field.has-addons.has-addons-right { + justify-content: flex-end; } + .field.has-addons.has-addons-fullwidth .control { + flex-grow: 1; + flex-shrink: 0; } + +.field.is-grouped { + display: flex; + justify-content: flex-start; } + .field.is-grouped > .control { + flex-shrink: 0; } + .field.is-grouped > .control:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; } + .field.is-grouped > .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .field.is-grouped.is-grouped-centered { + justify-content: center; } + .field.is-grouped.is-grouped-right { + justify-content: flex-end; } + .field.is-grouped.is-grouped-multiline { + flex-wrap: wrap; } + .field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { + margin-bottom: 0.75rem; } + .field.is-grouped.is-grouped-multiline:last-child { + margin-bottom: -0.75rem; } + .field.is-grouped.is-grouped-multiline:not(:last-child) { + margin-bottom: 0; } + +@media screen and (min-width: 769px), print { + .field.is-horizontal { + display: flex; } } + +.field-label .label { + font-size: inherit; } + +@media screen and (max-width: 768px) { + .field-label { + margin-bottom: 0.5rem; } } + +@media screen and (min-width: 769px), print { + .field-label { + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + margin-right: 1.5rem; + text-align: right; } + .field-label.is-small, #documenter .docs-sidebar form.docs-search > input.field-label { + font-size: 0.75rem; + padding-top: 0.375em; } + .field-label.is-normal { + padding-top: 0.375em; } + .field-label.is-medium { + font-size: 1.25rem; + padding-top: 0.375em; } + .field-label.is-large { + font-size: 1.5rem; + padding-top: 0.375em; } } + +.field-body .field .field { + margin-bottom: 0; } + +@media screen and (min-width: 769px), print { + .field-body { + display: flex; + flex-basis: 0; + flex-grow: 5; + flex-shrink: 1; } + .field-body .field { + margin-bottom: 0; } + .field-body > .field { + flex-shrink: 1; } + .field-body > .field:not(.is-narrow) { + flex-grow: 1; } + .field-body > .field:not(:last-child) { + margin-right: 0.75rem; } } + +.control { + box-sizing: border-box; + clear: both; + font-size: 1rem; + position: relative; + text-align: left; } + .control.has-icons-left .input:focus ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input:focus ~ .icon, + .control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input:focus ~ .icon, + .control.has-icons-right .select:focus ~ .icon { + color: #6b6b6b; } + .control.has-icons-left .input.is-small ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input ~ .icon, + .control.has-icons-left .select.is-small ~ .icon, .control.has-icons-right .input.is-small ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input ~ .icon, + .control.has-icons-right .select.is-small ~ .icon { + font-size: 0.75rem; } + .control.has-icons-left .input.is-medium ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-medium ~ .icon, + .control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-medium ~ .icon, + .control.has-icons-right .select.is-medium ~ .icon { + font-size: 1.25rem; } + .control.has-icons-left .input.is-large ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-large ~ .icon, + .control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-large ~ .icon, + .control.has-icons-right .select.is-large ~ .icon { + font-size: 1.5rem; } + .control.has-icons-left .icon, .control.has-icons-right .icon { + color: #dbdbdb; + height: 2.25em; + pointer-events: none; + position: absolute; + top: 0; + width: 2.25em; + z-index: 4; } + .control.has-icons-left .input, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input, + .control.has-icons-left .select select { + padding-left: 2.25em; } + .control.has-icons-left .icon.is-left { + left: 0; } + .control.has-icons-right .input, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input, + .control.has-icons-right .select select { + padding-right: 2.25em; } + .control.has-icons-right .icon.is-right { + right: 0; } + .control.is-loading::after { + position: absolute !important; + right: 0.625em; + top: 0.625em; + z-index: 4; } + .control.is-loading.is-small:after, #documenter .docs-sidebar form.docs-search > input.is-loading:after { + font-size: 0.75rem; } + .control.is-loading.is-medium:after { + font-size: 1.25rem; } + .control.is-loading.is-large:after { + font-size: 1.5rem; } + +.breadcrumb { + font-size: 1rem; + white-space: nowrap; } + .breadcrumb a { + align-items: center; + color: #2e63b8; + display: flex; + justify-content: center; + padding: 0 0.75em; } + .breadcrumb a:hover { + color: #363636; } + .breadcrumb li { + align-items: center; + display: flex; } + .breadcrumb li:first-child a { + padding-left: 0; } + .breadcrumb li.is-active a { + color: #222222; + cursor: default; + pointer-events: none; } + .breadcrumb li + li::before { + color: #b5b5b5; + content: "\0002f"; } + .breadcrumb ul, + .breadcrumb ol { + align-items: flex-start; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .breadcrumb .icon:first-child { + margin-right: 0.5em; } + .breadcrumb .icon:last-child { + margin-left: 0.5em; } + .breadcrumb.is-centered ol, + .breadcrumb.is-centered ul { + justify-content: center; } + .breadcrumb.is-right ol, + .breadcrumb.is-right ul { + justify-content: flex-end; } + .breadcrumb.is-small, #documenter .docs-sidebar form.docs-search > input.breadcrumb { + font-size: 0.75rem; } + .breadcrumb.is-medium { + font-size: 1.25rem; } + .breadcrumb.is-large { + font-size: 1.5rem; } + .breadcrumb.has-arrow-separator li + li::before { + content: "\02192"; } + .breadcrumb.has-bullet-separator li + li::before { + content: "\02022"; } + .breadcrumb.has-dot-separator li + li::before { + content: "\000b7"; } + .breadcrumb.has-succeeds-separator li + li::before { + content: "\0227B"; } + +.card { + background-color: white; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + color: #222222; + max-width: 100%; + position: relative; } + +.card-header { + background-color: transparent; + align-items: stretch; + box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); + display: flex; } + +.card-header-title { + align-items: center; + color: #222222; + display: flex; + flex-grow: 1; + font-weight: 700; + padding: 0.75rem; } + .card-header-title.is-centered { + justify-content: center; } + +.card-header-icon { + align-items: center; + cursor: pointer; + display: flex; + justify-content: center; + padding: 0.75rem; } + +.card-image { + display: block; + position: relative; } + +.card-content { + background-color: transparent; + padding: 1.5rem; } + +.card-footer { + background-color: transparent; + border-top: 1px solid #dbdbdb; + align-items: stretch; + display: flex; } + +.card-footer-item { + align-items: center; + display: flex; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + justify-content: center; + padding: 0.75rem; } + .card-footer-item:not(:last-child) { + border-right: 1px solid #dbdbdb; } + +.card .media:not(:last-child) { + margin-bottom: 1.5rem; } + +.dropdown { + display: inline-flex; + position: relative; + vertical-align: top; } + .dropdown.is-active .dropdown-menu, .dropdown.is-hoverable:hover .dropdown-menu { + display: block; } + .dropdown.is-right .dropdown-menu { + left: auto; + right: 0; } + .dropdown.is-up .dropdown-menu { + bottom: 100%; + padding-bottom: 4px; + padding-top: initial; + top: auto; } + +.dropdown-menu { + display: none; + left: 0; + min-width: 12rem; + padding-top: 4px; + position: absolute; + top: 100%; + z-index: 20; } + +.dropdown-content { + background-color: white; + border-radius: 4px; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + padding-bottom: 0.5rem; + padding-top: 0.5rem; } + +.dropdown-item { + color: #4a4a4a; + display: block; + font-size: 0.875rem; + line-height: 1.5; + padding: 0.375rem 1rem; + position: relative; } + +a.dropdown-item, +button.dropdown-item { + padding-right: 3rem; + text-align: left; + white-space: nowrap; + width: 100%; } + a.dropdown-item:hover, + button.dropdown-item:hover { + background-color: whitesmoke; + color: #0a0a0a; } + a.dropdown-item.is-active, + button.dropdown-item.is-active { + background-color: #2e63b8; + color: #fff; } + +.dropdown-divider { + background-color: #dbdbdb; + border: none; + display: block; + height: 1px; + margin: 0.5rem 0; } + +.level { + align-items: center; + justify-content: space-between; } + .level code { + border-radius: 4px; } + .level img { + display: inline-block; + vertical-align: top; } + .level.is-mobile { + display: flex; } + .level.is-mobile .level-left, + .level.is-mobile .level-right { + display: flex; } + .level.is-mobile .level-left + .level-right { + margin-top: 0; } + .level.is-mobile .level-item:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; } + .level.is-mobile .level-item:not(.is-narrow) { + flex-grow: 1; } + @media screen and (min-width: 769px), print { + .level { + display: flex; } + .level > .level-item:not(.is-narrow) { + flex-grow: 1; } } +.level-item { + align-items: center; + display: flex; + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; } + .level-item .title, + .level-item .subtitle { + margin-bottom: 0; } + @media screen and (max-width: 768px) { + .level-item:not(:last-child) { + margin-bottom: 0.75rem; } } +.level-left, +.level-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; } + .level-left .level-item.is-flexible, + .level-right .level-item.is-flexible { + flex-grow: 1; } + @media screen and (min-width: 769px), print { + .level-left .level-item:not(:last-child), + .level-right .level-item:not(:last-child) { + margin-right: 0.75rem; } } +.level-left { + align-items: center; + justify-content: flex-start; } + @media screen and (max-width: 768px) { + .level-left + .level-right { + margin-top: 1.5rem; } } + @media screen and (min-width: 769px), print { + .level-left { + display: flex; } } +.level-right { + align-items: center; + justify-content: flex-end; } + @media screen and (min-width: 769px), print { + .level-right { + display: flex; } } +.list { + background-color: white; + border-radius: 4px; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); } + +.list-item { + display: block; + padding: 0.5em 1em; } + .list-item:not(a) { + color: #222222; } + .list-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; } + .list-item:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; } + .list-item:not(:last-child) { + border-bottom: 1px solid #dbdbdb; } + .list-item.is-active { + background-color: #2e63b8; + color: #fff; } + +a.list-item { + background-color: whitesmoke; + cursor: pointer; } + +.media { + align-items: flex-start; + display: flex; + text-align: left; } + .media .content:not(:last-child) { + margin-bottom: 0.75rem; } + .media .media { + border-top: 1px solid rgba(219, 219, 219, 0.5); + display: flex; + padding-top: 0.75rem; } + .media .media .content:not(:last-child), + .media .media .control:not(:last-child) { + margin-bottom: 0.5rem; } + .media .media .media { + padding-top: 0.5rem; } + .media .media .media + .media { + margin-top: 0.5rem; } + .media + .media { + border-top: 1px solid rgba(219, 219, 219, 0.5); + margin-top: 1rem; + padding-top: 1rem; } + .media.is-large + .media { + margin-top: 1.5rem; + padding-top: 1.5rem; } + +.media-left, +.media-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; } + +.media-left { + margin-right: 1rem; } + +.media-right { + margin-left: 1rem; } + +.media-content { + flex-basis: auto; + flex-grow: 1; + flex-shrink: 1; + text-align: left; } + +@media screen and (max-width: 768px) { + .media-content { + overflow-x: auto; } } + +.menu { + font-size: 1rem; } + .menu.is-small, #documenter .docs-sidebar form.docs-search > input.menu { + font-size: 0.75rem; } + .menu.is-medium { + font-size: 1.25rem; } + .menu.is-large { + font-size: 1.5rem; } + +.menu-list { + line-height: 1.25; } + .menu-list a { + border-radius: 2px; + color: #222222; + display: block; + padding: 0.5em 0.75em; } + .menu-list a:hover { + background-color: whitesmoke; + color: #222222; } + .menu-list a.is-active { + background-color: #2e63b8; + color: #fff; } + .menu-list li ul { + border-left: 1px solid #dbdbdb; + margin: 0.75em; + padding-left: 0.75em; } + +.menu-label { + color: #6b6b6b; + font-size: 0.75em; + letter-spacing: 0.1em; + text-transform: uppercase; } + .menu-label:not(:first-child) { + margin-top: 1em; } + .menu-label:not(:last-child) { + margin-bottom: 1em; } + +.message { + background-color: whitesmoke; + border-radius: 4px; + font-size: 1rem; } + .message strong { + color: currentColor; } + .message a:not(.button):not(.tag):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; } + .message.is-small, #documenter .docs-sidebar form.docs-search > input.message { + font-size: 0.75rem; } + .message.is-medium { + font-size: 1.25rem; } + .message.is-large { + font-size: 1.5rem; } + .message.is-white { + background-color: white; } + .message.is-white .message-header { + background-color: white; + color: #0a0a0a; } + .message.is-white .message-body { + border-color: white; + color: #4d4d4d; } + .message.is-black { + background-color: #fafafa; } + .message.is-black .message-header { + background-color: #0a0a0a; + color: white; } + .message.is-black .message-body { + border-color: #0a0a0a; + color: #090909; } + .message.is-light { + background-color: #fafafa; } + .message.is-light .message-header { + background-color: whitesmoke; + color: #363636; } + .message.is-light .message-body { + border-color: whitesmoke; + color: #505050; } + .message.is-dark, .content kbd.message { + background-color: #fafafa; } + .message.is-dark .message-header, .content kbd.message .message-header { + background-color: #363636; + color: whitesmoke; } + .message.is-dark .message-body, .content kbd.message .message-body { + border-color: #363636; + color: #2a2a2a; } + .message.is-primary, .docstring > section > a.message.docs-sourcelink { + background-color: #f6fbfd; } + .message.is-primary .message-header, .docstring > section > a.message.docs-sourcelink .message-header { + background-color: #4eb5de; + color: #fff; } + .message.is-primary .message-body, .docstring > section > a.message.docs-sourcelink .message-body { + border-color: #4eb5de; + color: #1f556a; } + .message.is-link { + background-color: #f7f9fd; } + .message.is-link .message-header { + background-color: #2e63b8; + color: #fff; } + .message.is-link .message-body { + border-color: #2e63b8; + color: #264981; } + .message.is-info { + background-color: #f6fbfe; } + .message.is-info .message-header { + background-color: #209cee; + color: #fff; } + .message.is-info .message-body { + border-color: #209cee; + color: #12537d; } + .message.is-success { + background-color: #f6fdf9; } + .message.is-success .message-header { + background-color: #22c35b; + color: #fff; } + .message.is-success .message-body { + border-color: #22c35b; + color: #0f361d; } + .message.is-warning { + background-color: #fffdf5; } + .message.is-warning .message-header { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .message.is-warning .message-body { + border-color: #ffdd57; + color: #3c3108; } + .message.is-danger { + background-color: #fff5f5; } + .message.is-danger .message-header { + background-color: #da0b00; + color: #fff; } + .message.is-danger .message-body { + border-color: #da0b00; + color: #9b0c04; } + +.message-header { + align-items: center; + background-color: #222222; + border-radius: 4px 4px 0 0; + color: #fff; + display: flex; + font-weight: 700; + justify-content: space-between; + line-height: 1.25; + padding: 0.75em 1em; + position: relative; } + .message-header .delete { + flex-grow: 0; + flex-shrink: 0; + margin-left: 0.75em; } + .message-header + .message-body { + border-width: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.message-body { + border-color: #dbdbdb; + border-radius: 4px; + border-style: solid; + border-width: 0 0 0 4px; + color: #222222; + padding: 1.25em 1.5em; } + .message-body code, + .message-body pre { + background-color: white; } + .message-body pre code { + background-color: transparent; } + +.modal { + align-items: center; + display: none; + flex-direction: column; + justify-content: center; + overflow: hidden; + position: fixed; + z-index: 40; } + .modal.is-active { + display: flex; } + +.modal-background { + background-color: rgba(10, 10, 10, 0.86); } + +.modal-content, +.modal-card { + margin: 0 20px; + max-height: calc(100vh - 160px); + overflow: auto; + position: relative; + width: 100%; } + @media screen and (min-width: 769px), print { + .modal-content, + .modal-card { + margin: 0 auto; + max-height: calc(100vh - 40px); + width: 640px; } } +.modal-close { + background: none; + height: 40px; + position: fixed; + right: 20px; + top: 20px; + width: 40px; } + +.modal-card { + display: flex; + flex-direction: column; + max-height: calc(100vh - 40px); + overflow: hidden; + -ms-overflow-y: visible; } + +.modal-card-head, +.modal-card-foot { + align-items: center; + background-color: whitesmoke; + display: flex; + flex-shrink: 0; + justify-content: flex-start; + padding: 20px; + position: relative; } + +.modal-card-head { + border-bottom: 1px solid #dbdbdb; + border-top-left-radius: 6px; + border-top-right-radius: 6px; } + +.modal-card-title { + color: #222222; + flex-grow: 1; + flex-shrink: 0; + font-size: 1.5rem; + line-height: 1; } + +.modal-card-foot { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-top: 1px solid #dbdbdb; } + .modal-card-foot .button:not(:last-child) { + margin-right: 0.5em; } + +.modal-card-body { + -webkit-overflow-scrolling: touch; + background-color: white; + flex-grow: 1; + flex-shrink: 1; + overflow: auto; + padding: 20px; } + +.navbar { + background-color: white; + min-height: 3.25rem; + position: relative; + z-index: 30; } + .navbar.is-white { + background-color: white; + color: #0a0a0a; } + .navbar.is-white .navbar-brand > .navbar-item, + .navbar.is-white .navbar-brand .navbar-link { + color: #0a0a0a; } + .navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active, + .navbar.is-white .navbar-brand .navbar-link:focus, + .navbar.is-white .navbar-brand .navbar-link:hover, + .navbar.is-white .navbar-brand .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + .navbar.is-white .navbar-brand .navbar-link::after { + border-color: #0a0a0a; } + .navbar.is-white .navbar-burger { + color: #0a0a0a; } + @media screen and (min-width: 1056px) { + .navbar.is-white .navbar-start > .navbar-item, + .navbar.is-white .navbar-start .navbar-link, + .navbar.is-white .navbar-end > .navbar-item, + .navbar.is-white .navbar-end .navbar-link { + color: #0a0a0a; } + .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active, + .navbar.is-white .navbar-start .navbar-link:focus, + .navbar.is-white .navbar-start .navbar-link:hover, + .navbar.is-white .navbar-start .navbar-link.is-active, + .navbar.is-white .navbar-end > a.navbar-item:focus, + .navbar.is-white .navbar-end > a.navbar-item:hover, + .navbar.is-white .navbar-end > a.navbar-item.is-active, + .navbar.is-white .navbar-end .navbar-link:focus, + .navbar.is-white .navbar-end .navbar-link:hover, + .navbar.is-white .navbar-end .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + .navbar.is-white .navbar-start .navbar-link::after, + .navbar.is-white .navbar-end .navbar-link::after { + border-color: #0a0a0a; } + .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #f2f2f2; + color: #0a0a0a; } + .navbar.is-white .navbar-dropdown a.navbar-item.is-active { + background-color: white; + color: #0a0a0a; } } + .navbar.is-black { + background-color: #0a0a0a; + color: white; } + .navbar.is-black .navbar-brand > .navbar-item, + .navbar.is-black .navbar-brand .navbar-link { + color: white; } + .navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active, + .navbar.is-black .navbar-brand .navbar-link:focus, + .navbar.is-black .navbar-brand .navbar-link:hover, + .navbar.is-black .navbar-brand .navbar-link.is-active { + background-color: black; + color: white; } + .navbar.is-black .navbar-brand .navbar-link::after { + border-color: white; } + .navbar.is-black .navbar-burger { + color: white; } + @media screen and (min-width: 1056px) { + .navbar.is-black .navbar-start > .navbar-item, + .navbar.is-black .navbar-start .navbar-link, + .navbar.is-black .navbar-end > .navbar-item, + .navbar.is-black .navbar-end .navbar-link { + color: white; } + .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active, + .navbar.is-black .navbar-start .navbar-link:focus, + .navbar.is-black .navbar-start .navbar-link:hover, + .navbar.is-black .navbar-start .navbar-link.is-active, + .navbar.is-black .navbar-end > a.navbar-item:focus, + .navbar.is-black .navbar-end > a.navbar-item:hover, + .navbar.is-black .navbar-end > a.navbar-item.is-active, + .navbar.is-black .navbar-end .navbar-link:focus, + .navbar.is-black .navbar-end .navbar-link:hover, + .navbar.is-black .navbar-end .navbar-link.is-active { + background-color: black; + color: white; } + .navbar.is-black .navbar-start .navbar-link::after, + .navbar.is-black .navbar-end .navbar-link::after { + border-color: white; } + .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { + background-color: black; + color: white; } + .navbar.is-black .navbar-dropdown a.navbar-item.is-active { + background-color: #0a0a0a; + color: white; } } + .navbar.is-light { + background-color: whitesmoke; + color: #363636; } + .navbar.is-light .navbar-brand > .navbar-item, + .navbar.is-light .navbar-brand .navbar-link { + color: #363636; } + .navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active, + .navbar.is-light .navbar-brand .navbar-link:focus, + .navbar.is-light .navbar-brand .navbar-link:hover, + .navbar.is-light .navbar-brand .navbar-link.is-active { + background-color: #e8e8e8; + color: #363636; } + .navbar.is-light .navbar-brand .navbar-link::after { + border-color: #363636; } + .navbar.is-light .navbar-burger { + color: #363636; } + @media screen and (min-width: 1056px) { + .navbar.is-light .navbar-start > .navbar-item, + .navbar.is-light .navbar-start .navbar-link, + .navbar.is-light .navbar-end > .navbar-item, + .navbar.is-light .navbar-end .navbar-link { + color: #363636; } + .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active, + .navbar.is-light .navbar-start .navbar-link:focus, + .navbar.is-light .navbar-start .navbar-link:hover, + .navbar.is-light .navbar-start .navbar-link.is-active, + .navbar.is-light .navbar-end > a.navbar-item:focus, + .navbar.is-light .navbar-end > a.navbar-item:hover, + .navbar.is-light .navbar-end > a.navbar-item.is-active, + .navbar.is-light .navbar-end .navbar-link:focus, + .navbar.is-light .navbar-end .navbar-link:hover, + .navbar.is-light .navbar-end .navbar-link.is-active { + background-color: #e8e8e8; + color: #363636; } + .navbar.is-light .navbar-start .navbar-link::after, + .navbar.is-light .navbar-end .navbar-link::after { + border-color: #363636; } + .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #e8e8e8; + color: #363636; } + .navbar.is-light .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #363636; } } + .navbar.is-dark, .content kbd.navbar { + background-color: #363636; + color: whitesmoke; } + .navbar.is-dark .navbar-brand > .navbar-item, .content kbd.navbar .navbar-brand > .navbar-item, + .navbar.is-dark .navbar-brand .navbar-link, + .content kbd.navbar .navbar-brand .navbar-link { + color: whitesmoke; } + .navbar.is-dark .navbar-brand > a.navbar-item:focus, .content kbd.navbar .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .content kbd.navbar .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active, .content kbd.navbar .navbar-brand > a.navbar-item.is-active, + .navbar.is-dark .navbar-brand .navbar-link:focus, + .content kbd.navbar .navbar-brand .navbar-link:focus, + .navbar.is-dark .navbar-brand .navbar-link:hover, + .content kbd.navbar .navbar-brand .navbar-link:hover, + .navbar.is-dark .navbar-brand .navbar-link.is-active, + .content kbd.navbar .navbar-brand .navbar-link.is-active { + background-color: #292929; + color: whitesmoke; } + .navbar.is-dark .navbar-brand .navbar-link::after, .content kbd.navbar .navbar-brand .navbar-link::after { + border-color: whitesmoke; } + .navbar.is-dark .navbar-burger, .content kbd.navbar .navbar-burger { + color: whitesmoke; } + @media screen and (min-width: 1056px) { + .navbar.is-dark .navbar-start > .navbar-item, .content kbd.navbar .navbar-start > .navbar-item, + .navbar.is-dark .navbar-start .navbar-link, + .content kbd.navbar .navbar-start .navbar-link, + .navbar.is-dark .navbar-end > .navbar-item, + .content kbd.navbar .navbar-end > .navbar-item, + .navbar.is-dark .navbar-end .navbar-link, + .content kbd.navbar .navbar-end .navbar-link { + color: whitesmoke; } + .navbar.is-dark .navbar-start > a.navbar-item:focus, .content kbd.navbar .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .content kbd.navbar .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active, .content kbd.navbar .navbar-start > a.navbar-item.is-active, + .navbar.is-dark .navbar-start .navbar-link:focus, + .content kbd.navbar .navbar-start .navbar-link:focus, + .navbar.is-dark .navbar-start .navbar-link:hover, + .content kbd.navbar .navbar-start .navbar-link:hover, + .navbar.is-dark .navbar-start .navbar-link.is-active, + .content kbd.navbar .navbar-start .navbar-link.is-active, + .navbar.is-dark .navbar-end > a.navbar-item:focus, + .content kbd.navbar .navbar-end > a.navbar-item:focus, + .navbar.is-dark .navbar-end > a.navbar-item:hover, + .content kbd.navbar .navbar-end > a.navbar-item:hover, + .navbar.is-dark .navbar-end > a.navbar-item.is-active, + .content kbd.navbar .navbar-end > a.navbar-item.is-active, + .navbar.is-dark .navbar-end .navbar-link:focus, + .content kbd.navbar .navbar-end .navbar-link:focus, + .navbar.is-dark .navbar-end .navbar-link:hover, + .content kbd.navbar .navbar-end .navbar-link:hover, + .navbar.is-dark .navbar-end .navbar-link.is-active, + .content kbd.navbar .navbar-end .navbar-link.is-active { + background-color: #292929; + color: whitesmoke; } + .navbar.is-dark .navbar-start .navbar-link::after, .content kbd.navbar .navbar-start .navbar-link::after, + .navbar.is-dark .navbar-end .navbar-link::after, + .content kbd.navbar .navbar-end .navbar-link::after { + border-color: whitesmoke; } + .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, + .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link, + .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #292929; + color: whitesmoke; } + .navbar.is-dark .navbar-dropdown a.navbar-item.is-active, .content kbd.navbar .navbar-dropdown a.navbar-item.is-active { + background-color: #363636; + color: whitesmoke; } } + .navbar.is-primary, .docstring > section > a.navbar.docs-sourcelink { + background-color: #4eb5de; + color: #fff; } + .navbar.is-primary .navbar-brand > .navbar-item, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > .navbar-item, + .navbar.is-primary .navbar-brand .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-primary .navbar-brand > a.navbar-item:focus, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item.is-active, + .navbar.is-primary .navbar-brand .navbar-link:focus, + .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus, + .navbar.is-primary .navbar-brand .navbar-link:hover, + .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover, + .navbar.is-primary .navbar-brand .navbar-link.is-active, + .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active { + background-color: #39acda; + color: #fff; } + .navbar.is-primary .navbar-brand .navbar-link::after, .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-primary .navbar-burger, .docstring > section > a.navbar.docs-sourcelink .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-primary .navbar-start > .navbar-item, .docstring > section > a.navbar.docs-sourcelink .navbar-start > .navbar-item, + .navbar.is-primary .navbar-start .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link, + .navbar.is-primary .navbar-end > .navbar-item, + .docstring > section > a.navbar.docs-sourcelink .navbar-end > .navbar-item, + .navbar.is-primary .navbar-end .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link { + color: #fff; } + .navbar.is-primary .navbar-start > a.navbar-item:focus, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item.is-active, + .navbar.is-primary .navbar-start .navbar-link:focus, + .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:focus, + .navbar.is-primary .navbar-start .navbar-link:hover, + .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:hover, + .navbar.is-primary .navbar-start .navbar-link.is-active, + .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active, + .navbar.is-primary .navbar-end > a.navbar-item:focus, + .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:focus, + .navbar.is-primary .navbar-end > a.navbar-item:hover, + .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:hover, + .navbar.is-primary .navbar-end > a.navbar-item.is-active, + .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item.is-active, + .navbar.is-primary .navbar-end .navbar-link:focus, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:focus, + .navbar.is-primary .navbar-end .navbar-link:hover, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:hover, + .navbar.is-primary .navbar-end .navbar-link.is-active, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active { + background-color: #39acda; + color: #fff; } + .navbar.is-primary .navbar-start .navbar-link::after, .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link::after, + .navbar.is-primary .navbar-end .navbar-link::after, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #39acda; + color: #fff; } + .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { + background-color: #4eb5de; + color: #fff; } } + .navbar.is-link { + background-color: #2e63b8; + color: #fff; } + .navbar.is-link .navbar-brand > .navbar-item, + .navbar.is-link .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active, + .navbar.is-link .navbar-brand .navbar-link:focus, + .navbar.is-link .navbar-brand .navbar-link:hover, + .navbar.is-link .navbar-brand .navbar-link.is-active { + background-color: #2958a4; + color: #fff; } + .navbar.is-link .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-link .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-link .navbar-start > .navbar-item, + .navbar.is-link .navbar-start .navbar-link, + .navbar.is-link .navbar-end > .navbar-item, + .navbar.is-link .navbar-end .navbar-link { + color: #fff; } + .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active, + .navbar.is-link .navbar-start .navbar-link:focus, + .navbar.is-link .navbar-start .navbar-link:hover, + .navbar.is-link .navbar-start .navbar-link.is-active, + .navbar.is-link .navbar-end > a.navbar-item:focus, + .navbar.is-link .navbar-end > a.navbar-item:hover, + .navbar.is-link .navbar-end > a.navbar-item.is-active, + .navbar.is-link .navbar-end .navbar-link:focus, + .navbar.is-link .navbar-end .navbar-link:hover, + .navbar.is-link .navbar-end .navbar-link.is-active { + background-color: #2958a4; + color: #fff; } + .navbar.is-link .navbar-start .navbar-link::after, + .navbar.is-link .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #2958a4; + color: #fff; } + .navbar.is-link .navbar-dropdown a.navbar-item.is-active { + background-color: #2e63b8; + color: #fff; } } + .navbar.is-info { + background-color: #209cee; + color: #fff; } + .navbar.is-info .navbar-brand > .navbar-item, + .navbar.is-info .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active, + .navbar.is-info .navbar-brand .navbar-link:focus, + .navbar.is-info .navbar-brand .navbar-link:hover, + .navbar.is-info .navbar-brand .navbar-link.is-active { + background-color: #1190e3; + color: #fff; } + .navbar.is-info .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-info .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-info .navbar-start > .navbar-item, + .navbar.is-info .navbar-start .navbar-link, + .navbar.is-info .navbar-end > .navbar-item, + .navbar.is-info .navbar-end .navbar-link { + color: #fff; } + .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active, + .navbar.is-info .navbar-start .navbar-link:focus, + .navbar.is-info .navbar-start .navbar-link:hover, + .navbar.is-info .navbar-start .navbar-link.is-active, + .navbar.is-info .navbar-end > a.navbar-item:focus, + .navbar.is-info .navbar-end > a.navbar-item:hover, + .navbar.is-info .navbar-end > a.navbar-item.is-active, + .navbar.is-info .navbar-end .navbar-link:focus, + .navbar.is-info .navbar-end .navbar-link:hover, + .navbar.is-info .navbar-end .navbar-link.is-active { + background-color: #1190e3; + color: #fff; } + .navbar.is-info .navbar-start .navbar-link::after, + .navbar.is-info .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #1190e3; + color: #fff; } + .navbar.is-info .navbar-dropdown a.navbar-item.is-active { + background-color: #209cee; + color: #fff; } } + .navbar.is-success { + background-color: #22c35b; + color: #fff; } + .navbar.is-success .navbar-brand > .navbar-item, + .navbar.is-success .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active, + .navbar.is-success .navbar-brand .navbar-link:focus, + .navbar.is-success .navbar-brand .navbar-link:hover, + .navbar.is-success .navbar-brand .navbar-link.is-active { + background-color: #1ead51; + color: #fff; } + .navbar.is-success .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-success .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-success .navbar-start > .navbar-item, + .navbar.is-success .navbar-start .navbar-link, + .navbar.is-success .navbar-end > .navbar-item, + .navbar.is-success .navbar-end .navbar-link { + color: #fff; } + .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active, + .navbar.is-success .navbar-start .navbar-link:focus, + .navbar.is-success .navbar-start .navbar-link:hover, + .navbar.is-success .navbar-start .navbar-link.is-active, + .navbar.is-success .navbar-end > a.navbar-item:focus, + .navbar.is-success .navbar-end > a.navbar-item:hover, + .navbar.is-success .navbar-end > a.navbar-item.is-active, + .navbar.is-success .navbar-end .navbar-link:focus, + .navbar.is-success .navbar-end .navbar-link:hover, + .navbar.is-success .navbar-end .navbar-link.is-active { + background-color: #1ead51; + color: #fff; } + .navbar.is-success .navbar-start .navbar-link::after, + .navbar.is-success .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #1ead51; + color: #fff; } + .navbar.is-success .navbar-dropdown a.navbar-item.is-active { + background-color: #22c35b; + color: #fff; } } + .navbar.is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-brand > .navbar-item, + .navbar.is-warning .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active, + .navbar.is-warning .navbar-brand .navbar-link:focus, + .navbar.is-warning .navbar-brand .navbar-link:hover, + .navbar.is-warning .navbar-brand .navbar-link.is-active { + background-color: #ffd83e; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-burger { + color: rgba(0, 0, 0, 0.7); } + @media screen and (min-width: 1056px) { + .navbar.is-warning .navbar-start > .navbar-item, + .navbar.is-warning .navbar-start .navbar-link, + .navbar.is-warning .navbar-end > .navbar-item, + .navbar.is-warning .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active, + .navbar.is-warning .navbar-start .navbar-link:focus, + .navbar.is-warning .navbar-start .navbar-link:hover, + .navbar.is-warning .navbar-start .navbar-link.is-active, + .navbar.is-warning .navbar-end > a.navbar-item:focus, + .navbar.is-warning .navbar-end > a.navbar-item:hover, + .navbar.is-warning .navbar-end > a.navbar-item.is-active, + .navbar.is-warning .navbar-end .navbar-link:focus, + .navbar.is-warning .navbar-end .navbar-link:hover, + .navbar.is-warning .navbar-end .navbar-link.is-active { + background-color: #ffd83e; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-start .navbar-link::after, + .navbar.is-warning .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #ffd83e; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } } + .navbar.is-danger { + background-color: #da0b00; + color: #fff; } + .navbar.is-danger .navbar-brand > .navbar-item, + .navbar.is-danger .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active, + .navbar.is-danger .navbar-brand .navbar-link:focus, + .navbar.is-danger .navbar-brand .navbar-link:hover, + .navbar.is-danger .navbar-brand .navbar-link.is-active { + background-color: #c10a00; + color: #fff; } + .navbar.is-danger .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-danger .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-danger .navbar-start > .navbar-item, + .navbar.is-danger .navbar-start .navbar-link, + .navbar.is-danger .navbar-end > .navbar-item, + .navbar.is-danger .navbar-end .navbar-link { + color: #fff; } + .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active, + .navbar.is-danger .navbar-start .navbar-link:focus, + .navbar.is-danger .navbar-start .navbar-link:hover, + .navbar.is-danger .navbar-start .navbar-link.is-active, + .navbar.is-danger .navbar-end > a.navbar-item:focus, + .navbar.is-danger .navbar-end > a.navbar-item:hover, + .navbar.is-danger .navbar-end > a.navbar-item.is-active, + .navbar.is-danger .navbar-end .navbar-link:focus, + .navbar.is-danger .navbar-end .navbar-link:hover, + .navbar.is-danger .navbar-end .navbar-link.is-active { + background-color: #c10a00; + color: #fff; } + .navbar.is-danger .navbar-start .navbar-link::after, + .navbar.is-danger .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #c10a00; + color: #fff; } + .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { + background-color: #da0b00; + color: #fff; } } + .navbar > .container { + align-items: stretch; + display: flex; + min-height: 3.25rem; + width: 100%; } + .navbar.has-shadow { + box-shadow: 0 2px 0 0 whitesmoke; } + .navbar.is-fixed-bottom, .navbar.is-fixed-top { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + .navbar.is-fixed-bottom { + bottom: 0; } + .navbar.is-fixed-bottom.has-shadow { + box-shadow: 0 -2px 0 0 whitesmoke; } + .navbar.is-fixed-top { + top: 0; } + +html.has-navbar-fixed-top, +body.has-navbar-fixed-top { + padding-top: 3.25rem; } + +html.has-navbar-fixed-bottom, +body.has-navbar-fixed-bottom { + padding-bottom: 3.25rem; } + +.navbar-brand, +.navbar-tabs { + align-items: stretch; + display: flex; + flex-shrink: 0; + min-height: 3.25rem; } + +.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover { + background-color: transparent; } + +.navbar-tabs { + -webkit-overflow-scrolling: touch; + max-width: 100vw; + overflow-x: auto; + overflow-y: hidden; } + +.navbar-burger { + color: #4a4a4a; + cursor: pointer; + display: block; + height: 3.25rem; + position: relative; + width: 3.25rem; + margin-left: auto; } + .navbar-burger span { + background-color: currentColor; + display: block; + height: 1px; + left: calc(50% - 8px); + position: absolute; + transform-origin: center; + transition-duration: 86ms; + transition-property: background-color, opacity, transform; + transition-timing-function: ease-out; + width: 16px; } + .navbar-burger span:nth-child(1) { + top: calc(50% - 6px); } + .navbar-burger span:nth-child(2) { + top: calc(50% - 1px); } + .navbar-burger span:nth-child(3) { + top: calc(50% + 4px); } + .navbar-burger:hover { + background-color: rgba(0, 0, 0, 0.05); } + .navbar-burger.is-active span:nth-child(1) { + transform: translateY(5px) rotate(45deg); } + .navbar-burger.is-active span:nth-child(2) { + opacity: 0; } + .navbar-burger.is-active span:nth-child(3) { + transform: translateY(-5px) rotate(-45deg); } + +.navbar-menu { + display: none; } + +.navbar-item, +.navbar-link { + color: #4a4a4a; + display: block; + line-height: 1.5; + padding: 0.5rem 0.75rem; + position: relative; } + .navbar-item .icon:only-child, + .navbar-link .icon:only-child { + margin-left: -0.25rem; + margin-right: -0.25rem; } + +a.navbar-item, +.navbar-link { + cursor: pointer; } + a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, + .navbar-link:focus, + .navbar-link:focus-within, + .navbar-link:hover, + .navbar-link.is-active { + background-color: #fafafa; + color: #2e63b8; } + +.navbar-item { + display: block; + flex-grow: 0; + flex-shrink: 0; } + .navbar-item img { + max-height: 1.75rem; } + .navbar-item.has-dropdown { + padding: 0; } + .navbar-item.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .navbar-item.is-tab { + border-bottom: 1px solid transparent; + min-height: 3.25rem; + padding-bottom: calc(0.5rem - 1px); } + .navbar-item.is-tab:focus, .navbar-item.is-tab:hover { + background-color: transparent; + border-bottom-color: #2e63b8; } + .navbar-item.is-tab.is-active { + background-color: transparent; + border-bottom-color: #2e63b8; + border-bottom-style: solid; + border-bottom-width: 3px; + color: #2e63b8; + padding-bottom: calc(0.5rem - 3px); } + +.navbar-content { + flex-grow: 1; + flex-shrink: 1; } + +.navbar-link:not(.is-arrowless) { + padding-right: 2.5em; } + .navbar-link:not(.is-arrowless)::after { + border-color: #2e63b8; + margin-top: -0.375em; + right: 1.125em; } + +.navbar-dropdown { + font-size: 0.875rem; + padding-bottom: 0.5rem; + padding-top: 0.5rem; } + .navbar-dropdown .navbar-item { + padding-left: 1.5rem; + padding-right: 1.5rem; } + +.navbar-divider { + background-color: whitesmoke; + border: none; + display: none; + height: 2px; + margin: 0.5rem 0; } + +@media screen and (max-width: 1055px) { + .navbar > .container { + display: block; } + .navbar-brand .navbar-item, + .navbar-tabs .navbar-item { + align-items: center; + display: flex; } + .navbar-link::after { + display: none; } + .navbar-menu { + background-color: white; + box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); + padding: 0.5rem 0; } + .navbar-menu.is-active { + display: block; } + .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + .navbar.is-fixed-bottom-touch { + bottom: 0; } + .navbar.is-fixed-bottom-touch.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + .navbar.is-fixed-top-touch { + top: 0; } + .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu { + -webkit-overflow-scrolling: touch; + max-height: calc(100vh - 3.25rem); + overflow: auto; } + html.has-navbar-fixed-top-touch, + body.has-navbar-fixed-top-touch { + padding-top: 3.25rem; } + html.has-navbar-fixed-bottom-touch, + body.has-navbar-fixed-bottom-touch { + padding-bottom: 3.25rem; } } + +@media screen and (min-width: 1056px) { + .navbar, + .navbar-menu, + .navbar-start, + .navbar-end { + align-items: stretch; + display: flex; } + .navbar { + min-height: 3.25rem; } + .navbar.is-spaced { + padding: 1rem 2rem; } + .navbar.is-spaced .navbar-start, + .navbar.is-spaced .navbar-end { + align-items: center; } + .navbar.is-spaced a.navbar-item, + .navbar.is-spaced .navbar-link { + border-radius: 4px; } + .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active, + .navbar.is-transparent .navbar-link:focus, + .navbar.is-transparent .navbar-link:hover, + .navbar.is-transparent .navbar-link.is-active { + background-color: transparent !important; } + .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { + background-color: transparent !important; } + .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { + background-color: whitesmoke; + color: #0a0a0a; } + .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #2e63b8; } + .navbar-burger { + display: none; } + .navbar-item, + .navbar-link { + align-items: center; + display: flex; } + .navbar-item { + display: flex; } + .navbar-item.has-dropdown { + align-items: stretch; } + .navbar-item.has-dropdown-up .navbar-link::after { + transform: rotate(135deg) translate(0.25em, -0.25em); } + .navbar-item.has-dropdown-up .navbar-dropdown { + border-bottom: 2px solid #dbdbdb; + border-radius: 6px 6px 0 0; + border-top: none; + bottom: 100%; + box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); + top: auto; } + .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown { + display: block; } + .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { + opacity: 1; + pointer-events: auto; + transform: translateY(0); } + .navbar-menu { + flex-grow: 1; + flex-shrink: 0; } + .navbar-start { + justify-content: flex-start; + margin-right: auto; } + .navbar-end { + justify-content: flex-end; + margin-left: auto; } + .navbar-dropdown { + background-color: white; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-top: 2px solid #dbdbdb; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); + display: none; + font-size: 0.875rem; + left: 0; + min-width: 100%; + position: absolute; + top: 100%; + z-index: 20; } + .navbar-dropdown .navbar-item { + padding: 0.375rem 1rem; + white-space: nowrap; } + .navbar-dropdown a.navbar-item { + padding-right: 3rem; } + .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover { + background-color: whitesmoke; + color: #0a0a0a; } + .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #2e63b8; } + .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed { + border-radius: 6px; + border-top: none; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + display: block; + opacity: 0; + pointer-events: none; + top: calc(100% + (-4px)); + transform: translateY(-5px); + transition-duration: 86ms; + transition-property: opacity, transform; } + .navbar-dropdown.is-right { + left: auto; + right: 0; } + .navbar-divider { + display: block; } + .navbar > .container .navbar-brand, + .container > .navbar .navbar-brand { + margin-left: -.75rem; } + .navbar > .container .navbar-menu, + .container > .navbar .navbar-menu { + margin-right: -.75rem; } + .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + .navbar.is-fixed-bottom-desktop { + bottom: 0; } + .navbar.is-fixed-bottom-desktop.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + .navbar.is-fixed-top-desktop { + top: 0; } + html.has-navbar-fixed-top-desktop, + body.has-navbar-fixed-top-desktop { + padding-top: 3.25rem; } + html.has-navbar-fixed-bottom-desktop, + body.has-navbar-fixed-bottom-desktop { + padding-bottom: 3.25rem; } + html.has-spaced-navbar-fixed-top, + body.has-spaced-navbar-fixed-top { + padding-top: 5.25rem; } + html.has-spaced-navbar-fixed-bottom, + body.has-spaced-navbar-fixed-bottom { + padding-bottom: 5.25rem; } + a.navbar-item.is-active, + .navbar-link.is-active { + color: #0a0a0a; } + a.navbar-item.is-active:not(:focus):not(:hover), + .navbar-link.is-active:not(:focus):not(:hover) { + background-color: transparent; } + .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #fafafa; } } + +.hero.is-fullheight-with-navbar { + min-height: calc(100vh - 3.25rem); } + +.pagination { + font-size: 1rem; + margin: -0.25rem; } + .pagination.is-small, #documenter .docs-sidebar form.docs-search > input.pagination { + font-size: 0.75rem; } + .pagination.is-medium { + font-size: 1.25rem; } + .pagination.is-large { + font-size: 1.5rem; } + .pagination.is-rounded .pagination-previous, #documenter .docs-sidebar form.docs-search > input.pagination .pagination-previous, + .pagination.is-rounded .pagination-next, + #documenter .docs-sidebar form.docs-search > input.pagination .pagination-next { + padding-left: 1em; + padding-right: 1em; + border-radius: 290486px; } + .pagination.is-rounded .pagination-link, #documenter .docs-sidebar form.docs-search > input.pagination .pagination-link { + border-radius: 290486px; } + +.pagination, +.pagination-list { + align-items: center; + display: flex; + justify-content: center; + text-align: center; } + +.pagination-previous, +.pagination-next, +.pagination-link, +.pagination-ellipsis { + font-size: 1em; + justify-content: center; + margin: 0.25rem; + padding-left: 0.5em; + padding-right: 0.5em; + text-align: center; } + +.pagination-previous, +.pagination-next, +.pagination-link { + border-color: #dbdbdb; + color: #363636; + min-width: 2.25em; } + .pagination-previous:hover, + .pagination-next:hover, + .pagination-link:hover { + border-color: #b5b5b5; + color: #363636; } + .pagination-previous:focus, + .pagination-next:focus, + .pagination-link:focus { + border-color: #3c5dcd; } + .pagination-previous:active, + .pagination-next:active, + .pagination-link:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); } + .pagination-previous[disabled], + .pagination-next[disabled], + .pagination-link[disabled] { + background-color: #dbdbdb; + border-color: #dbdbdb; + box-shadow: none; + color: #6b6b6b; + opacity: 0.5; } + +.pagination-previous, +.pagination-next { + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; } + +.pagination-link.is-current { + background-color: #2e63b8; + border-color: #2e63b8; + color: #fff; } + +.pagination-ellipsis { + color: #b5b5b5; + pointer-events: none; } + +.pagination-list { + flex-wrap: wrap; } + +@media screen and (max-width: 768px) { + .pagination { + flex-wrap: wrap; } + .pagination-previous, + .pagination-next { + flex-grow: 1; + flex-shrink: 1; } + .pagination-list li { + flex-grow: 1; + flex-shrink: 1; } } + +@media screen and (min-width: 769px), print { + .pagination-list { + flex-grow: 1; + flex-shrink: 1; + justify-content: flex-start; + order: 1; } + .pagination-previous { + order: 2; } + .pagination-next { + order: 3; } + .pagination { + justify-content: space-between; } + .pagination.is-centered .pagination-previous { + order: 1; } + .pagination.is-centered .pagination-list { + justify-content: center; + order: 2; } + .pagination.is-centered .pagination-next { + order: 3; } + .pagination.is-right .pagination-previous { + order: 1; } + .pagination.is-right .pagination-next { + order: 2; } + .pagination.is-right .pagination-list { + justify-content: flex-end; + order: 3; } } + +.panel { + font-size: 1rem; } + .panel:not(:last-child) { + margin-bottom: 1.5rem; } + +.panel-heading, +.panel-tabs, +.panel-block { + border-bottom: 1px solid #dbdbdb; + border-left: 1px solid #dbdbdb; + border-right: 1px solid #dbdbdb; } + .panel-heading:first-child, + .panel-tabs:first-child, + .panel-block:first-child { + border-top: 1px solid #dbdbdb; } + +.panel-heading { + background-color: whitesmoke; + border-radius: 4px 4px 0 0; + color: #222222; + font-size: 1.25em; + font-weight: 300; + line-height: 1.25; + padding: 0.5em 0.75em; } + +.panel-tabs { + align-items: flex-end; + display: flex; + font-size: 0.875em; + justify-content: center; } + .panel-tabs a { + border-bottom: 1px solid #dbdbdb; + margin-bottom: -1px; + padding: 0.5em; } + .panel-tabs a.is-active { + border-bottom-color: #4a4a4a; + color: #363636; } + +.panel-list a { + color: #222222; } + .panel-list a:hover { + color: #2e63b8; } + +.panel-block { + align-items: center; + color: #222222; + display: flex; + justify-content: flex-start; + padding: 0.5em 0.75em; } + .panel-block input[type="checkbox"] { + margin-right: 0.75em; } + .panel-block > .control { + flex-grow: 1; + flex-shrink: 1; + width: 100%; } + .panel-block.is-wrapped { + flex-wrap: wrap; } + .panel-block.is-active { + border-left-color: #2e63b8; + color: #363636; } + .panel-block.is-active .panel-icon { + color: #2e63b8; } + +a.panel-block, +label.panel-block { + cursor: pointer; } + a.panel-block:hover, + label.panel-block:hover { + background-color: whitesmoke; } + +.panel-icon { + display: inline-block; + font-size: 14px; + height: 1em; + line-height: 1em; + text-align: center; + vertical-align: top; + width: 1em; + color: #6b6b6b; + margin-right: 0.75em; } + .panel-icon .fa { + font-size: inherit; + line-height: inherit; } + +.tabs { + -webkit-overflow-scrolling: touch; + align-items: stretch; + display: flex; + font-size: 1rem; + justify-content: space-between; + overflow: hidden; + overflow-x: auto; + white-space: nowrap; } + .tabs a { + align-items: center; + border-bottom-color: #dbdbdb; + border-bottom-style: solid; + border-bottom-width: 1px; + color: #222222; + display: flex; + justify-content: center; + margin-bottom: -1px; + padding: 0.5em 1em; + vertical-align: top; } + .tabs a:hover { + border-bottom-color: #222222; + color: #222222; } + .tabs li { + display: block; } + .tabs li.is-active a { + border-bottom-color: #2e63b8; + color: #2e63b8; } + .tabs ul { + align-items: center; + border-bottom-color: #dbdbdb; + border-bottom-style: solid; + border-bottom-width: 1px; + display: flex; + flex-grow: 1; + flex-shrink: 0; + justify-content: flex-start; } + .tabs ul.is-left { + padding-right: 0.75em; } + .tabs ul.is-center { + flex: none; + justify-content: center; + padding-left: 0.75em; + padding-right: 0.75em; } + .tabs ul.is-right { + justify-content: flex-end; + padding-left: 0.75em; } + .tabs .icon:first-child { + margin-right: 0.5em; } + .tabs .icon:last-child { + margin-left: 0.5em; } + .tabs.is-centered ul { + justify-content: center; } + .tabs.is-right ul { + justify-content: flex-end; } + .tabs.is-boxed a { + border: 1px solid transparent; + border-radius: 4px 4px 0 0; } + .tabs.is-boxed a:hover { + background-color: whitesmoke; + border-bottom-color: #dbdbdb; } + .tabs.is-boxed li.is-active a { + background-color: white; + border-color: #dbdbdb; + border-bottom-color: transparent !important; } + .tabs.is-fullwidth li { + flex-grow: 1; + flex-shrink: 0; } + .tabs.is-toggle a { + border-color: #dbdbdb; + border-style: solid; + border-width: 1px; + margin-bottom: 0; + position: relative; } + .tabs.is-toggle a:hover { + background-color: whitesmoke; + border-color: #b5b5b5; + z-index: 2; } + .tabs.is-toggle li + li { + margin-left: -1px; } + .tabs.is-toggle li:first-child a { + border-radius: 4px 0 0 4px; } + .tabs.is-toggle li:last-child a { + border-radius: 0 4px 4px 0; } + .tabs.is-toggle li.is-active a { + background-color: #2e63b8; + border-color: #2e63b8; + color: #fff; + z-index: 1; } + .tabs.is-toggle ul { + border-bottom: none; } + .tabs.is-toggle.is-toggle-rounded li:first-child a { + border-bottom-left-radius: 290486px; + border-top-left-radius: 290486px; + padding-left: 1.25em; } + .tabs.is-toggle.is-toggle-rounded li:last-child a { + border-bottom-right-radius: 290486px; + border-top-right-radius: 290486px; + padding-right: 1.25em; } + .tabs.is-small, #documenter .docs-sidebar form.docs-search > input.tabs { + font-size: 0.75rem; } + .tabs.is-medium { + font-size: 1.25rem; } + .tabs.is-large { + font-size: 1.5rem; } + +.column { + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + padding: 0.75rem; } + .columns.is-mobile > .column.is-narrow { + flex: none; } + .columns.is-mobile > .column.is-full { + flex: none; + width: 100%; } + .columns.is-mobile > .column.is-three-quarters { + flex: none; + width: 75%; } + .columns.is-mobile > .column.is-two-thirds { + flex: none; + width: 66.6666%; } + .columns.is-mobile > .column.is-half { + flex: none; + width: 50%; } + .columns.is-mobile > .column.is-one-third { + flex: none; + width: 33.3333%; } + .columns.is-mobile > .column.is-one-quarter { + flex: none; + width: 25%; } + .columns.is-mobile > .column.is-one-fifth { + flex: none; + width: 20%; } + .columns.is-mobile > .column.is-two-fifths { + flex: none; + width: 40%; } + .columns.is-mobile > .column.is-three-fifths { + flex: none; + width: 60%; } + .columns.is-mobile > .column.is-four-fifths { + flex: none; + width: 80%; } + .columns.is-mobile > .column.is-offset-three-quarters { + margin-left: 75%; } + .columns.is-mobile > .column.is-offset-two-thirds { + margin-left: 66.6666%; } + .columns.is-mobile > .column.is-offset-half { + margin-left: 50%; } + .columns.is-mobile > .column.is-offset-one-third { + margin-left: 33.3333%; } + .columns.is-mobile > .column.is-offset-one-quarter { + margin-left: 25%; } + .columns.is-mobile > .column.is-offset-one-fifth { + margin-left: 20%; } + .columns.is-mobile > .column.is-offset-two-fifths { + margin-left: 40%; } + .columns.is-mobile > .column.is-offset-three-fifths { + margin-left: 60%; } + .columns.is-mobile > .column.is-offset-four-fifths { + margin-left: 80%; } + .columns.is-mobile > .column.is-0 { + flex: none; + width: 0%; } + .columns.is-mobile > .column.is-offset-0 { + margin-left: 0%; } + .columns.is-mobile > .column.is-1 { + flex: none; + width: 8.3333333333%; } + .columns.is-mobile > .column.is-offset-1 { + margin-left: 8.3333333333%; } + .columns.is-mobile > .column.is-2 { + flex: none; + width: 16.6666666667%; } + .columns.is-mobile > .column.is-offset-2 { + margin-left: 16.6666666667%; } + .columns.is-mobile > .column.is-3 { + flex: none; + width: 25%; } + .columns.is-mobile > .column.is-offset-3 { + margin-left: 25%; } + .columns.is-mobile > .column.is-4 { + flex: none; + width: 33.3333333333%; } + .columns.is-mobile > .column.is-offset-4 { + margin-left: 33.3333333333%; } + .columns.is-mobile > .column.is-5 { + flex: none; + width: 41.6666666667%; } + .columns.is-mobile > .column.is-offset-5 { + margin-left: 41.6666666667%; } + .columns.is-mobile > .column.is-6 { + flex: none; + width: 50%; } + .columns.is-mobile > .column.is-offset-6 { + margin-left: 50%; } + .columns.is-mobile > .column.is-7 { + flex: none; + width: 58.3333333333%; } + .columns.is-mobile > .column.is-offset-7 { + margin-left: 58.3333333333%; } + .columns.is-mobile > .column.is-8 { + flex: none; + width: 66.6666666667%; } + .columns.is-mobile > .column.is-offset-8 { + margin-left: 66.6666666667%; } + .columns.is-mobile > .column.is-9 { + flex: none; + width: 75%; } + .columns.is-mobile > .column.is-offset-9 { + margin-left: 75%; } + .columns.is-mobile > .column.is-10 { + flex: none; + width: 83.3333333333%; } + .columns.is-mobile > .column.is-offset-10 { + margin-left: 83.3333333333%; } + .columns.is-mobile > .column.is-11 { + flex: none; + width: 91.6666666667%; } + .columns.is-mobile > .column.is-offset-11 { + margin-left: 91.6666666667%; } + .columns.is-mobile > .column.is-12 { + flex: none; + width: 100%; } + .columns.is-mobile > .column.is-offset-12 { + margin-left: 100%; } + @media screen and (max-width: 768px) { + .column.is-narrow-mobile { + flex: none; } + .column.is-full-mobile { + flex: none; + width: 100%; } + .column.is-three-quarters-mobile { + flex: none; + width: 75%; } + .column.is-two-thirds-mobile { + flex: none; + width: 66.6666%; } + .column.is-half-mobile { + flex: none; + width: 50%; } + .column.is-one-third-mobile { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-mobile { + flex: none; + width: 25%; } + .column.is-one-fifth-mobile { + flex: none; + width: 20%; } + .column.is-two-fifths-mobile { + flex: none; + width: 40%; } + .column.is-three-fifths-mobile { + flex: none; + width: 60%; } + .column.is-four-fifths-mobile { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-mobile { + margin-left: 75%; } + .column.is-offset-two-thirds-mobile { + margin-left: 66.6666%; } + .column.is-offset-half-mobile { + margin-left: 50%; } + .column.is-offset-one-third-mobile { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-mobile { + margin-left: 25%; } + .column.is-offset-one-fifth-mobile { + margin-left: 20%; } + .column.is-offset-two-fifths-mobile { + margin-left: 40%; } + .column.is-offset-three-fifths-mobile { + margin-left: 60%; } + .column.is-offset-four-fifths-mobile { + margin-left: 80%; } + .column.is-0-mobile { + flex: none; + width: 0%; } + .column.is-offset-0-mobile { + margin-left: 0%; } + .column.is-1-mobile { + flex: none; + width: 8.3333333333%; } + .column.is-offset-1-mobile { + margin-left: 8.3333333333%; } + .column.is-2-mobile { + flex: none; + width: 16.6666666667%; } + .column.is-offset-2-mobile { + margin-left: 16.6666666667%; } + .column.is-3-mobile { + flex: none; + width: 25%; } + .column.is-offset-3-mobile { + margin-left: 25%; } + .column.is-4-mobile { + flex: none; + width: 33.3333333333%; } + .column.is-offset-4-mobile { + margin-left: 33.3333333333%; } + .column.is-5-mobile { + flex: none; + width: 41.6666666667%; } + .column.is-offset-5-mobile { + margin-left: 41.6666666667%; } + .column.is-6-mobile { + flex: none; + width: 50%; } + .column.is-offset-6-mobile { + margin-left: 50%; } + .column.is-7-mobile { + flex: none; + width: 58.3333333333%; } + .column.is-offset-7-mobile { + margin-left: 58.3333333333%; } + .column.is-8-mobile { + flex: none; + width: 66.6666666667%; } + .column.is-offset-8-mobile { + margin-left: 66.6666666667%; } + .column.is-9-mobile { + flex: none; + width: 75%; } + .column.is-offset-9-mobile { + margin-left: 75%; } + .column.is-10-mobile { + flex: none; + width: 83.3333333333%; } + .column.is-offset-10-mobile { + margin-left: 83.3333333333%; } + .column.is-11-mobile { + flex: none; + width: 91.6666666667%; } + .column.is-offset-11-mobile { + margin-left: 91.6666666667%; } + .column.is-12-mobile { + flex: none; + width: 100%; } + .column.is-offset-12-mobile { + margin-left: 100%; } } + @media screen and (min-width: 769px), print { + .column.is-narrow, .column.is-narrow-tablet { + flex: none; } + .column.is-full, .column.is-full-tablet { + flex: none; + width: 100%; } + .column.is-three-quarters, .column.is-three-quarters-tablet { + flex: none; + width: 75%; } + .column.is-two-thirds, .column.is-two-thirds-tablet { + flex: none; + width: 66.6666%; } + .column.is-half, .column.is-half-tablet { + flex: none; + width: 50%; } + .column.is-one-third, .column.is-one-third-tablet { + flex: none; + width: 33.3333%; } + .column.is-one-quarter, .column.is-one-quarter-tablet { + flex: none; + width: 25%; } + .column.is-one-fifth, .column.is-one-fifth-tablet { + flex: none; + width: 20%; } + .column.is-two-fifths, .column.is-two-fifths-tablet { + flex: none; + width: 40%; } + .column.is-three-fifths, .column.is-three-fifths-tablet { + flex: none; + width: 60%; } + .column.is-four-fifths, .column.is-four-fifths-tablet { + flex: none; + width: 80%; } + .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet { + margin-left: 75%; } + .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet { + margin-left: 66.6666%; } + .column.is-offset-half, .column.is-offset-half-tablet { + margin-left: 50%; } + .column.is-offset-one-third, .column.is-offset-one-third-tablet { + margin-left: 33.3333%; } + .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet { + margin-left: 25%; } + .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet { + margin-left: 20%; } + .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet { + margin-left: 40%; } + .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet { + margin-left: 60%; } + .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet { + margin-left: 80%; } + .column.is-0, .column.is-0-tablet { + flex: none; + width: 0%; } + .column.is-offset-0, .column.is-offset-0-tablet { + margin-left: 0%; } + .column.is-1, .column.is-1-tablet { + flex: none; + width: 8.3333333333%; } + .column.is-offset-1, .column.is-offset-1-tablet { + margin-left: 8.3333333333%; } + .column.is-2, .column.is-2-tablet { + flex: none; + width: 16.6666666667%; } + .column.is-offset-2, .column.is-offset-2-tablet { + margin-left: 16.6666666667%; } + .column.is-3, .column.is-3-tablet { + flex: none; + width: 25%; } + .column.is-offset-3, .column.is-offset-3-tablet { + margin-left: 25%; } + .column.is-4, .column.is-4-tablet { + flex: none; + width: 33.3333333333%; } + .column.is-offset-4, .column.is-offset-4-tablet { + margin-left: 33.3333333333%; } + .column.is-5, .column.is-5-tablet { + flex: none; + width: 41.6666666667%; } + .column.is-offset-5, .column.is-offset-5-tablet { + margin-left: 41.6666666667%; } + .column.is-6, .column.is-6-tablet { + flex: none; + width: 50%; } + .column.is-offset-6, .column.is-offset-6-tablet { + margin-left: 50%; } + .column.is-7, .column.is-7-tablet { + flex: none; + width: 58.3333333333%; } + .column.is-offset-7, .column.is-offset-7-tablet { + margin-left: 58.3333333333%; } + .column.is-8, .column.is-8-tablet { + flex: none; + width: 66.6666666667%; } + .column.is-offset-8, .column.is-offset-8-tablet { + margin-left: 66.6666666667%; } + .column.is-9, .column.is-9-tablet { + flex: none; + width: 75%; } + .column.is-offset-9, .column.is-offset-9-tablet { + margin-left: 75%; } + .column.is-10, .column.is-10-tablet { + flex: none; + width: 83.3333333333%; } + .column.is-offset-10, .column.is-offset-10-tablet { + margin-left: 83.3333333333%; } + .column.is-11, .column.is-11-tablet { + flex: none; + width: 91.6666666667%; } + .column.is-offset-11, .column.is-offset-11-tablet { + margin-left: 91.6666666667%; } + .column.is-12, .column.is-12-tablet { + flex: none; + width: 100%; } + .column.is-offset-12, .column.is-offset-12-tablet { + margin-left: 100%; } } + @media screen and (max-width: 1055px) { + .column.is-narrow-touch { + flex: none; } + .column.is-full-touch { + flex: none; + width: 100%; } + .column.is-three-quarters-touch { + flex: none; + width: 75%; } + .column.is-two-thirds-touch { + flex: none; + width: 66.6666%; } + .column.is-half-touch { + flex: none; + width: 50%; } + .column.is-one-third-touch { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-touch { + flex: none; + width: 25%; } + .column.is-one-fifth-touch { + flex: none; + width: 20%; } + .column.is-two-fifths-touch { + flex: none; + width: 40%; } + .column.is-three-fifths-touch { + flex: none; + width: 60%; } + .column.is-four-fifths-touch { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-touch { + margin-left: 75%; } + .column.is-offset-two-thirds-touch { + margin-left: 66.6666%; } + .column.is-offset-half-touch { + margin-left: 50%; } + .column.is-offset-one-third-touch { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-touch { + margin-left: 25%; } + .column.is-offset-one-fifth-touch { + margin-left: 20%; } + .column.is-offset-two-fifths-touch { + margin-left: 40%; } + .column.is-offset-three-fifths-touch { + margin-left: 60%; } + .column.is-offset-four-fifths-touch { + margin-left: 80%; } + .column.is-0-touch { + flex: none; + width: 0%; } + .column.is-offset-0-touch { + margin-left: 0%; } + .column.is-1-touch { + flex: none; + width: 8.3333333333%; } + .column.is-offset-1-touch { + margin-left: 8.3333333333%; } + .column.is-2-touch { + flex: none; + width: 16.6666666667%; } + .column.is-offset-2-touch { + margin-left: 16.6666666667%; } + .column.is-3-touch { + flex: none; + width: 25%; } + .column.is-offset-3-touch { + margin-left: 25%; } + .column.is-4-touch { + flex: none; + width: 33.3333333333%; } + .column.is-offset-4-touch { + margin-left: 33.3333333333%; } + .column.is-5-touch { + flex: none; + width: 41.6666666667%; } + .column.is-offset-5-touch { + margin-left: 41.6666666667%; } + .column.is-6-touch { + flex: none; + width: 50%; } + .column.is-offset-6-touch { + margin-left: 50%; } + .column.is-7-touch { + flex: none; + width: 58.3333333333%; } + .column.is-offset-7-touch { + margin-left: 58.3333333333%; } + .column.is-8-touch { + flex: none; + width: 66.6666666667%; } + .column.is-offset-8-touch { + margin-left: 66.6666666667%; } + .column.is-9-touch { + flex: none; + width: 75%; } + .column.is-offset-9-touch { + margin-left: 75%; } + .column.is-10-touch { + flex: none; + width: 83.3333333333%; } + .column.is-offset-10-touch { + margin-left: 83.3333333333%; } + .column.is-11-touch { + flex: none; + width: 91.6666666667%; } + .column.is-offset-11-touch { + margin-left: 91.6666666667%; } + .column.is-12-touch { + flex: none; + width: 100%; } + .column.is-offset-12-touch { + margin-left: 100%; } } + @media screen and (min-width: 1056px) { + .column.is-narrow-desktop { + flex: none; } + .column.is-full-desktop { + flex: none; + width: 100%; } + .column.is-three-quarters-desktop { + flex: none; + width: 75%; } + .column.is-two-thirds-desktop { + flex: none; + width: 66.6666%; } + .column.is-half-desktop { + flex: none; + width: 50%; } + .column.is-one-third-desktop { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-desktop { + flex: none; + width: 25%; } + .column.is-one-fifth-desktop { + flex: none; + width: 20%; } + .column.is-two-fifths-desktop { + flex: none; + width: 40%; } + .column.is-three-fifths-desktop { + flex: none; + width: 60%; } + .column.is-four-fifths-desktop { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-desktop { + margin-left: 75%; } + .column.is-offset-two-thirds-desktop { + margin-left: 66.6666%; } + .column.is-offset-half-desktop { + margin-left: 50%; } + .column.is-offset-one-third-desktop { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-desktop { + margin-left: 25%; } + .column.is-offset-one-fifth-desktop { + margin-left: 20%; } + .column.is-offset-two-fifths-desktop { + margin-left: 40%; } + .column.is-offset-three-fifths-desktop { + margin-left: 60%; } + .column.is-offset-four-fifths-desktop { + margin-left: 80%; } + .column.is-0-desktop { + flex: none; + width: 0%; } + .column.is-offset-0-desktop { + margin-left: 0%; } + .column.is-1-desktop { + flex: none; + width: 8.3333333333%; } + .column.is-offset-1-desktop { + margin-left: 8.3333333333%; } + .column.is-2-desktop { + flex: none; + width: 16.6666666667%; } + .column.is-offset-2-desktop { + margin-left: 16.6666666667%; } + .column.is-3-desktop { + flex: none; + width: 25%; } + .column.is-offset-3-desktop { + margin-left: 25%; } + .column.is-4-desktop { + flex: none; + width: 33.3333333333%; } + .column.is-offset-4-desktop { + margin-left: 33.3333333333%; } + .column.is-5-desktop { + flex: none; + width: 41.6666666667%; } + .column.is-offset-5-desktop { + margin-left: 41.6666666667%; } + .column.is-6-desktop { + flex: none; + width: 50%; } + .column.is-offset-6-desktop { + margin-left: 50%; } + .column.is-7-desktop { + flex: none; + width: 58.3333333333%; } + .column.is-offset-7-desktop { + margin-left: 58.3333333333%; } + .column.is-8-desktop { + flex: none; + width: 66.6666666667%; } + .column.is-offset-8-desktop { + margin-left: 66.6666666667%; } + .column.is-9-desktop { + flex: none; + width: 75%; } + .column.is-offset-9-desktop { + margin-left: 75%; } + .column.is-10-desktop { + flex: none; + width: 83.3333333333%; } + .column.is-offset-10-desktop { + margin-left: 83.3333333333%; } + .column.is-11-desktop { + flex: none; + width: 91.6666666667%; } + .column.is-offset-11-desktop { + margin-left: 91.6666666667%; } + .column.is-12-desktop { + flex: none; + width: 100%; } + .column.is-offset-12-desktop { + margin-left: 100%; } } + @media screen and (min-width: 1216px) { + .column.is-narrow-widescreen { + flex: none; } + .column.is-full-widescreen { + flex: none; + width: 100%; } + .column.is-three-quarters-widescreen { + flex: none; + width: 75%; } + .column.is-two-thirds-widescreen { + flex: none; + width: 66.6666%; } + .column.is-half-widescreen { + flex: none; + width: 50%; } + .column.is-one-third-widescreen { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-widescreen { + flex: none; + width: 25%; } + .column.is-one-fifth-widescreen { + flex: none; + width: 20%; } + .column.is-two-fifths-widescreen { + flex: none; + width: 40%; } + .column.is-three-fifths-widescreen { + flex: none; + width: 60%; } + .column.is-four-fifths-widescreen { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-widescreen { + margin-left: 75%; } + .column.is-offset-two-thirds-widescreen { + margin-left: 66.6666%; } + .column.is-offset-half-widescreen { + margin-left: 50%; } + .column.is-offset-one-third-widescreen { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-widescreen { + margin-left: 25%; } + .column.is-offset-one-fifth-widescreen { + margin-left: 20%; } + .column.is-offset-two-fifths-widescreen { + margin-left: 40%; } + .column.is-offset-three-fifths-widescreen { + margin-left: 60%; } + .column.is-offset-four-fifths-widescreen { + margin-left: 80%; } + .column.is-0-widescreen { + flex: none; + width: 0%; } + .column.is-offset-0-widescreen { + margin-left: 0%; } + .column.is-1-widescreen { + flex: none; + width: 8.3333333333%; } + .column.is-offset-1-widescreen { + margin-left: 8.3333333333%; } + .column.is-2-widescreen { + flex: none; + width: 16.6666666667%; } + .column.is-offset-2-widescreen { + margin-left: 16.6666666667%; } + .column.is-3-widescreen { + flex: none; + width: 25%; } + .column.is-offset-3-widescreen { + margin-left: 25%; } + .column.is-4-widescreen { + flex: none; + width: 33.3333333333%; } + .column.is-offset-4-widescreen { + margin-left: 33.3333333333%; } + .column.is-5-widescreen { + flex: none; + width: 41.6666666667%; } + .column.is-offset-5-widescreen { + margin-left: 41.6666666667%; } + .column.is-6-widescreen { + flex: none; + width: 50%; } + .column.is-offset-6-widescreen { + margin-left: 50%; } + .column.is-7-widescreen { + flex: none; + width: 58.3333333333%; } + .column.is-offset-7-widescreen { + margin-left: 58.3333333333%; } + .column.is-8-widescreen { + flex: none; + width: 66.6666666667%; } + .column.is-offset-8-widescreen { + margin-left: 66.6666666667%; } + .column.is-9-widescreen { + flex: none; + width: 75%; } + .column.is-offset-9-widescreen { + margin-left: 75%; } + .column.is-10-widescreen { + flex: none; + width: 83.3333333333%; } + .column.is-offset-10-widescreen { + margin-left: 83.3333333333%; } + .column.is-11-widescreen { + flex: none; + width: 91.6666666667%; } + .column.is-offset-11-widescreen { + margin-left: 91.6666666667%; } + .column.is-12-widescreen { + flex: none; + width: 100%; } + .column.is-offset-12-widescreen { + margin-left: 100%; } } + @media screen and (min-width: 1408px) { + .column.is-narrow-fullhd { + flex: none; } + .column.is-full-fullhd { + flex: none; + width: 100%; } + .column.is-three-quarters-fullhd { + flex: none; + width: 75%; } + .column.is-two-thirds-fullhd { + flex: none; + width: 66.6666%; } + .column.is-half-fullhd { + flex: none; + width: 50%; } + .column.is-one-third-fullhd { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-fullhd { + flex: none; + width: 25%; } + .column.is-one-fifth-fullhd { + flex: none; + width: 20%; } + .column.is-two-fifths-fullhd { + flex: none; + width: 40%; } + .column.is-three-fifths-fullhd { + flex: none; + width: 60%; } + .column.is-four-fifths-fullhd { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-fullhd { + margin-left: 75%; } + .column.is-offset-two-thirds-fullhd { + margin-left: 66.6666%; } + .column.is-offset-half-fullhd { + margin-left: 50%; } + .column.is-offset-one-third-fullhd { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-fullhd { + margin-left: 25%; } + .column.is-offset-one-fifth-fullhd { + margin-left: 20%; } + .column.is-offset-two-fifths-fullhd { + margin-left: 40%; } + .column.is-offset-three-fifths-fullhd { + margin-left: 60%; } + .column.is-offset-four-fifths-fullhd { + margin-left: 80%; } + .column.is-0-fullhd { + flex: none; + width: 0%; } + .column.is-offset-0-fullhd { + margin-left: 0%; } + .column.is-1-fullhd { + flex: none; + width: 8.3333333333%; } + .column.is-offset-1-fullhd { + margin-left: 8.3333333333%; } + .column.is-2-fullhd { + flex: none; + width: 16.6666666667%; } + .column.is-offset-2-fullhd { + margin-left: 16.6666666667%; } + .column.is-3-fullhd { + flex: none; + width: 25%; } + .column.is-offset-3-fullhd { + margin-left: 25%; } + .column.is-4-fullhd { + flex: none; + width: 33.3333333333%; } + .column.is-offset-4-fullhd { + margin-left: 33.3333333333%; } + .column.is-5-fullhd { + flex: none; + width: 41.6666666667%; } + .column.is-offset-5-fullhd { + margin-left: 41.6666666667%; } + .column.is-6-fullhd { + flex: none; + width: 50%; } + .column.is-offset-6-fullhd { + margin-left: 50%; } + .column.is-7-fullhd { + flex: none; + width: 58.3333333333%; } + .column.is-offset-7-fullhd { + margin-left: 58.3333333333%; } + .column.is-8-fullhd { + flex: none; + width: 66.6666666667%; } + .column.is-offset-8-fullhd { + margin-left: 66.6666666667%; } + .column.is-9-fullhd { + flex: none; + width: 75%; } + .column.is-offset-9-fullhd { + margin-left: 75%; } + .column.is-10-fullhd { + flex: none; + width: 83.3333333333%; } + .column.is-offset-10-fullhd { + margin-left: 83.3333333333%; } + .column.is-11-fullhd { + flex: none; + width: 91.6666666667%; } + .column.is-offset-11-fullhd { + margin-left: 91.6666666667%; } + .column.is-12-fullhd { + flex: none; + width: 100%; } + .column.is-offset-12-fullhd { + margin-left: 100%; } } +.columns { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; } + .columns:last-child { + margin-bottom: -0.75rem; } + .columns:not(:last-child) { + margin-bottom: calc(1.5rem - 0.75rem); } + .columns.is-centered { + justify-content: center; } + .columns.is-gapless { + margin-left: 0; + margin-right: 0; + margin-top: 0; } + .columns.is-gapless > .column { + margin: 0; + padding: 0 !important; } + .columns.is-gapless:not(:last-child) { + margin-bottom: 1.5rem; } + .columns.is-gapless:last-child { + margin-bottom: 0; } + .columns.is-mobile { + display: flex; } + .columns.is-multiline { + flex-wrap: wrap; } + .columns.is-vcentered { + align-items: center; } + @media screen and (min-width: 769px), print { + .columns:not(.is-desktop) { + display: flex; } } + @media screen and (min-width: 1056px) { + .columns.is-desktop { + display: flex; } } +.columns.is-variable { + --columnGap: 0.75rem; + margin-left: calc(-1 * var(--columnGap)); + margin-right: calc(-1 * var(--columnGap)); } + .columns.is-variable .column { + padding-left: var(--columnGap); + padding-right: var(--columnGap); } + .columns.is-variable.is-0 { + --columnGap: 0rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-0-mobile { + --columnGap: 0rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-0-tablet { + --columnGap: 0rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-0-tablet-only { + --columnGap: 0rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-0-touch { + --columnGap: 0rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-0-desktop { + --columnGap: 0rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-0-desktop-only { + --columnGap: 0rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-0-widescreen { + --columnGap: 0rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-0-widescreen-only { + --columnGap: 0rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-0-fullhd { + --columnGap: 0rem; } } + .columns.is-variable.is-1 { + --columnGap: 0.25rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-1-mobile { + --columnGap: 0.25rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-1-tablet { + --columnGap: 0.25rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-1-tablet-only { + --columnGap: 0.25rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-1-touch { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-1-desktop { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-1-desktop-only { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-1-widescreen { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-1-widescreen-only { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-1-fullhd { + --columnGap: 0.25rem; } } + .columns.is-variable.is-2 { + --columnGap: 0.5rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-2-mobile { + --columnGap: 0.5rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-2-tablet { + --columnGap: 0.5rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-2-tablet-only { + --columnGap: 0.5rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-2-touch { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-2-desktop { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-2-desktop-only { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-2-widescreen { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-2-widescreen-only { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-2-fullhd { + --columnGap: 0.5rem; } } + .columns.is-variable.is-3 { + --columnGap: 0.75rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-3-mobile { + --columnGap: 0.75rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-3-tablet { + --columnGap: 0.75rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-3-tablet-only { + --columnGap: 0.75rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-3-touch { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-3-desktop { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-3-desktop-only { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-3-widescreen { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-3-widescreen-only { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-3-fullhd { + --columnGap: 0.75rem; } } + .columns.is-variable.is-4 { + --columnGap: 1rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-4-mobile { + --columnGap: 1rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-4-tablet { + --columnGap: 1rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-4-tablet-only { + --columnGap: 1rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-4-touch { + --columnGap: 1rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-4-desktop { + --columnGap: 1rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-4-desktop-only { + --columnGap: 1rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-4-widescreen { + --columnGap: 1rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-4-widescreen-only { + --columnGap: 1rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-4-fullhd { + --columnGap: 1rem; } } + .columns.is-variable.is-5 { + --columnGap: 1.25rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-5-mobile { + --columnGap: 1.25rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-5-tablet { + --columnGap: 1.25rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-5-tablet-only { + --columnGap: 1.25rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-5-touch { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-5-desktop { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-5-desktop-only { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-5-widescreen { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-5-widescreen-only { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-5-fullhd { + --columnGap: 1.25rem; } } + .columns.is-variable.is-6 { + --columnGap: 1.5rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-6-mobile { + --columnGap: 1.5rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-6-tablet { + --columnGap: 1.5rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-6-tablet-only { + --columnGap: 1.5rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-6-touch { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-6-desktop { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-6-desktop-only { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-6-widescreen { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-6-widescreen-only { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-6-fullhd { + --columnGap: 1.5rem; } } + .columns.is-variable.is-7 { + --columnGap: 1.75rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-7-mobile { + --columnGap: 1.75rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-7-tablet { + --columnGap: 1.75rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-7-tablet-only { + --columnGap: 1.75rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-7-touch { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-7-desktop { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-7-desktop-only { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-7-widescreen { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-7-widescreen-only { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-7-fullhd { + --columnGap: 1.75rem; } } + .columns.is-variable.is-8 { + --columnGap: 2rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-8-mobile { + --columnGap: 2rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-8-tablet { + --columnGap: 2rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-8-tablet-only { + --columnGap: 2rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-8-touch { + --columnGap: 2rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-8-desktop { + --columnGap: 2rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-8-desktop-only { + --columnGap: 2rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-8-widescreen { + --columnGap: 2rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-8-widescreen-only { + --columnGap: 2rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-8-fullhd { + --columnGap: 2rem; } } +.tile { + align-items: stretch; + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + min-height: min-content; } + .tile.is-ancestor { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; } + .tile.is-ancestor:last-child { + margin-bottom: -0.75rem; } + .tile.is-ancestor:not(:last-child) { + margin-bottom: 0.75rem; } + .tile.is-child { + margin: 0 !important; } + .tile.is-parent { + padding: 0.75rem; } + .tile.is-vertical { + flex-direction: column; } + .tile.is-vertical > .tile.is-child:not(:last-child) { + margin-bottom: 1.5rem !important; } + @media screen and (min-width: 769px), print { + .tile:not(.is-child) { + display: flex; } + .tile.is-1 { + flex: none; + width: 8.3333333333%; } + .tile.is-2 { + flex: none; + width: 16.6666666667%; } + .tile.is-3 { + flex: none; + width: 25%; } + .tile.is-4 { + flex: none; + width: 33.3333333333%; } + .tile.is-5 { + flex: none; + width: 41.6666666667%; } + .tile.is-6 { + flex: none; + width: 50%; } + .tile.is-7 { + flex: none; + width: 58.3333333333%; } + .tile.is-8 { + flex: none; + width: 66.6666666667%; } + .tile.is-9 { + flex: none; + width: 75%; } + .tile.is-10 { + flex: none; + width: 83.3333333333%; } + .tile.is-11 { + flex: none; + width: 91.6666666667%; } + .tile.is-12 { + flex: none; + width: 100%; } } +.hero { + align-items: stretch; + display: flex; + flex-direction: column; + justify-content: space-between; } + .hero .navbar { + background: none; } + .hero .tabs ul { + border-bottom: none; } + .hero.is-white { + background-color: white; + color: #0a0a0a; } + .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-white strong { + color: inherit; } + .hero.is-white .title { + color: #0a0a0a; } + .hero.is-white .subtitle { + color: rgba(10, 10, 10, 0.9); } + .hero.is-white .subtitle a:not(.button), + .hero.is-white .subtitle strong { + color: #0a0a0a; } + @media screen and (max-width: 1055px) { + .hero.is-white .navbar-menu { + background-color: white; } } + .hero.is-white .navbar-item, + .hero.is-white .navbar-link { + color: rgba(10, 10, 10, 0.7); } + .hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active, + .hero.is-white .navbar-link:hover, + .hero.is-white .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + .hero.is-white .tabs a { + color: #0a0a0a; + opacity: 0.9; } + .hero.is-white .tabs a:hover { + opacity: 1; } + .hero.is-white .tabs li.is-active a { + opacity: 1; } + .hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a { + color: #0a0a0a; } + .hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + .hero.is-white.is-bold { + background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); } + @media screen and (max-width: 768px) { + .hero.is-white.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); } } + .hero.is-black { + background-color: #0a0a0a; + color: white; } + .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-black strong { + color: inherit; } + .hero.is-black .title { + color: white; } + .hero.is-black .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-black .subtitle a:not(.button), + .hero.is-black .subtitle strong { + color: white; } + @media screen and (max-width: 1055px) { + .hero.is-black .navbar-menu { + background-color: #0a0a0a; } } + .hero.is-black .navbar-item, + .hero.is-black .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active, + .hero.is-black .navbar-link:hover, + .hero.is-black .navbar-link.is-active { + background-color: black; + color: white; } + .hero.is-black .tabs a { + color: white; + opacity: 0.9; } + .hero.is-black .tabs a:hover { + opacity: 1; } + .hero.is-black .tabs li.is-active a { + opacity: 1; } + .hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a { + color: white; } + .hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover { + background-color: white; + border-color: white; + color: #0a0a0a; } + .hero.is-black.is-bold { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } + @media screen and (max-width: 768px) { + .hero.is-black.is-bold .navbar-menu { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } } + .hero.is-light { + background-color: whitesmoke; + color: #363636; } + .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-light strong { + color: inherit; } + .hero.is-light .title { + color: #363636; } + .hero.is-light .subtitle { + color: rgba(54, 54, 54, 0.9); } + .hero.is-light .subtitle a:not(.button), + .hero.is-light .subtitle strong { + color: #363636; } + @media screen and (max-width: 1055px) { + .hero.is-light .navbar-menu { + background-color: whitesmoke; } } + .hero.is-light .navbar-item, + .hero.is-light .navbar-link { + color: rgba(54, 54, 54, 0.7); } + .hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active, + .hero.is-light .navbar-link:hover, + .hero.is-light .navbar-link.is-active { + background-color: #e8e8e8; + color: #363636; } + .hero.is-light .tabs a { + color: #363636; + opacity: 0.9; } + .hero.is-light .tabs a:hover { + opacity: 1; } + .hero.is-light .tabs li.is-active a { + opacity: 1; } + .hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a { + color: #363636; } + .hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover { + background-color: #363636; + border-color: #363636; + color: whitesmoke; } + .hero.is-light.is-bold { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } + @media screen and (max-width: 768px) { + .hero.is-light.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } } + .hero.is-dark, .content kbd.hero { + background-color: #363636; + color: whitesmoke; } + .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-dark strong, + .content kbd.hero strong { + color: inherit; } + .hero.is-dark .title, .content kbd.hero .title { + color: whitesmoke; } + .hero.is-dark .subtitle, .content kbd.hero .subtitle { + color: rgba(245, 245, 245, 0.9); } + .hero.is-dark .subtitle a:not(.button), .content kbd.hero .subtitle a:not(.button), + .hero.is-dark .subtitle strong, + .content kbd.hero .subtitle strong { + color: whitesmoke; } + @media screen and (max-width: 1055px) { + .hero.is-dark .navbar-menu, .content kbd.hero .navbar-menu { + background-color: #363636; } } + .hero.is-dark .navbar-item, .content kbd.hero .navbar-item, + .hero.is-dark .navbar-link, + .content kbd.hero .navbar-link { + color: rgba(245, 245, 245, 0.7); } + .hero.is-dark a.navbar-item:hover, .content kbd.hero a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active, .content kbd.hero a.navbar-item.is-active, + .hero.is-dark .navbar-link:hover, + .content kbd.hero .navbar-link:hover, + .hero.is-dark .navbar-link.is-active, + .content kbd.hero .navbar-link.is-active { + background-color: #292929; + color: whitesmoke; } + .hero.is-dark .tabs a, .content kbd.hero .tabs a { + color: whitesmoke; + opacity: 0.9; } + .hero.is-dark .tabs a:hover, .content kbd.hero .tabs a:hover { + opacity: 1; } + .hero.is-dark .tabs li.is-active a, .content kbd.hero .tabs li.is-active a { + opacity: 1; } + .hero.is-dark .tabs.is-boxed a, .content kbd.hero .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a, .content kbd.hero .tabs.is-toggle a { + color: whitesmoke; } + .hero.is-dark .tabs.is-boxed a:hover, .content kbd.hero .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover, .content kbd.hero .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-dark .tabs.is-boxed li.is-active a, .content kbd.hero .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .content kbd.hero .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover { + background-color: whitesmoke; + border-color: whitesmoke; + color: #363636; } + .hero.is-dark.is-bold, .content kbd.hero.is-bold { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } + @media screen and (max-width: 768px) { + .hero.is-dark.is-bold .navbar-menu, .content kbd.hero.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } } + .hero.is-primary, .docstring > section > a.hero.docs-sourcelink { + background-color: #4eb5de; + color: #fff; } + .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), .docstring > section > a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-primary strong, + .docstring > section > a.hero.docs-sourcelink strong { + color: inherit; } + .hero.is-primary .title, .docstring > section > a.hero.docs-sourcelink .title { + color: #fff; } + .hero.is-primary .subtitle, .docstring > section > a.hero.docs-sourcelink .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-primary .subtitle a:not(.button), .docstring > section > a.hero.docs-sourcelink .subtitle a:not(.button), + .hero.is-primary .subtitle strong, + .docstring > section > a.hero.docs-sourcelink .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-primary .navbar-menu, .docstring > section > a.hero.docs-sourcelink .navbar-menu { + background-color: #4eb5de; } } + .hero.is-primary .navbar-item, .docstring > section > a.hero.docs-sourcelink .navbar-item, + .hero.is-primary .navbar-link, + .docstring > section > a.hero.docs-sourcelink .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-primary a.navbar-item:hover, .docstring > section > a.hero.docs-sourcelink a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active, .docstring > section > a.hero.docs-sourcelink a.navbar-item.is-active, + .hero.is-primary .navbar-link:hover, + .docstring > section > a.hero.docs-sourcelink .navbar-link:hover, + .hero.is-primary .navbar-link.is-active, + .docstring > section > a.hero.docs-sourcelink .navbar-link.is-active { + background-color: #39acda; + color: #fff; } + .hero.is-primary .tabs a, .docstring > section > a.hero.docs-sourcelink .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-primary .tabs a:hover, .docstring > section > a.hero.docs-sourcelink .tabs a:hover { + opacity: 1; } + .hero.is-primary .tabs li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs li.is-active a { + opacity: 1; } + .hero.is-primary .tabs.is-boxed a, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a { + color: #fff; } + .hero.is-primary .tabs.is-boxed a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-primary .tabs.is-boxed li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #4eb5de; } + .hero.is-primary.is-bold, .docstring > section > a.hero.is-bold.docs-sourcelink { + background-image: linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%); } + @media screen and (max-width: 768px) { + .hero.is-primary.is-bold .navbar-menu, .docstring > section > a.hero.is-bold.docs-sourcelink .navbar-menu { + background-image: linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%); } } + .hero.is-link { + background-color: #2e63b8; + color: #fff; } + .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-link strong { + color: inherit; } + .hero.is-link .title { + color: #fff; } + .hero.is-link .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-link .subtitle a:not(.button), + .hero.is-link .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-link .navbar-menu { + background-color: #2e63b8; } } + .hero.is-link .navbar-item, + .hero.is-link .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active, + .hero.is-link .navbar-link:hover, + .hero.is-link .navbar-link.is-active { + background-color: #2958a4; + color: #fff; } + .hero.is-link .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-link .tabs a:hover { + opacity: 1; } + .hero.is-link .tabs li.is-active a { + opacity: 1; } + .hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a { + color: #fff; } + .hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #2e63b8; } + .hero.is-link.is-bold { + background-image: linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%); } + @media screen and (max-width: 768px) { + .hero.is-link.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%); } } + .hero.is-info { + background-color: #209cee; + color: #fff; } + .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-info strong { + color: inherit; } + .hero.is-info .title { + color: #fff; } + .hero.is-info .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-info .subtitle a:not(.button), + .hero.is-info .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-info .navbar-menu { + background-color: #209cee; } } + .hero.is-info .navbar-item, + .hero.is-info .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active, + .hero.is-info .navbar-link:hover, + .hero.is-info .navbar-link.is-active { + background-color: #1190e3; + color: #fff; } + .hero.is-info .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-info .tabs a:hover { + opacity: 1; } + .hero.is-info .tabs li.is-active a { + opacity: 1; } + .hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a { + color: #fff; } + .hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #209cee; } + .hero.is-info.is-bold { + background-image: linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%); } + @media screen and (max-width: 768px) { + .hero.is-info.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%); } } + .hero.is-success { + background-color: #22c35b; + color: #fff; } + .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-success strong { + color: inherit; } + .hero.is-success .title { + color: #fff; } + .hero.is-success .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-success .subtitle a:not(.button), + .hero.is-success .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-success .navbar-menu { + background-color: #22c35b; } } + .hero.is-success .navbar-item, + .hero.is-success .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active, + .hero.is-success .navbar-link:hover, + .hero.is-success .navbar-link.is-active { + background-color: #1ead51; + color: #fff; } + .hero.is-success .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-success .tabs a:hover { + opacity: 1; } + .hero.is-success .tabs li.is-active a { + opacity: 1; } + .hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a { + color: #fff; } + .hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #22c35b; } + .hero.is-success.is-bold { + background-image: linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%); } + @media screen and (max-width: 768px) { + .hero.is-success.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%); } } + .hero.is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-warning strong { + color: inherit; } + .hero.is-warning .title { + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning .subtitle { + color: rgba(0, 0, 0, 0.9); } + .hero.is-warning .subtitle a:not(.button), + .hero.is-warning .subtitle strong { + color: rgba(0, 0, 0, 0.7); } + @media screen and (max-width: 1055px) { + .hero.is-warning .navbar-menu { + background-color: #ffdd57; } } + .hero.is-warning .navbar-item, + .hero.is-warning .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active, + .hero.is-warning .navbar-link:hover, + .hero.is-warning .navbar-link.is-active { + background-color: #ffd83e; + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; } + .hero.is-warning .tabs a:hover { + opacity: 1; } + .hero.is-warning .tabs li.is-active a { + opacity: 1; } + .hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: #ffdd57; } + .hero.is-warning.is-bold { + background-image: linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%); } + @media screen and (max-width: 768px) { + .hero.is-warning.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%); } } + .hero.is-danger { + background-color: #da0b00; + color: #fff; } + .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-danger strong { + color: inherit; } + .hero.is-danger .title { + color: #fff; } + .hero.is-danger .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-danger .subtitle a:not(.button), + .hero.is-danger .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-danger .navbar-menu { + background-color: #da0b00; } } + .hero.is-danger .navbar-item, + .hero.is-danger .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active, + .hero.is-danger .navbar-link:hover, + .hero.is-danger .navbar-link.is-active { + background-color: #c10a00; + color: #fff; } + .hero.is-danger .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-danger .tabs a:hover { + opacity: 1; } + .hero.is-danger .tabs li.is-active a { + opacity: 1; } + .hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a { + color: #fff; } + .hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #da0b00; } + .hero.is-danger.is-bold { + background-image: linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%); } + @media screen and (max-width: 768px) { + .hero.is-danger.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%); } } + .hero.is-small .hero-body, #documenter .docs-sidebar form.docs-search > input.hero .hero-body { + padding-bottom: 1.5rem; + padding-top: 1.5rem; } + @media screen and (min-width: 769px), print { + .hero.is-medium .hero-body { + padding-bottom: 9rem; + padding-top: 9rem; } } + @media screen and (min-width: 769px), print { + .hero.is-large .hero-body { + padding-bottom: 18rem; + padding-top: 18rem; } } + .hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body { + align-items: center; + display: flex; } + .hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container { + flex-grow: 1; + flex-shrink: 1; } + .hero.is-halfheight { + min-height: 50vh; } + .hero.is-fullheight { + min-height: 100vh; } + +.hero-video { + overflow: hidden; } + .hero-video video { + left: 50%; + min-height: 100%; + min-width: 100%; + position: absolute; + top: 50%; + transform: translate3d(-50%, -50%, 0); } + .hero-video.is-transparent { + opacity: 0.3; } + @media screen and (max-width: 768px) { + .hero-video { + display: none; } } +.hero-buttons { + margin-top: 1.5rem; } + @media screen and (max-width: 768px) { + .hero-buttons .button { + display: flex; } + .hero-buttons .button:not(:last-child) { + margin-bottom: 0.75rem; } } + @media screen and (min-width: 769px), print { + .hero-buttons { + display: flex; + justify-content: center; } + .hero-buttons .button:not(:last-child) { + margin-right: 1.5rem; } } +.hero-head, +.hero-foot { + flex-grow: 0; + flex-shrink: 0; } + +.hero-body { + flex-grow: 1; + flex-shrink: 0; + padding: 3rem 1.5rem; } + +.section { + padding: 3rem 1.5rem; } + @media screen and (min-width: 1056px) { + .section.is-medium { + padding: 9rem 1.5rem; } + .section.is-large { + padding: 18rem 1.5rem; } } +.footer { + background-color: #fafafa; + padding: 3rem 1.5rem 6rem; } + +h1 .docs-heading-anchor, h1 .docs-heading-anchor:hover, h1 .docs-heading-anchor:visited, h2 .docs-heading-anchor, h2 .docs-heading-anchor:hover, h2 .docs-heading-anchor:visited, h3 .docs-heading-anchor, h3 .docs-heading-anchor:hover, h3 .docs-heading-anchor:visited, h4 .docs-heading-anchor, h4 .docs-heading-anchor:hover, h4 .docs-heading-anchor:visited, h5 .docs-heading-anchor, h5 .docs-heading-anchor:hover, h5 .docs-heading-anchor:visited, h6 .docs-heading-anchor, h6 .docs-heading-anchor:hover, h6 .docs-heading-anchor:visited { + color: #222222; } + +h1 .docs-heading-anchor-permalink, h2 .docs-heading-anchor-permalink, h3 .docs-heading-anchor-permalink, h4 .docs-heading-anchor-permalink, h5 .docs-heading-anchor-permalink, h6 .docs-heading-anchor-permalink { + visibility: hidden; + vertical-align: middle; + margin-left: 0.5em; + font-size: 0.7rem; } + h1 .docs-heading-anchor-permalink::before, h2 .docs-heading-anchor-permalink::before, h3 .docs-heading-anchor-permalink::before, h4 .docs-heading-anchor-permalink::before, h5 .docs-heading-anchor-permalink::before, h6 .docs-heading-anchor-permalink::before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + content: "\f0c1"; } + +h1:hover .docs-heading-anchor-permalink, h2:hover .docs-heading-anchor-permalink, h3:hover .docs-heading-anchor-permalink, h4:hover .docs-heading-anchor-permalink, h5:hover .docs-heading-anchor-permalink, h6:hover .docs-heading-anchor-permalink { + visibility: visible; } + +.docs-dark-only { + display: none !important; } + +pre { + position: relative; + overflow: hidden; } + pre code, pre code.hljs { + padding: 0 0.75rem !important; + overflow: auto; + display: block; } + pre code:first-of-type, pre code.hljs:first-of-type { + padding-top: 0.5rem !important; } + pre code:last-of-type, pre code.hljs:last-of-type { + padding-bottom: 0.5rem !important; } + pre .copy-button { + opacity: 0.2; + transition: opacity 0.2s; + position: absolute; + right: 0em; + top: 0em; + padding: 0.5em; + width: 2.5em; + height: 2.5em; + background: transparent; + border: none; + font-family: "Font Awesome 5 Free"; + color: #222222; + cursor: pointer; + text-align: center; } + pre .copy-button:focus, pre .copy-button:hover { + opacity: 1; + background: rgba(34, 34, 34, 0.1); + color: #2e63b8; } + pre .copy-button.success { + color: #259a12; + opacity: 1; } + pre .copy-button.error { + color: #cb3c33; + opacity: 1; } + pre:hover .copy-button { + opacity: 1; } + +.admonition { + background-color: #b5b5b5; + border-style: solid; + border-width: 1px; + border-color: #363636; + border-radius: 4px; + font-size: 1rem; } + .admonition strong { + color: currentColor; } + .admonition.is-small, #documenter .docs-sidebar form.docs-search > input.admonition { + font-size: 0.75rem; } + .admonition.is-medium { + font-size: 1.25rem; } + .admonition.is-large { + font-size: 1.5rem; } + .admonition.is-default { + background-color: #b5b5b5; + border-color: #363636; } + .admonition.is-default > .admonition-header { + background-color: #363636; + color: #fff; } + .admonition.is-default > .admonition-body { + color: #fff; } + .admonition.is-info { + background-color: #def0fc; + border-color: #209cee; } + .admonition.is-info > .admonition-header { + background-color: #209cee; + color: #fff; } + .admonition.is-info > .admonition-body { + color: rgba(0, 0, 0, 0.7); } + .admonition.is-success { + background-color: #bdf4d1; + border-color: #22c35b; } + .admonition.is-success > .admonition-header { + background-color: #22c35b; + color: #fff; } + .admonition.is-success > .admonition-body { + color: rgba(0, 0, 0, 0.7); } + .admonition.is-warning { + background-color: #fff3c5; + border-color: #ffdd57; } + .admonition.is-warning > .admonition-header { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .admonition.is-warning > .admonition-body { + color: rgba(0, 0, 0, 0.7); } + .admonition.is-danger { + background-color: #ffaba7; + border-color: #da0b00; } + .admonition.is-danger > .admonition-header { + background-color: #da0b00; + color: #fff; } + .admonition.is-danger > .admonition-body { + color: rgba(0, 0, 0, 0.7); } + .admonition.is-compat { + background-color: #bdeff5; + border-color: #1db5c9; } + .admonition.is-compat > .admonition-header { + background-color: #1db5c9; + color: #fff; } + .admonition.is-compat > .admonition-body { + color: rgba(0, 0, 0, 0.7); } + +.admonition-header { + color: #fff; + background-color: #363636; + align-items: center; + font-weight: 700; + justify-content: space-between; + line-height: 1.25; + padding: 0.5rem 0.75rem; + position: relative; } + .admonition-header:before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + margin-right: 0.75rem; + content: "\f06a"; } + +.admonition-body { + color: #222222; + padding: 0.5rem 0.75rem; } + .admonition-body pre { + background-color: whitesmoke; } + .admonition-body code { + background-color: rgba(0, 0, 0, 0.05); } + +.docstring { + margin-bottom: 1em; + background-color: transparent; + border: 1px solid #dbdbdb; + box-shadow: 2px 2px 3px rgba(10, 10, 10, 0.1); + max-width: 100%; } + .docstring > header { + display: flex; + flex-grow: 1; + align-items: stretch; + padding: 0.5rem 0.75rem; + background-color: whitesmoke; + box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); + box-shadow: none; + border-bottom: 1px solid #dbdbdb; } + .docstring > header code { + background-color: transparent; } + .docstring > header .docstring-binding { + margin-right: 0.3em; } + .docstring > header .docstring-category { + margin-left: 0.3em; } + .docstring > section { + position: relative; + padding: 0.75rem 0.75rem; + border-bottom: 1px solid #dbdbdb; } + .docstring > section:last-child { + border-bottom: none; } + .docstring > section > a.docs-sourcelink { + transition: opacity 0.3s; + opacity: 0; + position: absolute; + right: 0.375rem; + bottom: 0.375rem; } + .docstring > section > a.docs-sourcelink:focus { + opacity: 1 !important; } + .docstring:hover > section > a.docs-sourcelink { + opacity: 0.2; } + .docstring:focus-within > section > a.docs-sourcelink { + opacity: 0.2; } + .docstring > section:hover a.docs-sourcelink { + opacity: 1; } + +.documenter-example-output { + background-color: white; } + +.outdated-warning-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + z-index: 999; + background-color: #ffaba7; + color: rgba(0, 0, 0, 0.7); + border-bottom: 3px solid #da0b00; + padding: 10px 35px; + text-align: center; + font-size: 15px; } + .outdated-warning-overlay .outdated-warning-closer { + position: absolute; + top: calc(50% - 10px); + right: 18px; + cursor: pointer; + width: 12px; } + .outdated-warning-overlay a { + color: #2e63b8; } + .outdated-warning-overlay a:hover { + color: #363636; } + +.content pre { + border: 1px solid #dbdbdb; } + +.content code { + font-weight: inherit; } + +.content a code { + color: #2e63b8; } + +.content h1 code, .content h2 code, .content h3 code, .content h4 code, .content h5 code, .content h6 code { + color: #222222; } + +.content table { + display: block; + width: initial; + max-width: 100%; + overflow-x: auto; } + +.content blockquote > ul:first-child, .content blockquote > ol:first-child, .content .admonition-body > ul:first-child, .content .admonition-body > ol:first-child { + margin-top: 0; } + +pre, code { + font-variant-ligatures: no-contextual; } + +.breadcrumb a.is-disabled { + cursor: default; + pointer-events: none; } + .breadcrumb a.is-disabled, .breadcrumb a.is-disabled:hover { + color: #222222; } + +.hljs { + background: initial !important; } + +.katex .katex-mathml { + top: 0; + right: 0; } + +.katex-display, mjx-container, .MathJax_Display { + margin: 0.5em 0 !important; } + +html { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; } + +li.no-marker { + list-style: none; } + +/* This file contain the overall layout. + * + * The main container is
    that is identified by id #documenter. + */ +#documenter .docs-main > article { + overflow-wrap: break-word; } + #documenter .docs-main > article .math-container { + overflow-x: auto; + overflow-y: hidden; } + +@media screen and (min-width: 1056px) { + #documenter .docs-main { + max-width: 52rem; + margin-left: 20rem; + padding-right: 1rem; } } + +@media screen and (max-width: 1055px) { + #documenter .docs-main { + width: 100%; } + #documenter .docs-main > article { + max-width: 52rem; + margin-left: auto; + margin-right: auto; + margin-bottom: 1rem; + padding: 0 1rem; } + #documenter .docs-main > header, #documenter .docs-main > nav { + max-width: 100%; + width: 100%; + margin: 0; } } + +#documenter .docs-main header.docs-navbar { + background-color: white; + border-bottom: 1px solid #dbdbdb; + z-index: 2; + min-height: 4rem; + margin-bottom: 1rem; + display: flex; } + #documenter .docs-main header.docs-navbar .breadcrumb { + flex-grow: 1; } + #documenter .docs-main header.docs-navbar .docs-right { + display: flex; + white-space: nowrap; } + #documenter .docs-main header.docs-navbar .docs-right .docs-icon, #documenter .docs-main header.docs-navbar .docs-right .docs-label, #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { + display: inline-block; } + #documenter .docs-main header.docs-navbar .docs-right .docs-label { + padding: 0; + margin-left: 0.3em; } + #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button { + margin: auto 0 auto 1rem; } + #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { + font-size: 1.5rem; + margin: auto 0 auto 1rem; } + #documenter .docs-main header.docs-navbar > * { + margin: auto 0; } + @media screen and (max-width: 1055px) { + #documenter .docs-main header.docs-navbar { + position: sticky; + top: 0; + padding: 0 1rem; + /* For Headroom.js */ + transition-property: top, box-shadow; + -webkit-transition-property: top, box-shadow; + /* Safari */ + transition-duration: 0.3s; + -webkit-transition-duration: 0.3s; + /* Safari */ } + #documenter .docs-main header.docs-navbar.headroom--not-top { + box-shadow: 0.2rem 0rem 0.4rem #bbb; + transition-duration: 0.7s; + -webkit-transition-duration: 0.7s; + /* Safari */ } + #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom { + top: -4.5rem; + transition-duration: 0.7s; + -webkit-transition-duration: 0.7s; + /* Safari */ } } +#documenter .docs-main section.footnotes { + border-top: 1px solid #dbdbdb; } + #documenter .docs-main section.footnotes li .tag:first-child, #documenter .docs-main section.footnotes li .docstring > section > a.docs-sourcelink:first-child, #documenter .docs-main section.footnotes li .content kbd:first-child, .content #documenter .docs-main section.footnotes li kbd:first-child { + margin-right: 1em; + margin-bottom: 0.4em; } + +#documenter .docs-main .docs-footer { + display: flex; + flex-wrap: wrap; + margin-left: 0; + margin-right: 0; + border-top: 1px solid #dbdbdb; + padding-top: 1rem; + padding-bottom: 1rem; } + @media screen and (max-width: 1055px) { + #documenter .docs-main .docs-footer { + padding-left: 1rem; + padding-right: 1rem; } } + #documenter .docs-main .docs-footer .docs-footer-nextpage, #documenter .docs-main .docs-footer .docs-footer-prevpage { + flex-grow: 1; } + #documenter .docs-main .docs-footer .docs-footer-nextpage { + text-align: right; } + #documenter .docs-main .docs-footer .flexbox-break { + flex-basis: 100%; + height: 0; } + #documenter .docs-main .docs-footer .footer-message { + font-size: 0.8em; + margin: 0.5em auto 0 auto; + text-align: center; } + +#documenter .docs-sidebar { + display: flex; + flex-direction: column; + color: #0a0a0a; + background-color: whitesmoke; + border-right: 1px solid #dbdbdb; + padding: 0; + flex: 0 0 18rem; + z-index: 5; + font-size: 1rem; + position: fixed; + left: -18rem; + width: 18rem; + height: 100%; + transition: left 0.3s; + /* Setting up a nicer theme style for the scrollbar */ } + #documenter .docs-sidebar.visible { + left: 0; + box-shadow: 0.4rem 0rem 0.8rem #bbb; } + @media screen and (min-width: 1056px) { + #documenter .docs-sidebar.visible { + box-shadow: none; } } + @media screen and (min-width: 1056px) { + #documenter .docs-sidebar { + left: 0; + top: 0; } } + #documenter .docs-sidebar .docs-logo { + margin-top: 1rem; + padding: 0 1rem; } + #documenter .docs-sidebar .docs-logo > img { + max-height: 6rem; + margin: auto; } + #documenter .docs-sidebar .docs-package-name { + flex-shrink: 0; + font-size: 1.5rem; + font-weight: 700; + text-align: center; + white-space: nowrap; + overflow: hidden; + padding: 0.5rem 0; } + #documenter .docs-sidebar .docs-package-name .docs-autofit { + max-width: 16.2rem; } + #documenter .docs-sidebar .docs-package-name a, #documenter .docs-sidebar .docs-package-name a:hover { + color: #0a0a0a; } + #documenter .docs-sidebar .docs-version-selector { + border-top: 1px solid #dbdbdb; + display: none; + padding: 0.5rem; } + #documenter .docs-sidebar .docs-version-selector.visible { + display: flex; } + #documenter .docs-sidebar ul.docs-menu { + flex-grow: 1; + user-select: none; + border-top: 1px solid #dbdbdb; + padding-bottom: 1.5rem; + /* Managing collapsible submenus */ } + #documenter .docs-sidebar ul.docs-menu > li > .tocitem { + font-weight: bold; } + #documenter .docs-sidebar ul.docs-menu > li li { + font-size: 0.95rem; + margin-left: 1em; + border-left: 1px solid #dbdbdb; } + #documenter .docs-sidebar ul.docs-menu input.collapse-toggle { + display: none; } + #documenter .docs-sidebar ul.docs-menu ul.collapsed { + display: none; } + #documenter .docs-sidebar ul.docs-menu input:checked ~ ul.collapsed { + display: block; } + #documenter .docs-sidebar ul.docs-menu label.tocitem { + display: flex; } + #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label { + flex-grow: 2; } + #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron { + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + font-size: 0.75rem; + margin-left: 1rem; + margin-top: auto; + margin-bottom: auto; } + #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + content: "\f054"; } + #documenter .docs-sidebar ul.docs-menu input:checked ~ label.tocitem .docs-chevron::before { + content: "\f078"; } + #documenter .docs-sidebar ul.docs-menu .tocitem { + display: block; + padding: 0.5rem 0.5rem; } + #documenter .docs-sidebar ul.docs-menu .tocitem, #documenter .docs-sidebar ul.docs-menu .tocitem:hover { + color: #0a0a0a; + background: whitesmoke; } + #documenter .docs-sidebar ul.docs-menu a.tocitem:hover, #documenter .docs-sidebar ul.docs-menu label.tocitem:hover { + color: #0a0a0a; + background-color: #ebebeb; } + #documenter .docs-sidebar ul.docs-menu li.is-active { + border-top: 1px solid #dbdbdb; + border-bottom: 1px solid #dbdbdb; + background-color: white; } + #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem, #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover { + background-color: white; + color: #0a0a0a; } + #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover { + background-color: #ebebeb; + color: #0a0a0a; } + #documenter .docs-sidebar ul.docs-menu > li.is-active:first-child { + border-top: none; } + #documenter .docs-sidebar ul.docs-menu ul.internal { + margin: 0 0.5rem 0.5rem; + border-top: 1px solid #dbdbdb; } + #documenter .docs-sidebar ul.docs-menu ul.internal li { + font-size: 0.85rem; + border-left: none; + margin-left: 0; + margin-top: 0.5rem; } + #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem { + width: 100%; + padding: 0; } + #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before { + content: "⚬"; + margin-right: 0.4em; } + #documenter .docs-sidebar form.docs-search { + margin: auto; + margin-top: 0.5rem; + margin-bottom: 0.5rem; } + #documenter .docs-sidebar form.docs-search > input { + width: 14.4rem; } + @media screen and (min-width: 1056px) { + #documenter .docs-sidebar ul.docs-menu { + overflow-y: auto; + -webkit-overflow-scroll: touch; } + #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar { + width: .3rem; + background: none; } + #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb { + border-radius: 5px 0px 0px 5px; + background: #e0e0e0; } + #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover { + background: #cccccc; } } + @media screen and (max-width: 1055px) { + #documenter .docs-sidebar { + overflow-y: auto; + -webkit-overflow-scroll: touch; } + #documenter .docs-sidebar::-webkit-scrollbar { + width: .3rem; + background: none; } + #documenter .docs-sidebar::-webkit-scrollbar-thumb { + border-radius: 5px 0px 0px 5px; + background: #e0e0e0; } + #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover { + background: #cccccc; } } +#documenter .docs-main #documenter-search-info { + margin-bottom: 1rem; } + +#documenter .docs-main #documenter-search-results { + list-style-type: circle; + list-style-position: outside; } + #documenter .docs-main #documenter-search-results li { + margin-left: 2rem; } + #documenter .docs-main #documenter-search-results .docs-highlight { + background-color: yellow; } + +.ansi span.sgr1 { + font-weight: bolder; } + +.ansi span.sgr2 { + font-weight: lighter; } + +.ansi span.sgr3 { + font-style: italic; } + +.ansi span.sgr4 { + text-decoration: underline; } + +.ansi span.sgr7 { + color: white; + background-color: #222222; } + +.ansi span.sgr8 { + color: transparent; } + .ansi span.sgr8 span { + color: transparent; } + +.ansi span.sgr9 { + text-decoration: line-through; } + +.ansi span.sgr30 { + color: #242424; } + +.ansi span.sgr31 { + color: #a7201f; } + +.ansi span.sgr32 { + color: #066f00; } + +.ansi span.sgr33 { + color: #856b00; } + +.ansi span.sgr34 { + color: #2149b0; } + +.ansi span.sgr35 { + color: #7d4498; } + +.ansi span.sgr36 { + color: #007989; } + +.ansi span.sgr37 { + color: gray; } + +.ansi span.sgr40 { + background-color: #242424; } + +.ansi span.sgr41 { + background-color: #a7201f; } + +.ansi span.sgr42 { + background-color: #066f00; } + +.ansi span.sgr43 { + background-color: #856b00; } + +.ansi span.sgr44 { + background-color: #2149b0; } + +.ansi span.sgr45 { + background-color: #7d4498; } + +.ansi span.sgr46 { + background-color: #007989; } + +.ansi span.sgr47 { + background-color: gray; } + +.ansi span.sgr90 { + color: #616161; } + +.ansi span.sgr91 { + color: #cb3c33; } + +.ansi span.sgr92 { + color: #0e8300; } + +.ansi span.sgr93 { + color: #a98800; } + +.ansi span.sgr94 { + color: #3c5dcd; } + +.ansi span.sgr95 { + color: #9256af; } + +.ansi span.sgr96 { + color: #008fa3; } + +.ansi span.sgr97 { + color: whitesmoke; } + +.ansi span.sgr100 { + background-color: #616161; } + +.ansi span.sgr101 { + background-color: #cb3c33; } + +.ansi span.sgr102 { + background-color: #0e8300; } + +.ansi span.sgr103 { + background-color: #a98800; } + +.ansi span.sgr104 { + background-color: #3c5dcd; } + +.ansi span.sgr105 { + background-color: #9256af; } + +.ansi span.sgr106 { + background-color: #008fa3; } + +.ansi span.sgr107 { + background-color: whitesmoke; } + +code.language-julia-repl > span.hljs-meta { + color: #066f00; + font-weight: bolder; } + +/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/ +/* +This is left on purpose making default.css the single file that can be lifted +as-is from the repository directly without the need for a build step + +Typically this "required" baseline CSS is added by `makestuff.js` during build. +*/ +pre code.hljs { + display: block; + overflow-x: auto; } + +code.hljs { + padding: 3px 5px; } + +/* end baseline CSS */ +.hljs { + background: #F0F0F0; + color: #444; } + +/* Base color: saturation 0; */ +.hljs-subst { + /* default */ } + +/* purposely ignored */ +.hljs-comment { + color: #888888; } + +.hljs-tag, +.hljs-punctuation { + color: #444a; } + +.hljs-tag .hljs-name, +.hljs-tag .hljs-attr { + color: #444; } + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; } + +/* User color: hue: 0 */ +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; } + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; } + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-operator, +.hljs-selector-pseudo { + color: #BC6060; } + +/* Language color: hue: 90; */ +.hljs-literal { + color: #78A960; } + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; } + +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199; } + +.hljs-meta .hljs-string { + color: #4d99bf; } + +/* Misc effects */ +.hljs-emphasis { + font-style: italic; } + +.hljs-strong { + font-weight: bold; } diff --git a/stable/assets/themeswap.js b/stable/assets/themeswap.js new file mode 100644 index 0000000..c58e993 --- /dev/null +++ b/stable/assets/themeswap.js @@ -0,0 +1,66 @@ +// Small function to quickly swap out themes. Gets put into the tag.. +function set_theme_from_local_storage() { + // Intialize the theme to null, which means default + var theme = null; + // If the browser supports the localstorage and is not disabled then try to get the + // documenter theme + if(window.localStorage != null) { + // Get the user-picked theme from localStorage. May be `null`, which means the default + // theme. + theme = window.localStorage.getItem("documenter-theme"); + } + // Check if the browser supports user color preference + var darkPreference = false; + // Check if the users preference is for dark color scheme + if(window.matchMedia('(prefers-color-scheme: dark)').matches === true) { + darkPreference = true; + } + // Initialize a few variables for the loop: + // + // - active: will contain the index of the theme that should be active. Note that there + // is no guarantee that localStorage contains sane values. If `active` stays `null` + // we either could not find the theme or it is the default (primary) theme anyway. + // Either way, we then need to stick to the primary theme. + // + // - disabled: style sheets that should be disabled (i.e. all the theme style sheets + // that are not the currently active theme) + var active = null; var disabled = []; var darkTheme = null; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if(themename === null) continue; + // To distinguish the default (primary) theme, it needs to have the data-theme-primary + // attribute set. + var isprimary = (ss.ownerNode.getAttribute("data-theme-primary") !== null); + // Check if the theme is primary dark theme + var isDarkTheme = (ss.ownerNode.getAttribute("data-theme-primary-dark") !== null); + // If ss is for dark theme then set the value of darkTheme to the name of the theme + if(isDarkTheme) darkTheme = themename; + // If we find a matching theme (and it's not the default), we'll set active to non-null + if(themename === theme) active = i; + // Store the style sheets of inactive themes so that we could disable them + if(themename !== theme) disabled.push(ss); + } + if(active !== null) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName('html')[0].className = "theme--" + theme; + // and (2) disable all the other theme stylesheets + disabled.forEach(function(ss){ + ss.disabled = true; + }); + } + else if(darkTheme !== null && darkPreference === true) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName('html')[0].className = "theme--" + darkTheme; + // and (2) disable all the other theme stylesheets + disabled.forEach(function(ss){ + if (ss.ownerNode.getAttribute("data-theme-name") !== darkTheme) { + ss.disabled = true; + } + }); + } +} +set_theme_from_local_storage(); diff --git a/stable/assets/warner.js b/stable/assets/warner.js new file mode 100644 index 0000000..5531c88 --- /dev/null +++ b/stable/assets/warner.js @@ -0,0 +1,49 @@ +function maybeAddWarning () { + // DOCUMENTER_NEWEST is defined in versions.js, DOCUMENTER_CURRENT_VERSION and DOCUMENTER_STABLE + // in siteinfo.js. + // If either of these are undefined something went horribly wrong, so we abort. + if ( + window.DOCUMENTER_NEWEST === undefined || + window.DOCUMENTER_CURRENT_VERSION === undefined || + window.DOCUMENTER_STABLE === undefined + ) { + return + }; + + // Current version is not a version number, so we can't tell if it's the newest version. Abort. + if (!/v(\d+\.)*\d+/.test(window.DOCUMENTER_CURRENT_VERSION)) { + return + }; + + // Current version is newest version, so no need to add a warning. + if (window.DOCUMENTER_NEWEST === window.DOCUMENTER_CURRENT_VERSION) { + return + }; + + // Add a noindex meta tag (unless one exists) so that search engines don't index this version of the docs. + if (document.body.querySelector('meta[name="robots"]') === null) { + const meta = document.createElement('meta'); + meta.name = 'robots'; + meta.content = 'noindex'; + + document.getElementsByTagName('head')[0].appendChild(meta); + }; + + const div = document.createElement('div'); + div.classList.add('outdated-warning-overlay'); + const closer = document.createElement('button'); + closer.classList.add('outdated-warning-closer', 'delete'); + closer.addEventListener('click', function () { + document.body.removeChild(div); + }); + const href = window.documenterBaseURL + '/../' + window.DOCUMENTER_STABLE; + div.innerHTML = 'This documentation is not for the latest stable release, but for either the development version or an older release.
    Click here to go to the documentation for the latest stable release.'; + div.appendChild(closer); + document.body.appendChild(div); +}; + +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', maybeAddWarning); +} else { + maybeAddWarning(); +}; diff --git a/stable/index.html b/stable/index.html new file mode 100644 index 0000000..d5c6457 --- /dev/null +++ b/stable/index.html @@ -0,0 +1,7 @@ + +Home · Modia

    Modia Documentation

    Modia is an environment in form of a Julia package to model and simulate physical systems (electrical, mechanical, thermo-dynamical, etc.) described by differential and algebraic equations. A user defines a model on a high level with model components (like a mechanical body, an electrical resistance, or a pipe) that are physically connected together. A model component is constructed by expression = expression equations or by Julia structs/functions, such as the pre-defined Modia3D multibody components. The defined model is symbolically processed (for example, equations might be analytically differentiated) with algorithms from package ModiaBase.jl. From the transformed model a Julia function is generated that is used to simulate the model with integrators from DifferentialEquations.jl. The basic type of the floating point variables is usually Float64, but can be set to any type FloatType <: AbstractFloat via @instantiateModel(..., FloatType = xxx), for example it can be set to Float32, DoubleFloat, Measurement{Float64}, StaticParticles{Float64,100}.

    Installation

    The package is registered and is installed with (Julia >= 1.7 is required):

    julia> ]add Modia

    Furthermore, one or more of the following packages should be installed in order to be able to generate plots:

    julia> ]add SignalTablesInterface_PyPlot        # if plotting with PyPlot desired
    +
    +        # currently under registration
    +        add SignalTablesInterface_GLMakie       # if plotting with GLMakie desired
    +        add SignalTablesInterface_WGLMakie      # if plotting with WGLMakie desired
    +        add SignalTablesInterface_CairoMakie    # if plotting with CairoMakie desired

    or call t = getValues(instantiatedModel, "time"), y = getValues(instantiatedModel, "y") to retrieve the results in form of vectors and arrays and use any desired plot package for plotting, e.g., plot(t,y).

    Note, Modia reexports the following definitions

    • using Unitful
    • using DifferentialEquations
    • using SignalTables
    • and exports functions CVODE_BDF and IDA of Sundials.jl.

    As a result, it is usually sufficient to have using Modia in a model to utilize the relevant functionalities of these packages.

    Release Notes

    Version 0.12.0

    • Improved documentation of built-in component functions.

    Non-backwards compatible changes

    • Renamed struct SimulationModel to InstantiatedModel.
    • Renamed function get_scalar_x_segmented_value to copy_scalar_x_segmented_value_from_state
    • Renamed function get_SVector3_x_segmented_value to copy_SVector3_x_segmented_value_from_state
    • Renamed function get_Vector_x_segmented_value! to copy_Vector_x_segmented_value_from_state
    • Renamed function add_der_x_segmented_value! to copy_der_x_segmented_value_to_state
    • Renamed function add_w_segmented_value! to copy_w_segmented_value_to_result

    Version 0.11.0

    • Require ModiaBase 0.11.1
    • Manifest.toml file removed.
    • test.yml for github actions changed to use Julia 1.9.0

    Non-backwards compatible changes

    These changes only influence models that use the new feature of built-in components.

    • _buildFunction argument list changed (options of @instantiateModel added)

    Version 0.10.0

    • Initial support of segmented simulations where the number of states can change during simulation. For examples, see Modia/test/TestHeatTransfer2.jl and models in directory Modia3D/test/Segmented (of release 0.12.0 and later). The tutorial will be updated for this feature in an upcoming version.

    Non-backwards compatible changes

    These changes should usually not influence user models.

    • _buildFunction = <functionName> changed to _buildFunction = Par(functionName = <functionName>) and changed argument list of <functionName>.
    • _instantiateFunction = Par(..) changed to _initSegmentFunction = Par(functionName = <functionName>) and changed argument list of <functionName>.

    Version 0.9.4

    • Precompile statements included (compilation of Modia package takes more time, but startup of Modia model simulations is faster).
    • @instantiateModel(..., logFile=true): New keyword argument logFile in order that log of file and line number can be switched off, when @instantiateModel is called.
    • Error messages improved, when model errors result in failed evaluation of parameters.
    • Log of statistics improved and included in writeSignalTable(..) of instantiatedModel.
    • SignalTables.getSignalNames(..): Order of signal names improved so that the linear listing reflects the hierarchy of the names.
    • writeSignalTable(..): attributes renamed to _attributes. All used simulate!(..) options included in Map experiment.
    • Require SignalTables 0.4.2 (since several issues fixed with writeSignalTable(..)).
    • Update to newest versions of packages.

    Bug fixes

    • DifferentialEquations 7.6.0 introduced a non-backwards compatible change with #867. Modia was corrected to cope with this change (based on #162).
    • @instantiateModel(..., logCalculations=true) skipped actual computations. This was fixed via #161.

    Version 0.9.3

    • Requires SignalTables 0.4.0 (introduces Map-signal)
    • getSignalNames(...; getVar=true, getPar=true, getMap=true): New keyword arguments to filter names.
    • writeSignalTable(...) of instantiatedModel: Include attributes = Map(model=..., experiment=...).
    • Some internal bug-fixes.

    Version 0.9.2

    • Bug fix: integrator IDA() can be used (especially to avoid solving large linear equation systems in the model).
      Extend some test models to use IDA().

    Version 0.9.1

    • Requires SignalTables 0.3.5.
    • @usingModiaPlot: corrected and fixed in docu. Alternatively, @usingPlotPackage can be used, provided package SignalTables is present in your current environment.
    • Internal: A function call in the generated code prefixed with Modia..

    Version 0.9.0

    • This version is slightly non-backwards compatible to 0.8.x. Most important, the result handling has been changed. Especially, package ModiaResult.jl has been replaced by package SignalTables.jl. Also the plot package interfaces SignalTablesInterface_PyPlot, SignalTablesInterface_GLMakie etc. have been replaced by packages SignalTablesInterface_PyPlot, SignalTablesInterface_GLMakie etc.
      In order that plotting works again with your models, you have to add one of the new plot package interfaces, e.g. ]add SignalTablesInterface_PyPlot. One benefit is, that the plot packages have now access to all attributes associated with a variable.
    • An instantiated model (as returned from @instantiateModel(..)) is now a signal table according to SignalTables.jl. This means that all functions defined for a signal table (see function overview) can be applied on a simulated model. Hereby, all Var(..) and Par(..) Modia variables are seen as signals of the signal table (so both time varying variables, as well as parameters). See example Modia/test/TestFirstOrder2.jl.
      For example, it is now possible to store simulation results (together with all parameter and start values) on file in JSON format with writeSignalTable(filename, instantiatedModel) (or in HDF5 format via JDL). You get an overview of a simulation result via showInfo(instantiatedModel).
    • New functions to add states and algebraic variables from within functions that are not visible in the generated code (see Variables of built-in Components and example Modia/test/TestLinearSystems.jl). This feature is used in the next version of Modia3D to allow (Modia3D) model changes after code generation and to get more light weight code.
    • simulate!(..): Maximum number of iterations is switched off (DifferentialEquations.jl option set to: maxiters = Int(typemax(Int32)) ≈ 2e9).
    • Docu improved.

    Bug fixes

    1. A hierarchical model name with a derivative operator, say der(a.b.c), has now the correct name a.b.der(c) in the result. For example, the plot command needs to be changed to plot(..., "a.b.der(c)") instead of the previous command plot(..., "der(a.b.c)").
    2. The initial state vector was not always correctly filled with start/init values of the model (is now fixed).
    3. signalNames(instantiatedModel) did sometimes not show the correct signal names available in the result (is now fixed). signalNames is deprecated. Use instead getSignalNames.

    Non-backwards compatible changes

    • Bug fix 1 can lead for some models to warnings and the selected variable is no longer plotted (-> the model needs to be changed).
    • Bug fix 2 can lead for some models to a different result (without notice).
    • The result data structure is now constructed with deepcopy(..) of every involved result variable. Previously, for some result variables just the variable reference was stored. The effect is that if previously a complex internal data structure was incorporated into the result data structure, then it was present just once. Now, a deepcopy of the data structure is stored at every time instant. Note, a variable v (especially, a complex internal data structure) is not stored in the result if defined as v = Var(hideResult=true). In some rare cases, deepcopy(..) gives an error (if module variables are, for whatever reason, tried to be copied). Such variables v need to be declared with v = Var(hideResult=true), in order that this error does not appear (and these variables are then not stored in the result).
    • Function rawSignal(instantiatedModel, name) is no longer supported. Use getValues or getSignal instead.
    • Function getPlotSignal(instantiatedModel, name) is no longer supported. Use getFlattenedSignal instead.
    • Function getPath(path, ...) does no longer return a dictionary but a SignalTable.

    Version 0.8.4

    • Fix issue with DiffEqBase, version 6.91.6 and later.

    Version 0.8.3

    • Bug fix: Parameters that are Numbers, but not AbstractFloats, and have no unit defined, e.g. a Bool or an Int parameter, are no longer converted to FloatType in the generated Code.

    Version 0.8.2

    • New exported functions
      • modelToJSON(model; expressionsAsStrings=true)
      • JSONToModel(json)
      • writeModel(filename, model; log=true)
      • readModel(filename; log=true)
      writeModel saves the model in JSON format on file and readModel reads the model from a JSON file.
    • Modia/examples/ServoSystem.jl enhanced, so that the hierarchical model with units is first stored in JSON format on file, then the model is read from file, a parameter is modified, and then the model is passed to @instantiateModel(..).
    • @instantiateModel(...):
      • @instantiateModel(..., logCode=true, ...) provides now correct unit type casts for scalars.
      • @instantiateModel(..., saveCodeOnFile=fileName, ...) stores the generated code on file fileName.
      • Automatically use @instantiatedModel(..., unitless=true, ..), if FloatType = MonteCarloMeasurements.XXX, because there are easily cases where this fails, if units are present.
    • @showModel model: Nicer pretty print if model is hierarchical.
    • New function Modia.unitAsString(unitOfQuantity), see Unitful issue 412 (https://github.com/PainterQubits/Unitful.jl/issues/412).
    • Remove empty hierarchies in model parameters (seen with simulate!(..., logParameters=true)).
    • Memory allocation reduced if states or tearing variables are SVectors.
    • Improved casting and checking of types in the generated code (see new test model Modia/test/TestUnitAsString.jl).
    • Moved ModiaBase.Symbolic.makeDerVar from ModiaBase to new file Modia/src/Symbolic.jl (because makeDerVar needs FloatType for generating type-stable code and FloatType is available in Modia but not in ModiaBase).
    • Github actions workflow added for automatic tests on Linux/Windows/MacOS, for pull requests on main.

    Bug fixes

    • Fixed issue with unit on macOS (exponents had been displayed as Unicode superscripts when converting the unit to a string, leading to errors in the further processing).
    • Hide result only if Var(hideResult=true) (previously, hideResult=false was treated as true).
    • Modia/models/Rotational.jl: Change some Int to Float64 values, because errors occured in some situations.

    Version 0.8.1

    • Missing file Modia/test/TestLinearEquations.jl added.

    Version 0.8.0

    Non-backwards compatible changes

    The Modia packages are slightly restructured to allow more efficient operations. Previously, Modia was planned to include all the functionality with all model libraries. This is now changed and Modia includes now equation-oriented modeling and basic model libraries. Further model libraries, such as Modia3D (and other model libraries in the future) must be explicitly imported and are no longer automatically imported by Modia. To simplify the structuring, ModiaLang is merged into Modia and some functionality for the code generation is moved from ModiaBase to Modia. Overall, the benefit is that loading and compilation times are reduced, if Modia3D is not needed. Furthermore, the generated code contains only references to Modia functionality and no longer to ModiaBase. Details of the changes:

    • ModiaLang#main 0.11.3 and ModiaLang#development merged into Modia 0.7.0 resulting in the new Modia version 0.8.0 (hereby history of both ModiaLang and of Modia is preserved).
    • Modia3D is removed from Modia (so when a model is using Modia3D, the package must be explicitly imported and is no longer automatically imported from Modia).
    • Require ModiaBase 0.10 (where EquationAndStateInfo.jl and StateSelection.jl are removed and added to Modia, in order that only references to Modia are in the generated code and no longer references to ModiaBase).

    Old Release Notes (until 28.2.2022)

    Release Notes of Modia (until 28.2.2022)

    Version 0.7.0

    Non-backwards compatible changes (basically, these changes are, erronously, in 0.6.1):

    • Equations can only be defined with key equations and no other key (still, expressions can be associated with one variable, such as b = Var(:(2*a))). In versions 0.6.0 and before, equations could be associated with any key.
    • The merge operator | appends the expression vectors of equations, so m1 | m2 basically appends the vector of m2.equations to the vector of m1.equations. In versions 0.6.0 and before, the merge operator did not handle equations specially, and therefore m1 | m2 replaced m1.equations by m2.equations.
    • Parameter values in the code are now type cast to the type of the parameter value from the @instantiatedModel(..) call. The benefit is that access of parameter values in the code is type stable and operations with the parameter value are more efficient and at run-time no memory is allocated. Existing models can no longer be simulated, if parameter values provided via simulate!(.., merge=xx) are not type compatible to their definition. For example, an error is thrown if the @instantedModel(..) uses a Float64 value and the simulate!(.., merge=xx) uses a Measurement{Float64} value for the same parameter
    • Operator buildModia3D(..) as used in Modia3D models is removed. Instead, the new constructor Model3D(..) must be used at the top level of a Modia3D definition. It is now possible to define several, independent multibody systems (currently, only one of them can have animation and animation export).
    • Var(init=[...]) or Var(start=[..]) of FreeMotion joints must be defined as Var(init=SVector{3,Float64}(..)) or Var(start=SVector{3,Float64}(..)). Otherwise, errors occur during compilation.

    Other changes

    • Documentation (especially tutorial) adapted to the new version.
    • Examples and test models (Modia/examples, Modia/tests) adapted to the new version, especially to the non-backwards compatible changes.
    • For further changes of equation-based models, see the release notes of ModiaLang 0.11.0.
    • For further changes of Modia3D models, see the release notes of Modia3D 0.9.0.

    Version 0.6.1

    This version was erronously released as 0.6.1. Since it contains non-backwards compatible changes with respect to 0.6.0, this is wrong and should have been released as version 0.7.0.

    • Project.toml and Manifest.toml updated due to new versions of Modia3D and ModiaLang
    • docu: fix some typing and formatting

    Version 0.6.0

    • Modia is restricted to Julia 1.7
    • cyclic dependencies with Modia3D package are removed

    Version 0.5.2

    Version 0.5.1

    Version 0.5.0

    • Using and reexporting ModiaLang 0.8.1 (see release notes).
    • Using and partially reexporting Modia3D 0.5.0 (see release notes).
    • New plot package interface via ModiaResult. Additional support for PyPlot, WGLMakie, CairoMakie (besides GLMakie).

    Version 0.4.0

    • Initial version of new Modia design.

    Release Notes of ModiaLang (until 28.2.2022)

    Version 0.11.3

    • @instantiateModel(..): Var(hideResult=true) is no longer ignored if present in a sub-component.
    • simulate!(..): Unnecessary evaluation of the parameters dictionary is avoided (if merge = missing, nothing or has no elements).

    Version 0.11.2

    • Minor (efficiency) improvement if states are SVectors.
    • Require ModiaBase 0.9.2 (to get rid of performance issues in Modia3D).
    • Replace ustrip(..) with ustrip.(..) at some places to get rid of warnings.

    Version 0.11.1

    • Update of Manifest.toml file
    • Require ModiaBase 0.9.1 (with updated Manifest.toml file)

    Version 0.11.0

    Non-backwards compatible changes

    • Equations can only be defined with key equations and no other key.
    • Parameter values in the code are now type cast to the type of the parameter value from the @instantiatedModel(..) call. The benefit is that access of parameter values in the code is type stable and operations with the parameter value are more efficient and at run-time no memory is allocated. Existing models can no longer be simulated, if parameter values provided via simulate!(.., merge=xx) are not type compatible to their definition. For example, an error is thrown if the @instantedModel(..) uses a Float64 value and the simulate!(.., merge=xx) uses a Measurement{Float64} value for the same parameter

    Other changes

    • Hierarchical names in function calls supported (e.g. a.b.c.fc(..)).
    • Functions can return multiple values, e.g. (tau1,tau2) = generalizedForces(derw1, derw2).
    • Support for StaticArrays variables (the StaticArrays feature is kept in the generated AST). For an example, see ModiaLang/test/TestArrays.jl.
    • Support for Array variables (especially of state and tearing variables) where the dimension can change after @instantiateModel(..). For examples, see ModiaLang/test/TestArrays.jl and TestMultiReturningFunction10.jl.
    • New keyword Var(hideResult=true) removes variable from the result (has no effect on states, derivative of states and parameters). For an example, see ModiaLang/test/TestMultiReturningFunction10.jl
    • New feature of @instantiatedModel(..): If a Model(..) has key :_buildFunction, call this function to merge additional code to the model. For details see the docu of function buildSubModels! in ModiaLang.jl. For examples, see ModiaLang/test/TestMultiReturningFunction10.jl and constructor Model3D(..) in Modia3D/src/ModiaInterface/model3D.jl and Modia3D/src/ModiaInterface/buildModia3D.jl.
    • Generalized connection semantics.
    • Functions converting model to/from JSON: modelToJSON(model), JSONtoModel(json_string)
    • simulate!(..):
      • New option logProgress=false in function simulate!(..) to print current simulation time every 5s (cpu-time).
      • If tolerance is too small, a warning is prented and it is automatically enlarged to a meaningful value (e.g. tolerance = 1e-8 is not useful if FloatType=Float32)
      • Logging improved: If log=true or logTiming=true, then timing, memory allocation and compilation time is reported for initialization (ths includes compilation of the generated getDerivatives(..) function). The remaining log shows cpu-time and memory allocation without initialization (and without the resources needed to compile getDerivatives(..)).
      • Prefix messages of the timers with "ModiaLang" or "DifferentialEquations" to more clearly see the origin of a message in the timer log.
    • Large speedup of symbolic transformation, if function depends on many input (and output) arguments (includes new operator implicitDependency(..)).
    • Included DAE-Mode in solution of linear equation system (if DAE integrator is used and all unknowns of a linear equation system are part of the DAE states, solve the linear equation system during continuous integration via DAE solver (= usually large simulation speed-up, for larger linear equation systems)

    Bug fixes

    • If unitless=true, units in instantiatedModel.evaluatedParameters are removed.
    • The unit macro is kept in the generated code and is no longer expanded. For example, u"N", is kept in the code that is displayed with logCode=true (previously, this was expanded and the unit was displayed in the code as N which is not correct Julia code).
    • Function ModiaLang.firstInitialOfAllSegments(..) now correctly returns true for the first call of the getDerivatives function during the simulation.

    Version 0.10.2

    • Minor (efficiency) improvement if states are SVectors.
    • Require ModiaBase 0.9.2 (to get rid of performance issues in Modia3D).
    • Replace ustrip(..) with ustrip.(..) at some places to get rid of warnings.

    Version 0.10.1

    • Update of Manifest.toml file
    • Require ModiaBase 0.9.1 (with updated Manifest.toml file).

    Version 0.10.0

    • Require DifferentialEquations.jl version 7.
    • Cleanup of using/export
    • Cleanup of Project.toml/Manifest.toml.´
    • @reexport using Unitful
    • @reexport using DifferentialEquations
    • Cleanup of test files (besides ModiaLang, no other package needed in the environment to run the tests).
    • Change InstantiatedModel{FloatType,ParType,EvaluatedParType,TimeType} to InstantiatedModel{FloatType,TimeType}

    Version 0.9.1

    • New function plotPath to plot a PTP_path
    • Replace ustrip(..) with ustrip.(..) at some places to get rid of warnings.
    • Include time in error message, if simulation failed

    Version 0.9.0

    • Require Julia 1.7
    • Upgrade Manifest.toml to version 2.0
    • Update Project.toml/Manifest.toml

    Version 0.8.7

    • Packages used in test models, prefixed with ModiaLang. to avoid missing package errors.
    • Deactivating test with DoubleFloats, since not in Project.toml
    • Version/date updated

    Version 0.8.6

    • Require ModiaResult, version 0.3.9
    • Project.toml/Manifest.toml updated

    Version 0.8.5

    • simulate!(..):
      • Trigger an error, if simulation is not successful (retcode is neither :Default nor :Success nor :Terminate)
      • Use RightRootFind for zero crossings (improves state events based on new DifferentialEquations option)
      • New keyword argument requiredFinalStates_atol=0.0.
      • Improve docu (e.g. add return argument solution).
      • Show correct integrator name QBDF in simulation log (instead of QNDF)
      • Raise an error, if (relative) tolerance is too small for FloatType
      • Use FloatType for zero crossing hysteresis, instead of Float64
      • If log=true print info about end of initialization.
    • Support of MonteCarloMeasurements with units + new test model TestLinearEquationSystemWithUnitsAndMonteCarlo.jl
    • Fixing and activating the deactivated test TestTwoInertiasAndIdealGearWithUnitsAndMonteCarlo.jl.

    Version 0.8.4

    • FloatType is included in the name space of Core.eval when evaluating parameters.
    • Version and Date updated
    • Included Version in printout of runtests.jl and runtests_withPlot.jl
    • Print difference of finalStates and requiredFinalStates in case they do not match with the given tolerance.

    Version 0.8.3

    • Project.toml, Manifest.toml updated: Require newest version 0.7.7 of ModiaBase (containing a bug fix)
    • Minor correction of simulate!(log=true) output

    Version 0.8.2

    • Issue with tearing fixed: Variables are only explicitly solved, if linear factor is a non-zero literal number (previously a division by zero could occur, if the linear factor became zero during simulation).
    • Issue with unit of tearing variable fixed, if it is a derivative of a variable (previously, the generated code for unitless=false was wrong, if the tearing variable was a derivative, since the unit was not taken into account).
    • simulate!(..):
      • Support DAE integrators, especially IDA() from Sundials.
      • New keyword useRecursiveFactorizationUptoSize=0: Linear equation systems A*v=b are solved with RecursiveFactorization.jl instead of the default lu!(..) and ldiv!(..), if length(v) <= useRecursiveFactorizationUptoSize. According to RecursiveFactorization.jl docu, it is faster as lu!(..) with OpenBLAS, for length(v) <= 500 (typically, more as a factor of two). Since there had been some cases where lu!(..)! was successful, but RecursiveFactorization.jl failed due to a singular system, the default is to use lu!(..)!.
      • If log=true, sizes of linear equation systems are listed, as well as whether RecursiveFactorization.jl is used for the respective system.
    • Test for RecursiveFactorization.jl added in TestTwoInertiasAndIdealGear.jl
    • Some test models corrected (since leading to errors with the above changes).
    • Updated Project.toml and Manifest.toml with newest versions of packages (including MonteCarloMeasurements, version >= 1) and improved Project.toml file to reduce issues with package constraints

    Version 0.8.1

    • Added a minimal documentation, including release notes.
    • No message anymore, when ModiaLang is started.
    • Fixed bug that using ModiaResult is needed, when calling @usingModiaPlot.

    Version 0.8.0

    • Improved scalability by using OrderedDicts instead of named tuples for models, variables and parameter modifications.
    • Speed improvements for structural and symbolic algorithms.
    • Added support for state events, time events and synchronous operators.
    • Added support for mixed linear equation systems having Real and Boolean unknowns.
    • Added support for user-defined components defined by structs and functions (multibody modeling with Modia3D is based on this feature). This makes it possible to utilize algorithms specialized for a component.
    • Added support for numerical and analytic linearization.
    • Added support for propagation of parameters (e.g. deep in a model, the value of a parameter can be defined as a function of some top level parameter and this parameter is changed before simulation starts).
    • New small model libraries Translational.jl and PathPlanning.jl added.
    • Result storage changed: sol = simulate!(...) calls internally sol = solve(..) from DifferentialEquations.jl. sol contains time and the states at the communication time grid and at events. This is now kept in simulate(..), so the return value of simulate!(..) can be exactly used as if solve(..) would have been used directly.
    • The plot(..) command now supports the following underlying plot packages: PyPlot, GLMakie, WGLMakie, and CairoMakie. It is also possible to select NoPlot, to ignore plot(..) calls or SilenNoPlot to ignore plot(..) calls silently. The latter is useful for runtests.jl. Note, often PyPlot is the best choice.

    Changes that are not backwards compatible to version 0.7.x:

    • Models are OrderedDicts and no longer NamedTuples.
    • simulate!(..):
      • If FloatType=Float64 and no algorithm is defined, then Sundials.CVODE_BDF() is used instead of the default algorithm of DifferentialEquations as in 0.7. The reason is that Modia models are usually large and expensive to evaluate and have often stiff parts, so that multi-step methods are often by far the best choice. CVODE_BDF() seems to be a good choice in many applications (another algorithm should be used, if there are many events, highly oscillatory vibrations, or if all states are non-stiff).
      • The default value of stopTime is equal to startTime (which has a default value of 0.0 s), and is no longer 1.0 s.
    • Plotting is defined slightly differently (@useModiaPlot, instead of using ModiaPlot).

    Version 0.7.3

    • Evaluation and propagation of parameter expressions (also in simulate!(..., merge=Map(...))). Propagation of start/init values of states is not yet supported.
    • State events supported.

    Version 0.7.2

    • Missing dependency of Test package added.

    Version 0.7.1

    • Variable constructor Var(...) introduced. For example: v = input | Var(init = 1.2u"m").
    • Functions are called in the scope where macro @instantiateModel is called.
    • New arguments of function simulate!:
      • Parameter and init/start values can be changed with argument merge.
      • A simulation can be checked with argument requiredFinalStates.
      • Argument logParameters lists the parameter and init/start values used for the simulation.
      • Argument logStates lists the states, init, and nominal values used for the simulation.
    • end in array ranges is supported, for example v[2:end].
    • New (small) model library Modia/models/HeatTransfer.jl.
    • Modia Tutorial improved.
    • Functions docu improved.

    Version 0.7.0

    • Initial version, based on code developed for Modia 0.6 and ModiaMath 0.6.

    Main developers

    diff --git a/stable/search.html b/stable/search.html new file mode 100644 index 0000000..86b694b --- /dev/null +++ b/stable/search.html @@ -0,0 +1,2 @@ + +Search · Modia

    Loading search...

      diff --git a/stable/search_index.js b/stable/search_index.js new file mode 100644 index 0000000..51fb2ca --- /dev/null +++ b/stable/search_index.js @@ -0,0 +1,3 @@ +var documenterSearchIndex = {"docs": +[{"location":"Internal.html#Internal","page":"Internal","title":"Internal","text":"","category":"section"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"This chapter documents internal functions that are typically only for use of the developers of a model library or of Modia.","category":"page"},{"location":"Internal.html#Variables-of-built-in-Components","page":"Internal","title":"Variables of built-in Components","text":"","category":"section"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"CurrentModule = Modia","category":"page"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"The following functions are provided to define and access new variables in built-in components (seee for example model InsulatedRod2 in Modia/models/HeatTransfer.jl).","category":"page"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"Functions Description\nnew_x_segmented_variable! Generate new state variable (x_segmented and der_x_segmented variables)\nnew_w_segmented_variable! Generate new local variable (w_segmented variable)\nnew_alias_segmented_variable! Generate new alias variable\nnew_z_segmented_variable! Generate new zero crossing variables (z_segmented variables)\nget_x_startIndex_from_x_segmented_startIndex Return start index of x_segmented variable with respect to state vector x\ncopy_scalar_x_segmented_value_from_state Return value of scalar x_segmented variable from state vector x\ncopy_SVector3_x_segmented_value_from_state Return value of SVector{3,FloatType} x_segmented variable from state vector x\ncopy_Vector_x_segmented_value_from_state Return value of Vector{FloatType} x_segmented variable from state vector x\ncopy_der_x_segmented_value_to_state Copy value of der_x_segmented variable to state derivative vector der(x)\ncopy_w_segmented_value_to_result Copy value of local variable (w-segmented) to result","category":"page"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"new_x_segmented_variable!\r\nnew_w_segmented_variable!\r\nnew_alias_segmented_variable!\r\nnew_z_segmented_variable!\r\nget_x_startIndex_from_x_segmented_startIndex\r\ncopy_scalar_x_segmented_value_from_state\r\ncopy_SVector3_x_segmented_value_from_state\r\ncopy_Vector_x_segmented_value_from_state\r\ncopy_der_x_segmented_value_to_state\r\ncopy_w_segmented_value_to_result","category":"page"},{"location":"Internal.html#Modia.new_x_segmented_variable!","page":"Internal","title":"Modia.new_x_segmented_variable!","text":"startIndex = new_x_segmented_variable!(\n partiallyInstantiatedModel::InstantiatedModel,\n x_name::String, der_x_name::String, startOrInit, x_unit::String=\"\";\n nominal::Float64 = NaN, unbounded::Bool = false)::Int\n\nGenerate new states (x_segmented and der_x_segmented variables) and return the startIndex of the variables in order that actual values can be inquired or copied from the state x and state derivative der(x)vectors via get_x_startIndex_from_x_segmented_startIndex. startOrInit contain the start or init values of the newly generated x_segmented variable.\n\nActual values of these new variables are stored in:\n\ninstantiatedModel.x_segmented[startIndex:startIndex+prod(dims(startOrInit))-1]\ninstantiatedModel.der_x_segmented[startIndex:startIndex+prod(dims(startOrInit))-1]\n\nValue startOrInit is the start/init value used during re-initialization of the new segment with initFullRestart!(..).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.new_w_segmented_variable!","page":"Internal","title":"Modia.new_w_segmented_variable!","text":"index = new_w_segmented_variable!(\n partiallyInstantiatedModel::InstantiatedModel, name::String,\n w_segmented_default, unit::String=\"\")::Int\n\nGenerate new local variable (w_segmented variable) and return the index of the variable in order that actual values can be inquired or copied from the result data structure. New values of w_segmented variables need only to be computed at communication points. Value wsegmenteddefault is stored as default value and defines type and (fixed) size of the variable in this simulation segment.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.new_alias_segmented_variable!","page":"Internal","title":"Modia.new_alias_segmented_variable!","text":"new_alias_segmented_variable!(partiallyInstantiatedModel::InstantiatedModel, \n name, aliasName, aliasNegate=false)\n\nDefine new alias variable.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.new_z_segmented_variable!","page":"Internal","title":"Modia.new_z_segmented_variable!","text":"startIndex = new_z_segmented_variable!(instantiatedModel, nz)\n\nGenerate nz new zero crossing variables and return the startIndex to of the variables in order that actual values can be copied into the vector of zero crossings.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.get_x_startIndex_from_x_segmented_startIndex","page":"Internal","title":"Modia.get_x_startIndex_from_x_segmented_startIndex","text":"x_startIndex = get_x_startIndex_from_x_segmented_startIndex(\n instantiatedModel::InstantiatedModel, x_segmented_startIndex)\n\nReturn the startindex of an x_segmented state with respect to the x-vector, given the startIndex with respect to the x_segmented vector (x_segmented_startIndex is the return value of new_x_segmented_variable!(..)).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.copy_scalar_x_segmented_value_from_state","page":"Internal","title":"Modia.copy_scalar_x_segmented_value_from_state","text":"value = Modia.copy_scalar_x_segmented_value_from_state(instantiatedModel, startIndex)\n\nReturn value of scalar x_segmented variable from state vector x by providing its startIndex (returned from new_x_segmented_variable!(..)).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.copy_SVector3_x_segmented_value_from_state","page":"Internal","title":"Modia.copy_SVector3_x_segmented_value_from_state","text":"value = Modia.copy_SVector3_x_segmented_value_from_state(instantiatedModel, startIndex)\n\nReturn value of SVector{3,FloatType} x_segmented variable from state vector x by providing its startIndex (returned from new_x_segmented_variable!(..)).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.copy_Vector_x_segmented_value_from_state","page":"Internal","title":"Modia.copy_Vector_x_segmented_value_from_state","text":"Modia.copy_Vector_x_segmented_value_from_state(\n instantiatedModel::InstantiatedModel, startIndex, xi::Vector{FloatType})::Nothing\n\nReturn value of Vector{FloatType} x_segmented variable from state vector x by providing its startIndex (returned from new_x_segmented_variable!(..)) and copying it into the pre-allocated vector xi.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.copy_der_x_segmented_value_to_state","page":"Internal","title":"Modia.copy_der_x_segmented_value_to_state","text":"Modia.copy_der_x_segmented_value_to_state(\n instantiatedModel, startIndex, \n der_x_segmented_value::[FloatType|Vector{FloatType}])\n\nCopy der_x_segmented_value to state derivative vector der(x) by providing its startIndex (returned from new_x_segmented_variable!(..)) and copying it into the pre-allocated vector der_x_segmented_value.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.copy_w_segmented_value_to_result","page":"Internal","title":"Modia.copy_w_segmented_value_to_result","text":"Modia.copy_w_segmented_value_to_result(\n instantiatedModel::InstantiatedModel, index::Int, \n w_segmented_value)::Nothing\n\nCopy value of local variable (w-segmented) to result by providing its index (returned from new_w_segmented_variable!),\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Inquiries-in-built-in-Components","page":"Internal","title":"Inquiries in built-in Components","text":"","category":"section"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"The following functions are provided to inquire properties in built-in components at the current state of the simulation (see for example model InsulatedRod2 in Modia/models/HeatTransfer.jl).","category":"page"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"isInitial\r\nisFirstInitialOfAllSegments\r\nisTerminal\r\nisTerminalOfAllSegments\r\nisEvent\r\nisFirstEventIteration\r\nisFirstEventIterationDirectlyAfterInitial\r\nisFullRestart\r\nisAfterSimulationStart\r\nisZeroCrossing\r\nstoreResults\r\ngetTime","category":"page"},{"location":"Internal.html#Modia.isInitial","page":"Internal","title":"Modia.isInitial","text":"isInitial(instantiatedModel)\n\nReturn true, if initialization phase of simulation (of the current segment of a segmented simulation).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.isFirstInitialOfAllSegments","page":"Internal","title":"Modia.isFirstInitialOfAllSegments","text":"isFirstInitialOfAllSegments(instantiatedModel)\n\nReturn true, if initialization phase of simulation of the first segment of a segmented simulation.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.isTerminal","page":"Internal","title":"Modia.isTerminal","text":"isTerminal(instantiatedModel)\n\nReturn true, if terminal phase of simulation (of the current segment of a segmented simulation).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.isTerminalOfAllSegments","page":"Internal","title":"Modia.isTerminalOfAllSegments","text":"isTerminalOfAllSegments(instantiatedModel)\n\nReturn true, if terminal phase of simulation of the last segment of a segmented simulation.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.isEvent","page":"Internal","title":"Modia.isEvent","text":"isEvent(instantiatedModel)\n\nReturn true, if event phase of simulation (including initialization).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.isFirstEventIteration","page":"Internal","title":"Modia.isFirstEventIteration","text":"isFirstEventIteration(instantiatedModel)\n\nReturn true, if event phase of simulation (including initialization) and during the first iteration of the event iteration.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.isFirstEventIterationDirectlyAfterInitial","page":"Internal","title":"Modia.isFirstEventIterationDirectlyAfterInitial","text":"isFirstEventIterationDirectlyAfterInitial(instantiatedModel)\n\nReturn true, if first iteration directly after initialization where initial=true (so at the startTime of the simulation).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.isFullRestart","page":"Internal","title":"Modia.isFullRestart","text":"isFullRestart(instantiatedModel)\n\nReturn true, if FullRestart event of a segmented simulation.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.isAfterSimulationStart","page":"Internal","title":"Modia.isAfterSimulationStart","text":"isAfterSimulationStart(instantiatedModel)\n\nReturn true, if after start of simulation (returns false during initialization).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.isZeroCrossing","page":"Internal","title":"Modia.isZeroCrossing","text":"isZeroCrossing(instantiatedModel)\n\nReturn true, if event indicators (zero crossings) shall be computed.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.storeResults","page":"Internal","title":"Modia.storeResults","text":"storeResults(instantiatedModel)\n\nReturn true, if results shall be stored.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.getTime","page":"Internal","title":"Modia.getTime","text":"tCurrent = getTime(instantiatedModel)\n\nReturn current simulation time.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Code-Generation","page":"Internal","title":"Code Generation","text":"","category":"section"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"This section lists internal functions to generate Julia code of the transformed equations.","category":"page"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"CurrentModule = Modia","category":"page"},{"location":"Internal.html","page":"Internal","title":"Internal","text":"InstantiatedModel\r\ngenerate_getDerivatives!\r\ninit!\r\noutputs!\r\nterminate!\r\nderivatives!\r\nDAEresidualsForODE!\r\naffectEvent!\r\nzeroCrossings!\r\naffectStateEvent!\r\ntimeEventCondition!\r\naffectTimeEvent!\r\naddToResult!\r\ngetFloatType\r\nmeasurementToString","category":"page"},{"location":"Internal.html#Modia.InstantiatedModel","page":"Internal","title":"Modia.InstantiatedModel","text":"simulationModel = InstantiatedModel{FloatType,TimeType}(\n modelModule, modelName, getDerivatives!, equationInfo, x_startValues,\n parameters, timeName, w_invariant_names;\n vSolvedWithInitValuesAndUnit::OrderedDict{String,Any}(),\n vEliminated::Vector{Int}=Int[],\n vProperty::Vector{Int}=Int[],\n var_name::Function = v->nothing)\n\nArguments\n\nmodelModule: Module in which @instantiateModel is invoked (it is used for Core.eval(modelModule, ...)), that is evaluation of expressions in the environment of the user.\nmodelName::String: Name of the model\ngetDerivatives::Function: Function that is used to evaluate the model equations, typically generated with [Modia.generate_getDerivatives!].\nequationInfo::Modia.EquationInfo: Information about the states and the equations.\nx_startValues:: Deprecated (is no longer used).\nparameters: A hierarchical NamedTuple of (key, value) pairs defining the parameter and init/start values.\ntimeName: Name of time (as Symbol)\nw_invariant_names: A vector of variable names (as vector of symbols or Expr)\n\n\n\n\n\n","category":"type"},{"location":"Internal.html#Modia.generate_getDerivatives!","page":"Internal","title":"Modia.generate_getDerivatives!","text":"code = generate_getDerivatives!(AST, equationInfo, parameters, timeName, w_invariant_names, functionName;\n hasUnits=false)\n\nReturn the code of the getDerivatives! function as Expr using the Symbol functionName as function name. By eval(code) or fc = @RuntimeGeneratedFunction(code) the function is compiled and can afterwards be called.\n\nArguments\n\nAST::Vector{Expr}: Abstract Syntax Tree of the equations as vector of Expr.\nequationInfo::Modia.EquationInfo: Data structure returned by `Modia.getSortedAndSolvedAST holding information about the states.\nparameters: Vector of parameter names (as vector of symbols)\ntimeName: Name of time (as symbol)\nw_invariant_names: Vector of variable names (as vector of symbols or Expr).\nfunctionName::Function: The name of the function that shall be generated.\n\nOptional Arguments\n\npre:Vector{Symbol}: pre-variable names\nhasUnits::Bool: = true, if variables have units. Note, the units of the state vector are defined in equationinfo.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.init!","page":"Internal","title":"Modia.init!","text":"success = init!(simulationModel)\n\nInitialize simulationModel::InstantiatedModel at startTime. In particular:\n\nEmpty result data structure.\nMerge parameter and init/start values into simulationModel.\nConstruct x_start.\nCall simulationModel.getDerivatives! once with isInitial(simulationModel) = true to compute and store all variables in the result data structure at startTime and initialize simulationModel.linearEquations.\nCheck whether explicitly solved variables that have init-values defined, have the required value after initialization (-> otherwise error).\n\nIf initialization is successful return true, otherwise false.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.outputs!","page":"Internal","title":"Modia.outputs!","text":"outputs!(x, t, integrator)\n\nDifferentialEquations FunctionCallingCallback function for InstantiatedModel that is used to store results at communication points.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.terminate!","page":"Internal","title":"Modia.terminate!","text":"terminate!(m::InstantiatedModel, x, time)\n\nTerminate model.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.derivatives!","page":"Internal","title":"Modia.derivatives!","text":"derivatives!(derx, x, m, t)\n\nDifferentialEquations callback function to get the derivatives.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.DAEresidualsForODE!","page":"Internal","title":"Modia.DAEresidualsForODE!","text":"DAEresidualsForODE!(residuals, derx, x, m, t)\n\nDifferentialEquations callback function for DAE integrator for ODE model\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.affectEvent!","page":"Internal","title":"Modia.affectEvent!","text":"affectEvent!(integrator, stateEvent, eventIndex)\n\nCalled when a time event (stateEvent=false) or state event (stateEvent=true) is triggered. In case of stateEvent, eventIndex is the index of the crossing function that triggered the event.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.zeroCrossings!","page":"Internal","title":"Modia.zeroCrossings!","text":"zeroCrossings!(z, x, t, integrator)\n\nCalled by integrator to compute zero crossings\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.affectStateEvent!","page":"Internal","title":"Modia.affectStateEvent!","text":"affectStateEvent!(integrator, event_index)\n\nCalled by integrator when a state event is triggered\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.timeEventCondition!","page":"Internal","title":"Modia.timeEventCondition!","text":"timeEventCondition!(u, t, integrator)\n\nCalled by integrator to check if a time event occurred\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.affectTimeEvent!","page":"Internal","title":"Modia.affectTimeEvent!","text":"affectTimeEvent!(integrator)\n\nCalled by integrator when a time event is triggered\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.addToResult!","page":"Internal","title":"Modia.addToResult!","text":"addToResult!(instantiatedModel, x, time, w_invariant...)\n\nAdd result of current time instant (time, x, der_x, w_invariant, w_segmented) to instantiatedModel.\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.getFloatType","page":"Internal","title":"Modia.getFloatType","text":"floatType = getFloatType(simulationModel::InstantiatedModel)\n\nReturn the floating point type with which simulationModel is parameterized (for example returns: Float64, Float32, DoubleFloat, Measurements.Measurement{Float64}).\n\n\n\n\n\n","category":"function"},{"location":"Internal.html#Modia.measurementToString","page":"Internal","title":"Modia.measurementToString","text":"str = measurementToString(v)\n\nReturn variable v::Measurements.Measurement{FloatType} or a vector of such variables in form of a string will the full number of significant digits.\n\n\n\n\n\n","category":"function"},{"location":"tutorial/Simulation.html#Simulation","page":"3 Simulation","title":"3 Simulation","text":"","category":"section"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"A particular model is instantiated, simulated and results plotted with the commands:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"using Modia\r\n@usingModiaPlot\r\n\r\nfilter = @instantiateModel(Filter)\r\nsimulate!(filter, stopTime=10.0)\r\nplot(filter, \"y\", figure=1)","category":"page"},{"location":"tutorial/Simulation.html#.1-Instantiating","page":"3 Simulation","title":"3.1 Instantiating","text":"","category":"section"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"The @instantiateModel macro takes additional arguments:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"modelInstance = @instantiateModel(model; FloatType = Float64, aliasReduction=true, unitless=false,\r\n evaluateParameters=false, log=false, logModel=false, logDetails=false, logStateSelection=false,\r\n logCode=false,logExecution=logExecution, logCalculations=logCalculations, logTiming=false)","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"The macro performs structural and symbolic transformations, generates a function for calculation of derivatives suitable for use with DifferentialEquations.jl and returns InstantiatedModel that can be used in other functions, for example to simulate or plot results. Explanation of the arguments:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"model: model (declarations and equations)\nFloatType: Variable type for floating point numbers, for example: Float64, Measurements{Float64}, StaticParticles{Float64,100}, Particles{Float64,2000}\naliasReduction: Perform alias elimination and remove singularities\nunitless: Remove units (useful while debugging models and needed for MonteCarloMeasurements)\nevaluateParameters: Use evaluated parameters in the generated code.\nlog: Log the different phases of translation\nlogModel: Log the variables and equations of the model\nlogDetails: Log internal data during the different phases of translation\nlogStateSelection: Log details during state selection\nlogCode: Log the generated code\nlogExecution: Log the execution of the generated code (useful for timing compilation)\nlogCalculations: Log the calculations of the generated code (useful for finding unit bugs)\nlogTiming: Log timing of different phases\nreturn modelInstance prepared for simulation","category":"page"},{"location":"tutorial/Simulation.html#.2-Simulating","page":"3 Simulation","title":"3.2 Simulating","text":"","category":"section"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"The simulate! function performs one simulation with DifferentialEquations.jl using by default integrator Sundials.CVODE_BDF(), provided instantiatedModel has FloatType = Float64. Otherwise, a default algorithm will be chosen from DifferentialEquations (for details see https://arxiv.org/pdf/1807.06430, Figure 3). The reason to choose CVODE_BDF as default integrator is that it is a very robust integrator and also usually very efficient for larger models, provided there are no undamped vibrations. It is also possible to specify the integrator as second argument of simulate!:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"using Modia\r\n@usingModiaPlot\r\n\r\nfilter = @instantiateModel(Filter)\r\nsol = simulate!(filter, Tsit5(), stopTime=10.0, merge=Map(T=0.5, x=0.8))\r\nplot(filter, [\"y\", \"x\"], figure=1)","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Integrator DifferentialEquations.Tsit5 is an adaptive Runge-Kutta method of order 5/4 from Tsitouras. There are > 100 ODE integrators provided. For details, see here.","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Parameters and init/start values can be changed with the merge keyword. The effect is the same, as if the filter would have been instantiated with:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"filter = @instantiateModel(Filter | Map(T=0.5, x=Var(init=0.8))","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Note, with the merge keyword in simulate!, init/start values are directly given as a value (x = 0.8) and are not defined with Var(..).","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Function simulate! returns sol which is the value that is returned by function DifferentialEquations.solve. Functions of DifferentialEquations that operate on this return argument can therefore also be used on the return argument sol of simulate!.","category":"page"},{"location":"tutorial/Simulation.html#.4-Plotting","page":"3 Simulation","title":"3.4 Plotting","text":"","category":"section"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"A short overview of the most important plot commands is given in section Results and Plotting","category":"page"},{"location":"tutorial/Simulation.html#.5-State-selection-(DAEs)","page":"3 Simulation","title":"3.5 State selection (DAEs)","text":"","category":"section"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Modia has a sophisticated symbolic engine to transform high index DAEs (Differential Algebraic Equations) automatically to ODEs (Ordinary Differential Equations in state space form). During the transformation, equations might be analytically differentiated and code might be generated to solve linear equation systems numerically during simulation. The current engine cannot transform a DAE to ODE form, if the DAE contains nonlinear algebraic equations. There is an (internal) prototype available to transform nearly any DAE system to a special index 1 DAE system that can be solved with standard DAE integrators. After a clean-up phase, this engine will be made publicly available at some time in the future. Some of the algorithms used in Modia are described in Otter and Elmqvist (2017). Some algorithms are not yet published.","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Usually, the symbolic engine is only visible to the modeler, when the model has errors, or when the number of ODE states is less than the number of DAE states. The latter case is discussed in this section.","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"The following object diagram shows two rotational inertias that are connected by an ideal gear. One inertia is actuated with a sinusoidal torque:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"(Image: TwoInertiasAndIdealGear)","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"In order to most easily understand the issues, this model is provided in a compact, \"flattened\" form:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"TwoInertiasAndIdealGearTooManyInits = Model(\r\n J1 = 50,\r\n J2 = 100,\r\n ratio = 2,\r\n f = 3, # Hz\r\n\r\n phi1 = Var(init = 0.0), # Absolute angle of inertia1\r\n w1 = Var(init = 0.0), # Absolute angular velocity of inertia1\r\n phi2 = Var(init = 0.0), # Absolute angle of inertia2\r\n w2 = Var(init = 0.0), # Absolute angular velocity of inertia2\r\n\r\n equations = :[\r\n tau = 2.0*sin(2*3.14*f*time/u\"s\")\r\n\r\n # inertia1\r\n w1 = der(phi1)\r\n J1*der(w1) = tau - tau1\r\n\r\n # ideal gear\r\n phi1 = ratio*phi2\r\n ratio*tau1 = tau2\r\n\r\n # inertia2\r\n w2 = der(phi2)\r\n J2*der(w2) = tau2\r\n ]\r\n)\r\n\r\ndrive1 = @instantiateModel(TwoInertiasAndIdealGearTooManyInits)\r\nsimulate!(drive1, Tsit5(), stopTime = 1.0, logStates=true)\r\nplot(drive1, [(\"phi1\", \"phi2\"), (\"w1\", \"w2\")])","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"The option logStates=true results in the following output:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"... Simulate model TwoInertiasAndIdealGearTooManyInits\r\n\r\n│ # │ state │ init │ unit │ nominal │\r\n├───┼────────┼──────┼──────┼─────────┤\r\n│ 1 │ phi2 │ 0.0 │ │ NaN │\r\n│ 2 │ w2 │ 0.0 │ │ NaN │","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"This model translates and simulates without problems.","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Changing the init-value of w2 to 1.0 and re-simulating:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"simulate!(drive1, Tsit5(), stopTime = 1.0, logStates=true, merge = Map(w2=1.0))","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"results in the following error:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"... Simulate model TwoInertiasAndIdealGearTooManyInits\r\n\r\n│ # │ state │ init │ unit │ nominal │\r\n├───┼───────┼──────┼──────┼─────────┤\r\n│ 1 │ phi2 │ 0.0 │ │ NaN │\r\n│ 2 │ w2 │ 1.0 │ │ NaN │\r\n\r\n\r\nError from simulate!:\r\nThe following variables are explicitly solved for, have init-values defined\r\nand after initialization the init-values are not respected\r\n(remove the init-values in the model or change them to start-values):\r\n\r\n│ # │ name │ beforeInit │ afterInit │\r\n├───┼──────┼────────────┼───────────┤\r\n│ 1 │ w1 │ 0.0 │ 2.0 │","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"The issue is the following:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Every variable that is used in the der operator is a potential ODE state. When an init value is defined for such a variable, then Modia either utilizes this initial condition (so the variable has this value after initialization), or an error is triggered, as in the example above.","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"The model contains the equation:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"phi1 = ratio*phi2","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"So the potential ODE states phi1 and phi2 are constrained, and only one of them can be selected as ODE state, and the other variable is computed from this equation. Since parameter ratio can be changed before simulation is started, it can be changed also to a value of ratio = 0. Therefore, only when phi2 is selected as ODE state, phi1 can be uniquely computed from this equation. If phi1 would be selected as ODE state, then a division by zero would occur, if ratio = 0, since phi2 = phi1/ratio. For this reason, Modia selects phi2 as ODE state. This means the init value of phi1 has no effect. This is uncritical, as long as initialization computes this init value from the constraint equation above, as done in the example above.","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"When differentiating the equation above:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"der(phi1) = ratio*der(phi2) # differentiated constraint equation\r\n w1 = der(phi1)\r\n w2 = der(phi2)","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"it becomes obvious, that there is also a hidden constraint equation for the potential ODE states w1, w2:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"w1 = ratio*w2 # hidden constraint equation","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Again, Modia selects w2 as ODE state, and ignores the init value of w1. In the second simulation, the init value of w1 (= 0.0) is no longer consistent to the init value of w2 (= 1.0). Therefore, an error occurs.","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"The remedy is to remove the init values of phi1, w1 from the model:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"drive2 = @instantiateModel(TwoInertiasAndIdealGearTooManyInits |\r\n Map(phi1 = Var(init=nothing),\r\n w1 = Var(init=nothing)) )\r\nsimulate!(drive2, Tsit5(), stopTime = 1.0, logStates=true, merge = Map(w2=1.0))","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"and simulation is successful!","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Modia tries to respect init values during symbolic transformation. In cases as above, this is not possible and the reported issue occurs. In some cases, it might not be obvious, why Modia selects a particular variable as an ODE state. You can get more information by setting logStateSelection=true:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"drive1 = @instantiateModel(TwoInertiasAndIdealGearTooManyInits, logStateSelection=true)","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"This results in the following output in the REPL:","category":"page"},{"location":"tutorial/Simulation.html","page":"3 Simulation","title":"3 Simulation","text":"Instantiating model TwoInertiasAndIdealGearTooManyInits\r\n in module: Main.Tutorial\r\n in file: <..>\\Modia\\examples\\Tutorial.jl:196\r\n\r\n=== getSortedAndSolvedAST(...) started for TwoInertiasAndIdealGearTooManyInits.\r\n\r\n... Equation set 1.1 ..............................\r\nEquations:\r\n 1: tau = 2.0 * sin((2 * 3.14 * f * time) / u\"s\")\r\nUnknown variables:\r\n 1: tau\r\nOne equation in one unknown variable. Solve the equation:\r\nJulia code:\r\n tau = 2.0 * sin((2 * 3.14 * _FloatType(_p[:f])::_FloatType * time) / u\"s\")\r\n\r\n... Equation set 2.1 ..............................\r\nEquations:\r\n 4: phi1 = ratio * phi2\r\nUnknown variables:\r\n 7: phi2\r\n 4: phi1\r\n1 equation(s) in 2 unknown variable(s). Tear the system of equations:\r\n Unknowns with start or init values: phi2, phi1\r\n Tearing variables: phi2\r\n All solved unknowns are dummy states.\r\nJulia code:\r\n phi1 = _FloatType(_p[:ratio])::_FloatType * phi2\r\n\r\n... Equation set 2.2 ..............................\r\nEquations:\r\n 6: w2 = der(phi2)\r\n 8: der(phi1) = ratio * der(phi2)\r\n 2: w1 = der(phi1)\r\nUnknown variables:\r\n 9: w2\r\n 10: der(phi2)\r\n 3: der(phi1)\r\n 2: w1\r\n3 equation(s) in 4 unknown variable(s). Tear the system of equations:\r\n Unknowns with start or init values: w2, w1\r\n Tearing variables: w2\r\n All solved unknowns are dummy states.\r\nJulia code:\r\n var\"der(phi2)\" = w2\r\n var\"der(phi1)\" = _FloatType(_p[:ratio])::_FloatType * var\"der(phi2)\"\r\n w1 = var\"der(phi1)\"\r\n\r\n... Equation set 2.3 ..............................\r\nEquations:\r\n 5: ratio * tau1 = tau2\r\n 7: J2 * der(w2) = tau2\r\n 10: der(w2) = der(der(phi2))\r\n 11: der(der(phi1)) = ratio * der(der(phi2))\r\n 9: der(w1) = der(der(phi1))\r\n 3: J1 * der(w1) = tau - tau1\r\nUnknown variables:\r\n 8: tau2\r\n 11: der(w2)\r\n 13: der(der(phi2))\r\n 12: der(der(phi1))\r\n 5: der(w1)\r\n 6: tau1\r\n6 equation(s) in 6 unknown variable(s). Tear the system of equations:\r\n Tearing variables: der(w2)\r\n Residual equations:\r\n 7: J2 * der(w2) = tau2\r\n All unknowns are solved.\r\nTeared equation system is linear. Solve system with hasConstantCoefficients = false.\r\ncode = quote\r\n local var\"der(w2)\", var\"der(der(phi2))\", var\"der(der(phi1))\", var\"der(w1)\", tau1, tau2\r\n _leq_mode = initLinearEquationsIteration!(_m, 1)\r\n ModiaBase.TimerOutputs.@timeit _m.timer \"ModiaBase LinearEquationsIteration!\" while ModiaBase.LinearEquationsIteration!(_leq_mode, _m.isInitial, _m.solve_leq, _m.storeResult, _m.time, _m.timer)\r\n var\"der(w2)\" = _leq_mode.x[1] * u\"s^-1\"\r\n var\"der(der(phi2))\" = var\"der(w2)\"\r\n var\"der(der(phi1))\" = _FloatType(_p[:ratio])::_FloatType * var\"der(der(phi2))\"\r\n var\"der(w1)\" = var\"der(der(phi1))\"\r\n tau1 = -((_FloatType(_p[:J1])::_FloatType * var\"der(w1)\" - tau))\r\n tau2 = _FloatType(_p[:ratio])::_FloatType * tau1\r\n ModiaBase.appendVariable!(_leq_mode.residuals, Modia.Unitful.ustrip.(tau2) .- Modia.Unitful.ustrip.(_FloatType(_p[:J2])::_FloatType * var\"der(w2)\"))\r\n end\r\n _leq_mode = nothing\r\nend\r\nSort equations (BLT on all equations under the assumption that the ODE states are known).\r\n\r\nInformation message from getSortedAndSolvedAST for model TwoInertiasAndIdealGearTooManyInits:\r\nThe following variables are iteration variables but have no start/init values defined.\r\nIf units are used in the model, start/init values with correct units should be defined\r\nto avoid unit errors during compilation.\r\nInvolved variables:\r\n der(w2)\r\n\r\n\r\nWarning message from getSortedAndSolvedAST for model TwoInertiasAndIdealGearTooManyInits:\r\nThe following variables have an 'init' initialization and are explicitly solved for.\r\nTherefore, the 'init' values have no effect, but must exactly match the values,\r\ncomputed during initialization. Otherwise this gives a run-time error.\r\nIt is adviced to use 'start' initialization or remove initialization for these variables.\r\nInvolved variables:\r\n phi1\r\n w1","category":"page"},{"location":"tutorial/Modeling.html#Modeling","page":"2 Modeling","title":"2 Modeling","text":"","category":"section"},{"location":"tutorial/Modeling.html#.1-Equation-oriented-models","page":"2 Modeling","title":"2.1 Equation oriented models","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"A low pass filter block with input u and output y","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"beginaligned\r\nT cdot fracdxdt + x = u\r\n y = x \r\nx(t_0) = 0\r\nendaligned","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"can be defined as:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"using Modia\r\n\r\nLowPassFilter = Model(\r\n T = 0.2,\r\n u = input,\r\n y = output | Var(:x),\r\n x = Var(init=0),\r\n equations = :[T * der(x) + x = u],\r\n)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The symbols input and output refer to predefined variable constructors to define the input and output variables. If an equation has just a unique variable in the left hand side, y, the right hand side can be given as a quoted expression in a Var-constructor Var(:x) after the output constructor combined with the merge operator, |, see below.","category":"page"},{"location":"tutorial/Modeling.html#.2-Merging-models","page":"2 Modeling","title":"2.2 Merging models","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"It is possible to combine models by merging. If we want to change the model to become a high-pass filter, an alternative output equation","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"y = -x + u","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"is defined in an anonymous model Model( y = :(-x + u) ). This anonymous model is merged with LowPassFilter using the merge operator |:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"HighPassFilter = LowPassFilter | Model( y = Var(:(-x + u) ) )","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The merging implies that the output property of y is kept, but the binding expression is changed from :x to :(-x + u).","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"In general, recursive merging is desired and Modia provides a mergeModels function for that (see appendix A.3 MergeModels algorithm). This function is invoked as a binary operator | (also used for merge in Python). Note, that the order of the arguments/operands are important.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Generalizing the block to have two outputs for both low and high pass filtering would be done as follows:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"LowAndHighPassFilter = LowPassFilter | Model(\r\n y = nothing,\r\n low = output | Var(:x),\r\n high = output | Var(:(-x + u)),\r\n )","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The equation for y is removed by \"assigning\" nothing and two variables are defined and declared as outputs.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Model LowAndHighPassFilter represents the following equations:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"beginaligned\r\nT cdot fracdxdt + x = u\r\n low = x \r\n high = -x + u \r\nx(t_0) = 0\r\nendaligned","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"By turning on logging of merging setLogMerge(true), the translator gives the log:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Adding: value = :(x)\r\nAdding: value = :(-x + u)\r\nDeleting: y\r\nAdding: low = Var(\r\n output = true,\r\n value = :(x),\r\n ),\r\nAdding: high = Var(\r\n output = true,\r\n value = :(-x + u),\r\n ),","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The resulting model is pretty printed by calling @showModel LowAndHighPassFilter:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"LowAndHighPassFilter = Model(\r\n T = 0.2,\r\n u = Var(\r\n input = true,\r\n ),\r\n x = Var(\r\n init = 0.0 V,\r\n ),\r\n equations = :([T * der(x) + x = u]),\r\n low = Var(\r\n output = true,\r\n value = :(x),\r\n ),\r\n high = Var(\r\n output = true,\r\n value = :(-x + u),\r\n ),\r\n),","category":"page"},{"location":"tutorial/Modeling.html#.3-Functions-and-tables","page":"2 Modeling","title":"2.3 Functions and tables","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"In order to test an input/output block as defined in the previous section, an input needs to be defined. This can be made by adding an equation for u. Assume we want u to be sinusoidal with an increasing frequency:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"TestLowAndHighPassFilter = LowAndHighPassFilter | Model(\r\n u = :(sin( (time+1u\"s\")*u\"1/s/s\" * time)*u\"V\"),\r\n x = Var(init=0.2u\"V\")\r\n )","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"time is a reserved name for the independent variable. It has unit s for seconds. The Julia package Unitful provides a means for defining units and managing unit inference. It need not be explicitly defined, because its symbols are exported by using Modia. Definition of units is done with a string macro u\"...\". In this case, the input signal was given unit Volt. The state x must then also have consistent unit, that is Volt. If the model equations contain systems of simultaneous equations, then approximate guess values, optionally with units, must be given start: i = Var(start=0.0u\"A\").","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The input signal can also be defined by interpolation in a table:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"using Interpolations\r\n\r\ntable = CubicSplineInterpolation(0:0.5:2.0, [0.0, 0.7, 2.0, 1.8, 1.2])\r\nTestLowAndHighPassFilter2 = TestLowAndHighPassFilter | Map(u = :(table(time*u\"1/s\")*u\"V\"))","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"It is possible to call Julia functions that have more than one return argument:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"function ref(time)\r\n y1 = sin(time)\r\n y2 = cos(time)\r\n return (y1,y2)\r\nend\r\n\r\nTestMultiReturningFunction1 = Model(\r\n equations = :[\r\n (y1,y2) = ref(time)\r\n y3 = y1+y2\r\n ]\r\n)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The returned arguments are typically numbers or arrays (see below). It is also possible to return an instance of a struct and, say, pass this instance as input to another function call.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"It is currently not supported that a function call modifies one of its arguments, or that a function call returns no argument at all:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"equations = :[\r\n fc!(u,y) # Error: Not known that fc! computes y\r\n println(\"This is a test\") # Error: One equation is introduced but no unknown\r\n]","category":"page"},{"location":"tutorial/Modeling.html#.4-Hierarchical-modeling","page":"2 Modeling","title":"2.4 Hierarchical modeling","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"So far, the composition of models has resulted in dictionaries of key/value pairs with values being numeric values or quoted expressions. Hierarchical models are obtained if the values themselves are Models, i.e. dictionaries. A model with two filters can, for example, be defined as follows:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"TwoFilters = Model(\r\n high = HighPassFilter,\r\n low = LowPassFilter,\r\n)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Note, that the previous definitions of HighPassFilter and LowPassFilter was used instead of making the Model definitions inline.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"A band pass filter is a series connection of a high pass filter and a low pass filter and can be described as:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"BandPassFilter = Model(\r\n u = input,\r\n y = output,\r\n high = HighPassFilter | Map(T=0.5, x=Var(init=0.1u\"V\")),\r\n low = LowPassFilter | Map(x=Var(init=0.2u\"V\")),\r\n equations = :[\r\n high.u = u,\r\n low.u = high.y,\r\n y = low.y]\r\n)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"A new input, u, has been defined which is propagated to high.u. The series connection itself is obtained by the equation low.u = high.y. Note, that dot-notation is allowed in equations.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The input and output for the BandPassFilter when using the same input definition as for the TestLowPassFilter","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"TestBandPassFilter = BandPassFilter | Map(\r\n u = :(sin( (time+1u\"s\")*u\"1/s/s\" * time)*u\"V\")\r\n )\r\nbandPassFilter = @instantiateModel(TestBandPassFilter)\r\nsimulate!(bandPassFilter, Tsit5(), stopTime = 50u\"s\")\r\nplot(bandPassFilter, [\"u\", \"y\"], figure=2)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"is shown below:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"(Image: Band Pass Filter Plot)","category":"page"},{"location":"tutorial/Modeling.html#.5-Physically-oriented-modeling","page":"2 Modeling","title":"2.5 Physically oriented modeling","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"So far, only signal flow modeling has been used, i.e. input/output blocks coupled with equations between outputs and inputs. For object oriented modeling more high level constructs are necessary. Coupling is then acausal and involves potentials such as electric potential, positions, pressure, etc. and flows such as electric current, forces and torques and mass flow rate.","category":"page"},{"location":"tutorial/Modeling.html#.5.1-Connectors","page":"2 Modeling","title":"2.5.1 Connectors","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Models which contain any flow variable, i.e. a variable having an attribute flow=true, are considered connectors. Connectors must have equal number of flow and potential variables, i.e. variables having an attribute potential=true, and have matching array sizes. Connectors may not have any equations. An example of an electrical connector with potential (in Volt) and current (in Ampere) is shown below.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Pin = Model( v = potential, i = flow )","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The value potential is a shortcut for Var(potential=true) and similarly for flow.","category":"page"},{"location":"tutorial/Modeling.html#.5.2-Components","page":"2 Modeling","title":"2.5.2 Components","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Components are declared in a similar ways as blocks. However, the interfaces between components are defined using connector instances.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"An electrical resistor can be described as follows:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Resistor = Model(\r\n R = 1.0u\"Ω\",\r\n p = Pin,\r\n n = Pin,\r\n equations = :[\r\n 0 = p.i + n.i\r\n v = p.v - n.v\r\n i = p.i\r\n R*i = v ]\r\n )","category":"page"},{"location":"tutorial/Modeling.html#.5.3-Inheritance","page":"2 Modeling","title":"2.5.3 Inheritance","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Various physical components sometimes share common properties. One mechanism to handle this is to use inheritance. In Modia, merging is used.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Electrical components such as resistors, capacitors and inductors are categorized as OnePorts which have two Pins. Common properties are: constraint on currents at the pins and definitions of voltage over the component and current through the component.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"OnePort = Model(\r\n p = Pin,\r\n n = Pin,\r\n equations = :[\r\n 0 = p.i + n.i\r\n v = p.v - n.v\r\n i = p.i ] )","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Having such a OnePort definition makes it convenient to define electrical component models by merging OnePort with specific parameter definitions with default values and equations:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Resistor = OnePort | Model( R = 1.0u\"Ω\", equations = :[ R*i = v ], )\r\n\r\nCapacitor = OnePort | Model( C = 1.0u\"F\", v=Map(init=0.0u\"V\"), equations = :[ C*der(v) = i ] )\r\n\r\nInductor = OnePort | Model( L = 1.0u\"H\", i=Map(init=0.0u\"A\"), equations = :[ L*der(i) = v ] )\r\n\r\nConstantVoltage = OnePort | Model( V = 1.0u\"V\", equations = :[ v = V ] )","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The merged Resistor is shown below:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Resistor = Model(\r\n p = Model(\r\n v = Var(potential = true),\r\n i = Var(flow = true),\r\n ),\r\n n = Model(\r\n v = Var(potential = true),\r\n i = Var(flow = true),\r\n ),\r\n equations = :([v = p.v - n.v; 0 = p.i + n.i; i = p.i, R * i = v]),\r\n R = 1.0 Ω,\r\n),","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Note, there is a special merge-rule that the vectors of keys equations are appended.","category":"page"},{"location":"tutorial/Modeling.html#.5.4-Connections","page":"2 Modeling","title":"2.5.4 Connections","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Connections are described as an array of tuples listing the connectors that are connected:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":" ( , , ... )","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"A connect reference has either the form 'connect instance name' or 'component instance name'.'connect instance name' with 'connect instance name' being either a connector instance, input or output variable.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Examples","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":" connect = :[\r\n (V.p, R1.p)\r\n (R1.n, p)\r\n (C1.n, V.n, R2.p)\r\n ...\r\n ]","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"For connectors, all the potentials of the connectors in the same connect tuple are set equal and the sum of all incoming flows to the model are set equal to the sum of the flows into sub-components. A Modelica inspired form of connections, i.e. connect-equations, are also supported:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":" equations = :[\r\n connect(V.p, R1.p)\r\n connect(R1.n, p)\r\n connect(C1.n, V.n, R2.p)\r\n ...\r\n ]","category":"page"},{"location":"tutorial/Modeling.html#.5.5-Connected-models","page":"2 Modeling","title":"2.5.5 Connected models","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Having the above electrical component models, enables defining a filter","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"(Image: Filter Circuit)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"by instantiating components, setting parameters and defining connections.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Filter = Model(\r\n R = Resistor | Map(R=0.5u\"Ω\"),\r\n C = Capacitor | Map(C=2.0u\"F\"),\r\n V = ConstantVoltage | Map(V=10.0u\"V\"),\r\n connect = :[\r\n (V.p, R.p)\r\n (R.n, C.p)\r\n (C.n, V.n)\r\n ]\r\n)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The connect tuples are translated to:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":" V.p.v = R.p.v\r\n 0 = V.p.i + R.p.i\r\n R.n.v = C.p.v\r\n 0 = R.n.i + C.p.i\r\n C.n.v = V.n.v\r\n 0 = C.n.i + V.n.i","category":"page"},{"location":"tutorial/Modeling.html#.5.6-Parameter-propagation","page":"2 Modeling","title":"2.5.6 Parameter propagation","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Hierarchical modification of parameters is powerful but sometimes a bit inconvenient. It is also possible to propagate parameters introduced on a high level down in the hierarchy. The following Filter model defines three parameters, r, c and v. The r parameter is used to set the resistance of the resistor R: Map(R=:r).","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Filter2 = Model(\r\n r = 2.0u\"Ω\",\r\n c = 1.0u\"F\",\r\n v = 10u\"V\",\r\n R = Resistor | Map(R=:r),\r\n C = Capacitor | Map(C=:c),\r\n V = ConstantVoltage | Map(V=:v),\r\n connect = :[\r\n (V.p, R.p)\r\n (R.n, C.p)\r\n (C.n, V.n)\r\n ]\r\n)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Two separate filters can then be defined with:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"TwoFilters = Model( f1 = Filter | Map( r = 10.0, c = 2.0), f2 = Filter )","category":"page"},{"location":"tutorial/Modeling.html#.5.7-Re-declarations","page":"2 Modeling","title":"2.5.7 Re-declarations","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"It is possible to reuse a particular model topology by re-declaring the models of particular components. For example, changing the filter f1 to a voltage divider by changing C from a Capacitor to a Resistor. A predefined definition redeclare is used for this purpose.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"VoltageDividerAndFilter = TwoFilters | Map(f1 = Map(C = redeclare | Resistor | Map(R = 20.0)))","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"By using redeclare, a new model based on a Resistor is used for C and the usual merge semantics with the previously defined model of C is not used.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The above examples are available in file FilterCircuit.jl.","category":"page"},{"location":"tutorial/Modeling.html#.5.8-Drive-train-example","page":"2 Modeling","title":"2.5.8 Drive train example","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"A larger example that utilizes most of the previously described features of Modia is available as $(Modia.path)/examples/ServoSystem.jl. This is a textual (Modia) representation of a Modelica model","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"(Image: ServoSystem)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"and demonstrates how to build up a hierarchical, multi-domain model consisting of a servo-system with a load, where the servo-system consists of an electric motor with a current and speed controller, as well with a more detailed model of a gearbox.","category":"page"},{"location":"tutorial/Modeling.html#.6-Arrays","page":"2 Modeling","title":"2.6 Arrays","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Model parameters and variables can be arrays. For example a linear state space system","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"beginaligned\r\nfracdboldsymbolxdt = boldsymbolA cdot boldsymbolx + boldsymbolB cdot boldsymbolu\r\n boldsymboly = boldsymbolC cdot boldsymbolx + boldsymbolD cdot boldsymbolu\r\nendaligned","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"can be defined as:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"StateSpace = Model(\r\n A = fill(0.0, 0, 0),\r\n B = fill(0.0, 0, 0),\r\n C = fill(0.0, 0, 0),\r\n D = fill(0.0, 0, 0),\r\n u = input,\r\n y = output,\r\n x = Var(init = zeros(0)),\r\n equations = :[\r\n der(x) = A*x + B*u\r\n y = C*x + D*u\r\n ]\r\n)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"and used as:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"SecondOrder = Model(\r\n w = 20.0,\r\n D = 0.1,\r\n k = 2.0,\r\n sys = StateSpace | Map(A = :([ 0 1;\r\n -w^2 -2*D*w]),\r\n B = :([0; w^2;;]), # Julia 1.7: Trailing \";;\" defines a column matrix\r\n C = :([k 0]),\r\n D = :(zeros(1,1)),\r\n x = Var(init = zeros(2)) ),\r\n equations = :[sys.u = [1.0]]\r\n)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Variables sys.u and sys.y are vectors with one element each.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Note, [0; w^2] is a vector in Julia and not a column matrix. In order that B is defined as column matrix, the Julia 1.7 feature is used to append two semicolons, that is, [0; w^2;;]","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Array equations remain array equations during symbolic transformation and in the generated code, so the code is both compact and efficient. In order that this is reasonably possible, the definition of an array cannot be split in different statements:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"equations = :[ # error, vector v is not defined as one symbol\r\n m1*der(v[1]) = 2.0\r\n m2*der(v[2]) = 3.0\r\n]","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"If scalar equations are needed in which arrays are used, then the arrays have to be first defined and then elements can be used.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"v = Var(init=zeros(2)),\r\nequations = :[\r\n a = der(v)\r\n a1 = a[1]\r\n a2 = a[2]\r\n m1*a1 = 2.0\r\n m2*a2 = 3.0\r\n]","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"When the init or start value of an array variable is defined as a StaticArrays.jl StaticArray, then the type of this array variable will be StaticArray in the generated code. The benefit is that array operations are more efficient:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"using StaticArrays\r\nTestArray1 = Model\r\n v = Var(init=SVector{3,Float64}(1.0, 2.0, 3.0)),\r\n equations = :[der(v) = -v]\r\n)\r\ntestArray1 = @instantiateModel(TestArray1, logCode=true)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Note, the generated code is shown in the REPL if logCode=true is defined:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"function getDerivatives(_x, _m::Modia.InstantiatedModel{_FloatType,_TimeType} ...\r\n ...\r\n v::ModiaBase.SVector{3,_FloatType} = ModiaBase.SVector{3,_FloatType}(_x[1:3])\r\n var\"der(v)\" = -v\r\n ...","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The sizes of StaticArrays variables cannot be changed, after @instantiatedModel was called. However, the sizes of standard array variables can be changed with keyword argument merge in simulate! (so no re-generation and re-compilation of the code is needed):","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"TestArray2 = Model(\r\n v = Var(init=[1.0, 2.0, 3.0]), # length(v) = 3\r\n equations = :[der(v) = -v]\r\n)\r\ntestArray2 = @instantiateModel(TestArray2)\r\nsimulate!(testArray2, stopTime=2.0, merge=Map(v = [4.0, 3.0, 2.0, 1.0])) # length(v) = 4\r\nplot(testArray2, \"v\", figure=5)","category":"page"},{"location":"tutorial/Modeling.html#.7-Model-libraries","page":"2 Modeling","title":"2.7 Model libraries","text":"","category":"section"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"Modia provides a small set of predefined model components in directory Modia.modelsPath:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"AllModels.jl - Include all model libraries\nBlocks.jl - Input/output control blocks\nElectric.jl - Electric component models\nHeatTransfer.jl - 1D heat transfer component models\nRotational.jl - 1D rotational, mechanical component models\nTranslational.jl - 1D translational, mechanical component models\nPathPlanning - Defining reference trajectories and access them.","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"The desired libraries must be explicitly included with the help of utility path variable Modia.modelsPath. For example, the circuit of section 2.5.5 Connected models is constructed with these libraries in the following way:","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"using Modia\r\ninclude(\"$(Modia.modelsPath)/Electric.jl\")\r\n\r\nFilterCircuit = Model(\r\n R = Modia.Resistor | Map(R=0.5u\"Ω\"),\r\n C = Modia.Capacitor | Map(C=2.0u\"F\", v=Var(init=0.1u\"V\")),\r\n V = Modia.ConstantVoltage | Map(V=10.0u\"V\"),\r\n ground = Modia.Ground,\r\n connect = :[\r\n (V.p, R.p)\r\n (R.n, C.p)\r\n (C.n, V.n, ground.p)\r\n ]\r\n)\r\n\r\nfilterCircuit = @instantiateModel(FilterCircuit)\r\nsimulate!(filterCircuit, Tsit5(), stopTime=10.0)\r\n@usingModiaPlot\r\nplot(filterCircuit, [\"C.v\", \"C.i\"], figure=3)","category":"page"},{"location":"tutorial/Modeling.html","page":"2 Modeling","title":"2 Modeling","text":"It is planned to support a much larger set of predefined model components in the future.","category":"page"},{"location":"tutorial/Appendix.html#Appendix-A","page":"Appendix A","title":"Appendix A","text":"","category":"section"},{"location":"tutorial/Appendix.html#A.1-Var-constructor","page":"Appendix A","title":"A.1 Var constructor","text":"","category":"section"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"The constructor Var(..) defines attributes of a variable with key/value pairs. In column 1 the keys are shown. The default is that none of the keys are defined (meaning key = nothing). Most of the keys are also provided as predefined constants as shown in column 2 and 3. These constants can be used as shortcuts:","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"Var key ShortCut Shortcut value Description\nparameter parameter Var(parameter = true) If true, value is fixed during simulation\ninput input Var(input = true) If true, input signal\noutput output Var(output = true) If true, output signal\npotential potential Var(potential = true) If true, potential variable\nflow flow Var(flow = true) If true, flow variable\ninit – – Initial value of ODE state (defines unit and size)\nstart – – Start value of variable (defines unit and size)\nhideResult – – If true, the variable is not stored in the result","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"Example:","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"v = output | Var(start = zeros(3)u\"N*m\")\r\n\r\n# Same as: v = Var(output = true, start = zeros(3)u\"N*m\")","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"An attribute can be removed by using a value of nothing. Example:","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"System1 = Model(v = input | Var(init = 1.0), ...)\r\n\r\n# System2 = Model(v = input, ...)\r\nSystem2 = System1 | Map(v = Var(init = nothing), ...)","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"The following attributes are also defined for constructor Var, but have no effect yet. Using min, max, info already now, might be useful for model libraries:","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"Var Key Shortcut Shortcut value Description\nconstant constant Var(constant = true) If true, value cannot be changed\nmin, max interval(a,b) Var(min = a, max = b) Allowed variable value range\ninfo info\"...\" Var(info=\"...\") Description","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"Example:","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"v = output | interval(0.0,1.0) | Var(start = zeros(3)u\"N*m\") | info\"An output variable\"\r\n\r\n# Same as: v = Var(output = true, min = 0.0, max = 1.0,\r\n# start = zeros(3)u\"N*m\", info = \"An output variable\")","category":"page"},{"location":"tutorial/Appendix.html#A.2-Dictionaries-and-quoted-expressions","page":"Appendix A","title":"A.2 Dictionaries and quoted expressions","text":"","category":"section"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"The fundamental mechanism for defining models, variables and parameter modifications in Modia are ordered dictionaries, i.e. a list of key/value pairs:","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"julia> using OrderedCollections\r\n\r\njulia> S = OrderedDict(:p=>5, :q=>10)\r\nOrderedDict{Symbol, Int64} with 2 entries:\r\n :p => 5\r\n :q => 10","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"It is also possible to define a constructor Model with keyword arguments which creates the ordered dictionary:","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"julia> Model(; kwargs...) = OrderedDict{Symbol, Any}(kwargs)\r\nModel (generic function with 1 method)\r\n\r\njulia> T=Model(q=100, r=200)\r\nOrderedDict{Symbol, Any} with 2 entries:\r\n :q => 100\r\n :r => 200","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"The values can also be a quoted expression, i.e. an expression enclosed in :( ), an array of quoted expressions enclosed in :[ ] or just a quoted symbol, :x. This mechanism is used to encode equations and expressions of the model which needs to be manipulated before the model can be simulated.","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"Julia defines a very useful merge operation between dictionaries:","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"julia> merge(S, T)\r\nOrderedDict{Symbol, Any} with 3 entries:\r\n :p => 5\r\n :q => 100\r\n :r => 200","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"If a key already exists in the first dictionary (like :q), its value is overwritten (like :r) otherwise it's added (like :p). Such a merge semantic allows for unification of parameter modifications and inheritance as will be demonstrated below.","category":"page"},{"location":"tutorial/Appendix.html#A.3-MergeModels-algorithm","page":"Appendix A","title":"A.3 MergeModels algorithm","text":"","category":"section"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"The basics of the mergeModels algorithm and the merge operator | are defined as follows (without logging):","category":"page"},{"location":"tutorial/Appendix.html","page":"Appendix A","title":"Appendix A","text":"function mergeModels(m1::AbstractDict, m2::AbstractDict, env=Symbol())\r\n result = deepcopy(m1)\r\n for (k,v) in m2)\r\n if typeof(v) <: AbstractDict\r\n if k in keys(result) && ! (:_redeclare in keys(v))\r\n if typeof(result[k]) <: AbstractDict\r\n result[k] = mergeModels(result[k], v, k)\r\n end\r\n else\r\n result[k] = v\r\n end\r\n elseif v === nothing\r\n delete!(result, k)\r\n elseif k in keys(result) && k == :equations\r\n equa = copy(result[k])\r\n push!(equa.args, v.args...)\r\n result[k] = equa\r\n else\r\n result[k] = v\r\n end\r\n end\r\n return result\r\nend\r\n\r\n|(m::AbstractDict, n::AbstractDict) = mergeModels(m, n)\r\n","category":"page"},{"location":"tutorial/FloatingPointTypes.html#Floating-Point-Types","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"","category":"section"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"The types of the floating point numbers in a Modia model can be parameterized with argument FloatType of macro @instantiateModel:","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"filter = @instantiateModel(Filter; FloatType = Float64)","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"By default, a floating point number has type Float64.","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"warning: Warning\nUsing another floating point type requires that a DifferentialEquations.jl integrator is used that is implemented in native Julia. An integrator that interfaces an integrator implemented in C (such as CVODE_BDF() the popular Sundials BDF method), cannot be used.","category":"page"},{"location":"tutorial/FloatingPointTypes.html#.1-Lower-and-higher-precision","page":"4 Floating Point Types","title":"4.1 Lower and higher precision","text":"","category":"section"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"In principal, any floating point type of Julia (so any type that is derived from AbstractFloat) can be used in the model and the integrators. Examples","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"Type Precision Package Usage\nFloat32 7 digits built-in Embedded system\nFloat64 16 digits built-in Offline simulation\nDouble64 30 digits DoubleFloats High precision needed\nBigFloat arbitrary built-in Very high precision needed (very slow)","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"The Float32 type might be used to test the execution and numerics of a model that shall later run on an embedded system target (there is no automatic way, yet, to translate a Modia model to C).","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"Double64 is a type that is constructed from two Float64 types. The execution is much faster as the comparable Julia built-in type BigFloat when set to 128 bit precision. The Double64 type might be used, when simulation with Float64 fails due to numerical reasons (for example the model is very sensitive, or equation systems are close to singularity) or when very stringent relative tolerances are needed, for example relative tolerance = 1e-15 as needed for some space applications.","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"In the following example, simulation is performed with a Float32 floating point type used for model and integrator and utilizing a Runge-Kutta integrator of order 4 with a fixed step size of 0.01 s:","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"filter = @instantiateModel(Filter, FloatType = Float32)\r\nsimulate!(filter, RK4(), adaptive=false, stopTime=10.0, interval=0.01)","category":"page"},{"location":"tutorial/FloatingPointTypes.html#.2-Uncertainties","page":"4 Floating Point Types","title":"4.2 Uncertainties","text":"","category":"section"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"Package Measurements provides a floating point type designed for error propagation. A floating point number is defined with a nominal value and an uncertainty:","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"using Measurements\r\n\r\nm1 = 2.1 ± 0.4\r\nm2 = 2*m1 # 4.2 ± 0.8\r\nm3 = m2 - m1 # 2.1 ± 0.4","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"The statement m1 = 2.1 ± 0.4 defines that m1 has a nominal value of 2.1 with a standard deviation of 0.4. This means that the probability is about 95 % that the value of m1 is in the range 1.3 .. 2.9. Package Measurements computes the error propagation with first-order theory (so this is typically an approximation) by computing the partial derivatives of all variables with respect to all source error definitions and computing the propagated error with this information. The benefit is that the error bounds are typically reasonably propagated and the computation is reasonably fast. The drawback is that it is an approximation and will be not correct, if the uncertainty is too large and/or the signals change too quickly (for example are discontinuous).","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"The following model defines a simple pendulum where a mass point is attached via a rod and a revolute joint to the environment. It is described by the equations","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"beginaligned\r\n fracdvarphidt = omega \r\n 0 = m cdot L^2 cdot fracdomegadt + d cdot omega + m cdot g cdot L cdot sin(varphi)\r\nendaligned","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"where varphi is the rotation angle, omega the angular velocity, m the mass, L the rod length, d a damping constant and g the gravity constant. This model can be defined with the commands:","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"Pendulum = Model(\r\n L = (0.8±0.1)u\"m\",\r\n m = (1.0±0.1)u\"kg\",\r\n d = (0.5±0.05)u\"N*m*s/rad\",\r\n g = 9.81u\"m/s^2\",\r\n phi = Var(init = (pi/2±0.1)*u\"rad\"),\r\n w = Var(init = 0u\"rad/s\"),\r\n equations = :[\r\n w = der(phi)\r\n 0.0 = m*L^2*der(w) + d*w + m*g*L*sin(phi)\r\n ]\r\n)\r\n\r\npendulum = @instantiateModel(Pendulum, FloatType=Measurements.Measurement{Float64})\r\nsimulate!(pendulum, Tsit5(), stopTime = 10.0)\r\nplot(pendulum, \"phi\")","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"and simulates the pendulum with uncertain parameter and init values and results in the following plot:","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"(Image: PendulumWithUncertaintities)","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"The area around the nominal value of a variable characterizes the standard deviation.","category":"page"},{"location":"tutorial/FloatingPointTypes.html#.3-Monte-Carlo-Simulation","page":"4 Floating Point Types","title":"4.3 Monte-Carlo Simulation","text":"","category":"section"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"The Julia package MonteCarloMeasurements.jl provides calculations with particles. A value can be defined with a distribution of say 2000 values randomly chosen according to a desired distribution and then all calculations are performed with 2000 values at the same time (corresponds to 2000 simulations that are carried out).","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"In the example below, a modest form of 100 particles (100 simulations) with Uniform distributions of some parameters and init values are defined that correspond roughly to the definition with uncertainties of the previous section (but using uniform instead for normal distributions):","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"using Modia\r\nusing DifferentialEquations\r\nusing ModiaPlot\r\nusing MonteCarloMeasurements\r\nusing Distributions\r\nusing Unitful\r\n\r\nconst nparticles = 100\r\nuniform(vmin,vmax) = StaticParticles(nparticles,Distributions.Uniform(vmin,vmax))\r\n\r\nPendulum = Model(\r\n L = uniform(0.6, 1.0),\r\n m = uniform(0.8, 1.2),\r\n d = uniform(0.4, 0.6),\r\n g = 9.81,\r\n phi = Var(init = uniform(pi/2-0.2, pi/2+0.2)),\r\n w = Var(init = 0),\r\n equations = :[\r\n w = der(phi)\r\n 0.0 = m*L^2*der(w) + d*w + m*g*L*sin(phi)\r\n ]\r\n)\r\n\r\npendulum = @instantiateModel(Pendulum,FloatType=StaticParticles{Float64,nparticles})\r\nsimulate!(pendulum, Tsit5(), stopTime = 10.0)\r\nplot(pendulum, \"phi\", MonteCarloAsArea=false)","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"The simulation result is shown in the next figure:","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"(Image: PendulumWithMonteCarlo.png)","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"Since plot option MonteCarloAsArea=false is used, all 100 simulations are shown in the plot, together with the mean value of all simulations. The default plot behavior is to show the mean value and the area in which all simulations are contained (this is useful, if there are much more simulations, because GLMakie crashes when there are too many curves in a diagram).","category":"page"},{"location":"tutorial/FloatingPointTypes.html","page":"4 Floating Point Types","title":"4 Floating Point Types","text":"There are currently a few restrictions, in particular units are not yet supported in the combination of Modia and MonteCarloMeasurements, so units are not defined in the model above.","category":"page"},{"location":"tutorial/GettingStarted.html#Getting-Started","page":"1 Getting Started","title":"1 Getting Started","text":"","category":"section"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"A simple differential equation with x(t) in R","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"T cdot fracdxdt + x = 1 x(t_0) = 02","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"can be defined, simulated and plotted with the following commands:","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"using Modia # reexports exported symbols from\r\n # DifferentialEquations, Unitful, SignalTables\r\n\r\n# Define model\r\nSimpleModel = Model(\r\n T = 0.4,\r\n x = Var(init=0.2),\r\n equations = :[T * der(x) + x = 1],\r\n)\r\n\r\n# Transform to ODE form\r\nsimpleModel = @instantiateModel(SimpleModel)\r\n\r\n# Simulate with default integrator Sundials.CVODE_BDF\r\nsimulate!(simpleModel, stopTime = 1.2)\r\n\r\n# Simulate with a specific integrator (Tsit5) and use a unit for stopTime\r\nsimulate!(simpleModel, Tsit5(), stopTime = 1.2u\"s\")\r\n\r\n# Produce a line plot\r\n@usingModiaPlot # Use plot package defined with\r\n # ENV[\"SignalTablesPlotPackage\"] = \"XXX\" or with \r\n # usePlotPackage(\"XXX\")\r\nplot(simpleModel, (\"x\", \"der(x)\"))","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"A model is defined with a constructor Model taking a comma separated list of name/value pairs. The model consists of a definition of a parameter T with default value 0.2. Constructor Var with an init key is used to define the initial condition 0.2 of the state x, and one equation. Equations can have a Julia expression on both sides of the equal sign and are given as a quoted array expression :[ ] assigned to key equations.","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"The macro @instantiateModel(..) symbolically processes the model, in particular solves the equation for the derivative der(x), so the following equation will be used by the integrator:","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"fracdxdt = (1 - x) T","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"Furthermore, a Julia function is generated and compiled to evaluate this equation. @instantiateModel(..) returns an instance containing all the information needed for the next steps.","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"The first simulate! function performs one simulation with the Modia default integrator Sundials.CVODE_BDF(). The second simulate! call defines the integrator as second argument. Integrator Tsit5 is an adaptive Runge-Kutta method of order 5/4 from Tsitouras. There are > 100 ODE integrators provided. For details, see here. The simulation result is stored inside simpleModel.","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"Function call plot(..) produces a line plot. Variables to be plotted are defined as tuples or arrays of variable names. Tuples are displayed in one diagram. A Vector or matrix of tuples or strings are displayed as vector or matrix of diagrams. When ENV[\"SignalTablesPlotPackage\"] = \"GLMakie\" is set, then command plot(..) produces the following image","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"(Image: SimpleModel Plot)","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"When ENV[\"SignalTablesPlotPackage\"] = \"PyPlot\" is set, the following image is produced:","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"(Image: SimpleModel Plot)","category":"page"},{"location":"tutorial/GettingStarted.html","page":"1 Getting Started","title":"1 Getting Started","text":"Note, the tool bar of PyPlot provides various interactive commands, for example to zoom into the plot or to store the plot in different formats on file (for example in png or svg format).","category":"page"},{"location":"Functions.html#Functions","page":"Functions","title":"Functions","text":"","category":"section"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"CurrentModule = Modia","category":"page"},{"location":"Functions.html#Instantiation","page":"Functions","title":"Instantiation","text":"","category":"section"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"@instantiateModel\r\ninstantiateModel","category":"page"},{"location":"Functions.html#Modia.@instantiateModel","page":"Functions","title":"Modia.@instantiateModel","text":"modelInstance = @instantiateModel(model; FloatType = Float64, aliasReduction=true, unitless=false,\n evaluateParameters=false, saveCodeOnFile=\"\", log=false, logModel=false, logDetails=false, logStateSelection=false,\n logCode=false,logExecution=logExecution, logCalculations=logCalculations, logTiming=false, logFile=true)\n\nInstantiates a model, i.e. performs structural and symbolic transformations and generates a function for calculation of derivatives suitable for simulation.\n\nmodel: model (declarations and equations)\nFloatType: Variable type for floating point numbers, for example: Float64, Measurement{Float64}, StaticParticles{Float64,100}, Particles{Float64,2000}\naliasReduction: Perform alias elimination and remove singularities\nunitless: Remove units (useful while debugging models and needed for MonteCarloMeasurements)\nevaluateParameters: Use evaluated parameters in the generated code.\nsaveCodeOnFile: If non-empty string, save generated code in file with name saveCodeOnFile.\nlog: Log the different phases of translation\nlogModel: Log the variables and equations of the model\nlogDetails: Log internal data during the different phases of translation\nlogStateSelection: Log details during state selection\nlogCode: Log the generated code\nlogExecution: Log the execution of the generated code (useful for timing compilation)\nlogCalculations: Log the calculations of the generated code (useful for finding unit bugs)\nlogTiming: Log timing of different phases\nlogFile: Log file and line number where @instantiatedModel is called\nreturn modelInstance prepared for simulation\n\n\n\n\n\n","category":"macro"},{"location":"Functions.html#Modia.instantiateModel","page":"Functions","title":"Modia.instantiateModel","text":"See documentation of macro [@instantiateModel]\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Simulation","page":"Functions","title":"Simulation","text":"","category":"section"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"simulate!","category":"page"},{"location":"Functions.html#Modia.simulate!","page":"Functions","title":"Modia.simulate!","text":"solution = simulate!(instantiatedModel [, algorithm];\n merge = missing, # change parameter/init/start values\n tolerance = 1e-6, # relative tolerance\n startTime = 0.0,\n stopTime = 0.0, # stopTime >= startTime required\n interval = missing, # = (stopTime-startTime)/500\n interp_points = 0,\n dtmax = missing, # = 100*interval\n adaptive = true,\n nlinearMinForDAE = 10,\n log = false,\n logStates = false,\n logEvents = false,\n logProgress = false,\n logTiming = false,\n logParameters = false,\n logEvaluatedParameters = false,\n requiredFinalStates = missing\n requiredFinalStates_rtol = 1e-3,\n requiredFinalStates_atol = 0.0,\n useRecursiveFactorizationUptoSize = 0)\n\nSimulate instantiatedModel::InstantiatedModel with algorithm (= alg of ODE Solvers of DifferentialEquations.jl or DAE Solvers of DifferentialEquations.jl).\n\nIf the algorithm argument is missing, algorithm=Sundials.CVODE_BDF() is used, provided instantiatedModel has FloatType = Float64. Otherwise, a default algorithm will be chosen from DifferentialEquations (for details see https://arxiv.org/pdf/1807.06430, Figure 3). The symbols CVODE_BDF and IDA are exported from Modia, so that simulate!(instantiatedModel, CVODE_BDF(), ...) and simulate!(instantiatedModel, IDA(), ...) can be used (instead of import Sundials; simulate!(instantiatedModel, Sundials.xxx(), ...)).\n\nThe simulation results are stored in instantiatedModel and can be plotted with plot(instantiatedModel, ...). The result values can be retrieved with getValues(..) for Var(..) and getValue(..) for Par(..). showInfo(instantiatedModel) prints information about the signals in the result. For more details, see sections Parameters/Init/Start, Results and Plotting.\n\nThe return argument solution is the return argument from DifferentialEquations.solve(..) and therefore all post-processing functionality from DifferentialEqautions.jl can be used. Especially,\n\nsolution.t[i] # time-instant at storage point i (solution.t[end] = stopTime)\nsolution.u[i] # states at storage point i\n\nA simulation run can be aborted with C (SIGINT), provided using PyPlot or import PyPlot was not called before (the signals in Python module matplotlib.pyplot intervene with Julias signals, see PyPlot.jl issue 305).\n\nOptional ArgumentsS\n\nmerge: Define parameters and init/start values that shall be merged with the previous values stored in model, before simulation is started. If, say, an init value phi = Var(init=1.0) is defined in the model, a different init value can be provided with merge = Map(phi=2.0).\ntolerance: Relative tolerance.\nstartTime: Start time. If value is without unit, it is assumed to have unit [s].\nstopTime: Stop time. If value is without unit, it is assumed to have unit [s].\ninterval: Interval to store result. If interval=missing, it is internally selected as (stopTime-startTime)/500. If value is without unit, it is assumed to have unit [s].\ninterp_points: If crossing functions defined, number of additional interpolation points in one step.\ndtmax: Maximum step size. If dtmax==missing, it is internally set to 100*interval.\nadaptive: = true, if the algorithm should use step-size control (if available). = false, if the algorithm should use a fixed step-size of interval (if available).\nnlinearMinForDAE: If algorithm is a DAE integrator (e.g. IDA()) and the size of a linear equation system is >= nlinearMinForDAE and the iteration variables of this equation system are a subset of the DAE state derivatives, then during continuous integration (but not at events, including initialization) this equation system is not locally solved but is solved via the DAE integrator. Typically, for large linear equation systems, simulation efficiency is considerably improved in such a case.f\nlog: = true, to log the simulation.\nlogStates: = true, to log the states, its init/start values and its units.\nlogEvents: = true, to log events.\nlogProgress = true, to printout current simulation time every 5s.\nlogTiming: = true, to log the timing with instantiatedModel.timer which is an instance of TimerOutputs.TimerOutput. A user function can include its timing via\n TimerOutputs.@timeit instantiatedModel.timer \"My Timing\" .\nlogParameters: = true, to log parameters and init/start values defined in model.\nlogEvaluatedParameters: = true, to log the evaluated parameter and init/start values that are used for initialization and during simulation.\nrequiredFinalStates: is not missing: Test with @test whether the ODE state vector at the final time instant is in agreement to vector requiredFinalStates with respect to tolerances requiredFinalStates_rtol, requiredFinalStates_atol. If this is not the case, print the final state vector (so that it can be included with copy-and-paste in the simulate!(..) call). If you checked that the result of the simulation is correct, use requiredFinalStates = [] to get a printout of the required final states and then copy it in your test.\nrequiredFinalStates_rtol: Relative tolerance used for requiredFinalStates.\nrequiredFinalStates_atol: Absolute tolerance used for requiredFinalStates (see atol in ?isapprox)\nuseRecursiveFactorizationUptoSize: = 0: Linear equation systems A*v=b are solved with RecursiveFactorization.jl instead of the default lu!(..) and ldiv!(..), if length(v) <= useRecursiveFactorizationUptoSize. According to RecursiveFactorization.jl docu, it is faster as lu!(..) with OpenBLAS, for length(v) <= 500 (typically, more as a factor of two). Since there had been some cases where lu!(..)! was successful, but RecursiveFactorization.jl failed due to a singular system, the default is to use lu!(..)!.\n\nExamples\n\nusing Modia\n@usingModiaPlot\n\n# Define model\ninputSignal(t) = sin(t)\n\nFirstOrder = Model(\n T = 0.2,\n x = Var(init=0.3),\n equations = :[u = inputSignal(time/u\"s\"),\n T * der(x) + x = u,\n y = 2*x]\n)\n\n# Modify parameters and initial values of model\nFirstOrder2 = FirstOrder | Map(T = 0.4, x = Var(init=0.6))\n\n# Instantiate model\nfirstOrder = @instantiateModel(FirstOrder2, logCode=true)\n\n\n# Simulate with automatically selected algorithm (Sundials.CVODE_BDF())\n# and modified parameter and initial values\nsimulate!(firstOrder, stopTime = 1.0, merge = Map(T = 0.6, x = 0.9), logEvaluatedParameters=true)\n\n# Plot variables \"x\", \"u\" in diagram 1, \"der(x)\" in diagram 2, both diagrams in figure 3\nplot(firstOrder, [(\"x\",\"u\"), \"der(x)\"], figure=3)\n\n# Retrieve \"time\" and \"u\" values:\nusig = getPlotSignal(firstOrder, \"x\")\n # usig.xsig : time vector\n # usig.xsigLegend: legend for time vector\n # usig.ysig : \"x\" vector\n # usig.ysigLegend: legend for \"x\" vector\n # usig.ysigType : ModiaResult.Continuous or ModiaResult.Clocked\n\n# Simulate with Runge-Kutta 5/4 with step-size control\nsimulate!(firstOrder, Tsit5(), stopTime = 1.0)\n\n# Simulate with Runge-Kutta 4 with fixed step size\nsimulate!(firstOrder, RK4(), stopTime = 1.0, adaptive=false)\n\n# Simulate with algorithm that switches between\n# Verners Runge-Kutta 6/5 algorithm if non-stiff region and\n# Rosenbrock 4 (= A-stable method) if stiff region with step-size control\nsimulate!(firstOrder, AutoVern6(Rodas4()), stopTime = 1.0)\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Linearization","page":"Functions","title":"Linearization","text":"","category":"section"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"linearize!","category":"page"},{"location":"Functions.html#Modia.linearize!","page":"Functions","title":"Modia.linearize!","text":"(A, finalStates) = linearize!(instantiatedModel [, algorithm];\n stopTime = 0.0,\n analytic = false,\n )\n\nSimulate until stopTime and linearize instantiatedModel at finalStates. The names of the state vector can be inquired by get_xNames(instantiatedModel).\n\nBy default, linearization is performed numerically with a central finite difference approximation using package FiniteDiff. When setting analytic = true, linearization is preformed analytically with package ForwardDiff, so is computed by symbolically differentiating the model. ForwardDiff might not be compatible with some floating point types, such as Measurements and Julia triggers an error that some overloaded operations are ambiguous. So analytic=true will not work in such cases.\n\nAnalytic linearization returns matrix A in full precision whereas numeric linearization returns A in reduced precision (if FloatType = Float64, analytic linearization results in about 15 correct digits and numeric linearization in about 10 correct digits in the result). You can improve this situation, by using a larger FloatType for instantiatedModel, in case this is critical (see example below).\n\nOutput arguments\n\nA::Matrix: Matrix A of the linear ODE: Delta dotx = A*Delta x.\nfinalStates::Vector: Linearization point.\n\nExample\n\nusing Modia\nusing DoubleFloats\nusing Measurements\n\nFirstOrder = Model(\n T = 0.4 ± 0.04,\n x = Var(init = 0.9 ± 0.09),\n equations = :[u = inputSignal(time/u\"s\"),\n T * der(x) + x = u]\n)\n\nfirstOrder1 = @instantiateModel(FirstOrder, FloatType = Measurement{Float64})\n\n# Standard precision\n(A1, finalStates1) = linearize!(firstOrder1)\n\n# Higher precision\nfirstOrder2 = InstantiatedModel{Measurement{Double64}}(firstOrder1)\n(A2, finalStates2) = linearize!(firstOrder2)\n\n# Show results with 15 digits (default print with Measurements shows 3 digits)\nprintln(IOContext(stdout, :error_digits=>15), \"A1 = \", A1)\nprintln(IOContext(stdout, :error_digits=>15), \"A2 = \", A2)\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Parameters/Init/Start","page":"Functions","title":"Parameters/Init/Start","text":"","category":"section"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"CurrentModule = Modia","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"The following functions are provided to inquire values of parameters and of init/start values before and after evaluation:","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"Functions Description\nhasParameter Return true, if a parameter/init/start name is known\ngetParameter Return value of a parameter/init/start name\ngetEvaluatedParameter Return value of an evaluated parameter/init/start name\ngetLastValue Return last available value of a variable name\nshowParameters Print the parameters and the init/start values\nshowEvaluatedParameters Print the evaluated parameters and init/start values","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"hasParameter\r\ngetParameter\r\ngetEvaluatedParameter\r\ngetLastValue\r\nshowParameters\r\nshowEvaluatedParameters","category":"page"},{"location":"Functions.html#Modia.hasParameter","page":"Functions","title":"Modia.hasParameter","text":"hasParameter(instantiatedModel, name::AbstractString)\n\nReturn true if parameter name (for example name = \"a.b.c\") is defined in the instantiateModel.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Modia.getParameter","page":"Functions","title":"Modia.getParameter","text":"getParameter(instantiatedModel, name::AbstractString)\n\nReturn the value of parameter or init/start value name (for example name = \"a.b.c\"). If name is not known, missing is returned.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Modia.getEvaluatedParameter","page":"Functions","title":"Modia.getEvaluatedParameter","text":"getEvaluatedParameter(instantiatedModel, name::AbstractString)\n\nReturn the value of evaluated parameter or init/start value name (for example name = \"a.b.c\"). If name is not known, missing is returned.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Modia.getLastValue","page":"Functions","title":"Modia.getLastValue","text":"getLastValue(model::InstantiatedModel, name::String; unit=true)\n\nReturn the last stored value of variable name from model. If unit=true return the value with its unit, otherwise with stripped unit.\n\nIf name is not known or no result values yet available, an info message is printed and the function returns nothing.\n\nname can be a time-varying variable or a parameter.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Modia.showParameters","page":"Functions","title":"Modia.showParameters","text":"showParameters(instantiatedModel)\n\nPrint the parameters and the init/start values.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Modia.showEvaluatedParameters","page":"Functions","title":"Modia.showEvaluatedParameters","text":"showEvaluatedParameters(instantiatedModel)\n\nPrint the evaluated parameters and the evaluated init/start values.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Results-and-Plotting","page":"Functions","title":"Results and Plotting","text":"","category":"section"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"CurrentModule = Modia","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"The simulation result of a model instantiatedModel are provided as a signal table, see SignalTables.jl.","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"Therefore, all signal table functions can be used on a simulated model","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"To activate the defined plot package, use","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"@usingModiaPlot","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"Alternatively, usingPlotPackage (from Modia reexported macro of SignalTables) can be used, but then package SignalTables must be in your current environment.","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"Example:","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"using Modia\r\n\r\nFirstOrder = Model(\r\n T = 0.2u\"s\",\r\n x = Var(init=0.3),\r\n equations = :[u = sin(time/u\"s\")\r\n T * der(x) + x = u\r\n y = 2*x]\r\n)\r\nsimulate!(firstOrder, stopTime=10)\r\nshowInfo(firstOrder) # list info about the result\r\nt = getValues(firstOrder, \"time\")\r\ny = getValues(firstOrder, \"y\") # use any plot program: plot(t,y)\r\n\r\n# Write result on file\r\nwriteSignalTable(\"firstOrder.json\", firstOrder, indent=2, log=true)","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"See the generated json-file.","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"For plotting, a plot package must be installed, e.g.,","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"julia> ]add SignalTablesInterface_PyPlot # if plotting with PyPlot desired\r\n add SignalTablesInterface_GLMakie # if plotting with GLMakie desired\r\n add SignalTablesInterface_WGLMakie # if plotting with WGLMakie desired\r\n add SignalTablesInterface_CairoMakie # if plotting with CairoMakie desired","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"In a model, the desired plot package is defined with:","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"using Modia\r\nusePlotPackage(\"PyPlot\") # or ENV[\"SignalTablesPlotPackage\"] = \"PyPlot\"","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"A Modia variable a.b.c is identified by a String key \"a.b.c\". The legends/labels of the plots are automatically constructed by the names and units of the variables. Example:","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"using Modia\r\n@usingModiaPlot # execute `using SignalTablesInterface_XXX` or\r\n # execute `using Modia.SignalTables.SilentNoPlot`\r\n\r\ninstantiatedModel = @instantiateModel(...)\r\nsimulate!(instantiatedModel, ...)\r\nplot(instantiatedModel,\r\n [ (\"phi\", \"r\") (\"phi\", \"phi2\", \"w\");\r\n (\"w\", \"w2\", \"phi2\") \"w\" ],\r\n heading=\"Matrix of plots\")","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"generates the following plot:","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"(Image: Matrix-of-Plots)","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"CurrentModule = Modia","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"@usingModiaPlot","category":"page"},{"location":"Functions.html#Modia.@usingModiaPlot","page":"Functions","title":"Modia.@usingModiaPlot","text":"@usingModiaPlot()\n\nExecute using XXX, where XXX is the Plot package that was activated with usePlotPackage(plotPackage). So this is similar to @usingPlotPackage (from SignalTables, that is reexported from Modia).\n\nThere is, however, a difference when XXX = \"SilentNoPlot\":\n\n@usingPlotPackage() executes using SignalTables.SilentNoPlot and therefore requires that package SignalTables is available in your environment.\n@usingModiaPlot() executes using Modia.SignalTables.SilentNoPlot and therefore requires that package Modia is available in your environment.\n\nTherefore, when working with Modia it is better to use @usingModiaPlot().\n\n\n\n\n\n","category":"macro"},{"location":"Functions.html#PathPlanning","page":"Functions","title":"PathPlanning","text":"","category":"section"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"CurrentModule = Modia","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"There are some pre-defined functions to define reference paths","category":"page"},{"location":"Functions.html","page":"Functions","title":"Functions","text":"PTP_path\r\npathEndTime\r\ngetPosition!\r\ngetPosition\r\ngetIndex\r\ngetPath","category":"page"},{"location":"Functions.html#Modia.PTP_path","page":"Functions","title":"Modia.PTP_path","text":"path = PTP_path(names; positions, v_max, a_max, startTime=0.0)\n\nGenerate a new path object to move as fast as possible from positions[i,:] to positions[i+1,:]. The positions[i,:] can be a set of translational positions in [m], that is absolute distances, and/or rotational positions in [rad] that is angles. In robotics such a movement is called PTP (Point-To-Point). The signals are constructed in such a way that it is not possible to move faster, given the maximally allowed velocity v_max[j] and the maximally allowed acceleration a_max[j] for signal names[j] and have a velocity of zero at the given positions.\n\nIf there are two or more signals (that is length(names) > 1) then the path is constructed such that all signals are in the same periods in the acceleration, constant velocity and deceleration phase. This means that only one of the signals is at its limits whereas the others are synchronized in such a way that the end point is reached at the same time instant.\n\nFor example, this means that the signals have a velocity of zero at positions[1,:], one of the signals is accelerated with its maximally allowed acceleration until one of the signals reaches its maximally allowed velocity. At a proper time instant, one of the signals is decelerated with the negative value of its maximally allowed acceleration, so that all signals reach positions[2,:] with velocity zero.\n\nThis element is useful to generate a reference signal for a controller which controls, e.g., a drive train, or to drive a flange according to a given acceleration.\n\nExample\n\nusing Modia\n@usingModiaPlot\n\nconst ptp_path = PTP_path([\"angle1\", \"angle2\", \"angle3\"],\n positions = [0.0 2.0 3.0; # angle1=0.0, angle2=2.0, angle3=3.0\n 0.5 3.0 4.0;\n 0.8 1.5 0.3;\n 0.2 1.5 0.8],\n startTime = 0.1,\n v_max = 2*ones(3),\n a_max = 3*ones(3))\nangles = zeros(3)\ngetPosition!(ptp_path, 0.5, angles) # angles = [0.12, 2.24, 3.24]\npath = getPath(ptp_path)\nplot(path, [\"angle1\", \"angle2\", \"angle3\"])\n\n\n\n\n\n","category":"type"},{"location":"Functions.html#Modia.pathEndTime","page":"Functions","title":"Modia.pathEndTime","text":"Tend = pathEndTime(path)\n\nGiven a path::PTP_path return the end time Tend of the path.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Modia.getPosition!","page":"Functions","title":"Modia.getPosition!","text":"getPosition!(path, time, position)\n\nGiven a path::PTP_path and a time instant time, return the actual position at time time in vector position.\n\n\n\n\n\ngetPosition!(path, time, position, velocity, acceleration)\n\nGiven a path::PTP_path and a time instant time, return the actual position, velocity and acceleration at time time in vectors position, velocity, acceleration.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Modia.getPosition","page":"Functions","title":"Modia.getPosition","text":"pos = getPosition(path, index, time)\n\nGiven a path::PTP_path, the index of a signal, and a time instant time, return the actual position at time time.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Modia.getIndex","page":"Functions","title":"Modia.getIndex","text":"index = getIndex(path, name)\n\nReturn the index of name in path or trigger an error, if not present.\n\n\n\n\n\n","category":"function"},{"location":"Functions.html#Modia.getPath","page":"Functions","title":"Modia.getPath","text":"getPath(path;\n names=path.names, tend=1.1*path.Tend, ntime=101, onlyPositions=false)\n\nGiven a path::PTP_path, return a SignalTables.SignalTable with the time series of the path over time up to tend for all ntime time points.\n\n\n\n\n\n","category":"function"},{"location":"tutorial/Tutorial.html#Modia-Tutorial","page":"Modia Tutorial","title":"Modia Tutorial","text":"","category":"section"},{"location":"tutorial/Tutorial.html","page":"Modia Tutorial","title":"Modia Tutorial","text":"This tutorial gives an overview of package Modia to construct component-based and equation-based models with the Modia language on a high level, symbolically transforming these models into ODEs (Ordinary Differential Equations in state space form), simulating them and plotting result variables.","category":"page"},{"location":"tutorial/Tutorial.html","page":"Modia Tutorial","title":"Modia Tutorial","text":"Note, all examples in this tutorial can be executed with","category":"page"},{"location":"tutorial/Tutorial.html","page":"Modia Tutorial","title":"Modia Tutorial","text":"using Modia\r\ninclude(\"$(Modia.path)/examples/Tutorial.jl\")","category":"page"},{"location":"tutorial/Tutorial.html","page":"Modia Tutorial","title":"Modia Tutorial","text":"Modeling of 3D components (= multibody systems) is explained in the Modia3D Tutorial","category":"page"},{"location":"tutorial/Tutorial.html","page":"Modia Tutorial","title":"Modia Tutorial","text":"info: Info\nModia is based on SignalTables that has an interface to various plot packages. A plot package can be either selected by setting ENV[\"SignalTablesPlotPackage\"] = XXX, for example in the config/startup.jl file of Julia, or by command usePlotPackage(XXX). Possible values for XXX: \"PyPlot\" (plots with Matplotlib from Python), \n\"GLMakie\" (interactive plots in an OpenGL window),\n\"WGLMakie\" (interactive plots in a browser window),\n\"CairoMakie\" (static plots on file with publication quality), or\n\"SilentNoPlot\" (= NoPlot without messages).","category":"page"},{"location":"index.html#Modia-Documentation","page":"Home","title":"Modia Documentation","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Modia is an environment in form of a Julia package to model and simulate physical systems (electrical, mechanical, thermo-dynamical, etc.) described by differential and algebraic equations. A user defines a model on a high level with model components (like a mechanical body, an electrical resistance, or a pipe) that are physically connected together. A model component is constructed by expression = expression equations or by Julia structs/functions, such as the pre-defined Modia3D multibody components. The defined model is symbolically processed (for example, equations might be analytically differentiated) with algorithms from package ModiaBase.jl. From the transformed model a Julia function is generated that is used to simulate the model with integrators from DifferentialEquations.jl. The basic type of the floating point variables is usually Float64, but can be set to any type FloatType <: AbstractFloat via @instantiateModel(..., FloatType = xxx), for example it can be set to Float32, DoubleFloat, Measurement{Float64}, StaticParticles{Float64,100}.","category":"page"},{"location":"index.html#Installation","page":"Home","title":"Installation","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"The package is registered and is installed with (Julia >= 1.7 is required):","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"julia> ]add Modia","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Furthermore, one or more of the following packages should be installed in order to be able to generate plots:","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"julia> ]add SignalTablesInterface_PyPlot # if plotting with PyPlot desired\r\n\r\n # currently under registration\r\n add SignalTablesInterface_GLMakie # if plotting with GLMakie desired\r\n add SignalTablesInterface_WGLMakie # if plotting with WGLMakie desired\r\n add SignalTablesInterface_CairoMakie # if plotting with CairoMakie desired","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"or call t = getValues(instantiatedModel, \"time\"), y = getValues(instantiatedModel, \"y\") to retrieve the results in form of vectors and arrays and use any desired plot package for plotting, e.g., plot(t,y).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Note, Modia reexports the following definitions","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"using Unitful\nusing DifferentialEquations\nusing SignalTables\nand exports functions CVODE_BDF and IDA of Sundials.jl.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"As a result, it is usually sufficient to have using Modia in a model to utilize the relevant functionalities of these packages.","category":"page"},{"location":"index.html#Release-Notes","page":"Home","title":"Release Notes","text":"","category":"section"},{"location":"index.html#Version-0.12.0","page":"Home","title":"Version 0.12.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Improved documentation of built-in component functions.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Non-backwards compatible changes ","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Renamed struct SimulationModel to InstantiatedModel.\nRenamed function get_scalar_x_segmented_value to copy_scalar_x_segmented_value_from_state\nRenamed function get_SVector3_x_segmented_value to copy_SVector3_x_segmented_value_from_state\nRenamed function get_Vector_x_segmented_value! to copy_Vector_x_segmented_value_from_state\nRenamed function add_der_x_segmented_value! to copy_der_x_segmented_value_to_state\nRenamed function add_w_segmented_value! to copy_w_segmented_value_to_result","category":"page"},{"location":"index.html#Version-0.11.0","page":"Home","title":"Version 0.11.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Require ModiaBase 0.11.1\nManifest.toml file removed.\ntest.yml for github actions changed to use Julia 1.9.0","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Non-backwards compatible changes ","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"These changes only influence models that use the new feature of built-in components.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"_buildFunction argument list changed (options of @instantiateModel added)","category":"page"},{"location":"index.html#Version-0.10.0","page":"Home","title":"Version 0.10.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Initial support of segmented simulations where the number of states can change during simulation. For examples, see Modia/test/TestHeatTransfer2.jl and models in directory Modia3D/test/Segmented (of release 0.12.0 and later). The tutorial will be updated for this feature in an upcoming version.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Non-backwards compatible changes ","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"These changes should usually not influence user models.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"_buildFunction = changed to _buildFunction = Par(functionName = ) and changed argument list of .\n_instantiateFunction = Par(..) changed to _initSegmentFunction = Par(functionName = ) and changed argument list of .","category":"page"},{"location":"index.html#Version-0.9.4","page":"Home","title":"Version 0.9.4","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Precompile statements included (compilation of Modia package takes more time, but startup of Modia model simulations is faster).\n@instantiateModel(..., logFile=true): New keyword argument logFile in order that log of file and line number can be switched off, when @instantiateModel is called.\nError messages improved, when model errors result in failed evaluation of parameters.\nLog of statistics improved and included in writeSignalTable(..) of instantiatedModel.\nSignalTables.getSignalNames(..): Order of signal names improved so that the linear listing reflects the hierarchy of the names.\nwriteSignalTable(..): attributes renamed to _attributes. All used simulate!(..) options included in Map experiment.\nRequire SignalTables 0.4.2 (since several issues fixed with writeSignalTable(..)).\nUpdate to newest versions of packages.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Bug fixes","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"DifferentialEquations 7.6.0 introduced a non-backwards compatible change with #867. Modia was corrected to cope with this change (based on #162).\n@instantiateModel(..., logCalculations=true) skipped actual computations. This was fixed via #161.","category":"page"},{"location":"index.html#Version-0.9.3","page":"Home","title":"Version 0.9.3","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Requires SignalTables 0.4.0 (introduces Map-signal)\ngetSignalNames(...; getVar=true, getPar=true, getMap=true): New keyword arguments to filter names.\nwriteSignalTable(...) of instantiatedModel: Include attributes = Map(model=..., experiment=...).\nSome internal bug-fixes.","category":"page"},{"location":"index.html#Version-0.9.2","page":"Home","title":"Version 0.9.2","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Bug fix: integrator IDA() can be used (especially to avoid solving large linear equation systems in the model).\nExtend some test models to use IDA().","category":"page"},{"location":"index.html#Version-0.9.1","page":"Home","title":"Version 0.9.1","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Requires SignalTables 0.3.5.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"@usingModiaPlot: corrected and fixed in docu. Alternatively, @usingPlotPackage can be used, provided package SignalTables is present in your current environment.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Internal: A function call in the generated code prefixed with Modia..","category":"page"},{"location":"index.html#Version-0.9.0","page":"Home","title":"Version 0.9.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"This version is slightly non-backwards compatible to 0.8.x. Most important, the result handling has been changed. Especially, package ModiaResult.jl has been replaced by package SignalTables.jl. Also the plot package interfaces SignalTablesInterface_PyPlot, SignalTablesInterface_GLMakie etc. have been replaced by packages SignalTablesInterface_PyPlot, SignalTablesInterface_GLMakie etc.\nIn order that plotting works again with your models, you have to add one of the new plot package interfaces, e.g. ]add SignalTablesInterface_PyPlot. One benefit is, that the plot packages have now access to all attributes associated with a variable.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"An instantiated model (as returned from @instantiateModel(..)) is now a signal table according to SignalTables.jl. This means that all functions defined for a signal table (see function overview) can be applied on a simulated model. Hereby, all Var(..) and Par(..) Modia variables are seen as signals of the signal table (so both time varying variables, as well as parameters). See example Modia/test/TestFirstOrder2.jl.\nFor example, it is now possible to store simulation results (together with all parameter and start values) on file in JSON format with writeSignalTable(filename, instantiatedModel) (or in HDF5 format via JDL). You get an overview of a simulation result via showInfo(instantiatedModel).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"New functions hasParameter, getParameter, getEvaluatedParameter, showParameters, showEvaluatedParameters to get parameter/init/start values by name (e.g. getEvaluatedParameter(instantiatedModel, \"a.b.c\")) or show all parameters.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"New functions to add states and algebraic variables from within functions that are not visible in the generated code (see Variables of built-in Components and example Modia/test/TestLinearSystems.jl). This feature is used in the next version of Modia3D to allow (Modia3D) model changes after code generation and to get more light weight code.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"simulate!(..): Maximum number of iterations is switched off (DifferentialEquations.jl option set to: maxiters = Int(typemax(Int32)) ≈ 2e9).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Docu improved.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Bug fixes","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"A hierarchical model name with a derivative operator, say der(a.b.c), has now the correct name a.b.der(c) in the result. For example, the plot command needs to be changed to plot(..., \"a.b.der(c)\") instead of the previous command plot(..., \"der(a.b.c)\").\nThe initial state vector was not always correctly filled with start/init values of the model (is now fixed).\nsignalNames(instantiatedModel) did sometimes not show the correct signal names available in the result (is now fixed). signalNames is deprecated. Use instead getSignalNames.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Non-backwards compatible changes","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Bug fix 1 can lead for some models to warnings and the selected variable is no longer plotted (-> the model needs to be changed).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Bug fix 2 can lead for some models to a different result (without notice).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"The result data structure is now constructed with deepcopy(..) of every involved result variable. Previously, for some result variables just the variable reference was stored. The effect is that if previously a complex internal data structure was incorporated into the result data structure, then it was present just once. Now, a deepcopy of the data structure is stored at every time instant. Note, a variable v (especially, a complex internal data structure) is not stored in the result if defined as v = Var(hideResult=true). In some rare cases, deepcopy(..) gives an error (if module variables are, for whatever reason, tried to be copied). Such variables v need to be declared with v = Var(hideResult=true), in order that this error does not appear (and these variables are then not stored in the result).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Function rawSignal(instantiatedModel, name) is no longer supported. Use getValues or getSignal instead.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Function getPlotSignal(instantiatedModel, name) is no longer supported. Use getFlattenedSignal instead.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Function getPath(path, ...) does no longer return a dictionary but a SignalTable.","category":"page"},{"location":"index.html#Version-0.8.4","page":"Home","title":"Version 0.8.4","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Fix issue with DiffEqBase, version 6.91.6 and later.","category":"page"},{"location":"index.html#Version-0.8.3","page":"Home","title":"Version 0.8.3","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Bug fix: Parameters that are Numbers, but not AbstractFloats, and have no unit defined, e.g. a Bool or an Int parameter, are no longer converted to FloatType in the generated Code.","category":"page"},{"location":"index.html#Version-0.8.2","page":"Home","title":"Version 0.8.2","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"New exported functions\nmodelToJSON(model; expressionsAsStrings=true)\nJSONToModel(json)\nwriteModel(filename, model; log=true)\nreadModel(filename; log=true)\nwriteModel saves the model in JSON format on file and readModel reads the model from a JSON file.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Modia/examples/ServoSystem.jl enhanced, so that the hierarchical model with units is first stored in JSON format on file, then the model is read from file, a parameter is modified, and then the model is passed to @instantiateModel(..).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"@instantiateModel(...):\n@instantiateModel(..., logCode=true, ...) provides now correct unit type casts for scalars.\n@instantiateModel(..., saveCodeOnFile=fileName, ...) stores the generated code on file fileName.\nAutomatically use @instantiatedModel(..., unitless=true, ..), if FloatType = MonteCarloMeasurements.XXX, because there are easily cases where this fails, if units are present.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"@showModel model: Nicer pretty print if model is hierarchical.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"New function Modia.unitAsString(unitOfQuantity), see Unitful issue 412 (https://github.com/PainterQubits/Unitful.jl/issues/412).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Remove empty hierarchies in model parameters (seen with simulate!(..., logParameters=true)).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Memory allocation reduced if states or tearing variables are SVectors.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Improved casting and checking of types in the generated code (see new test model Modia/test/TestUnitAsString.jl).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Moved ModiaBase.Symbolic.makeDerVar from ModiaBase to new file Modia/src/Symbolic.jl (because makeDerVar needs FloatType for generating type-stable code and FloatType is available in Modia but not in ModiaBase).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Github actions workflow added for automatic tests on Linux/Windows/MacOS, for pull requests on main.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Bug fixes","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Fixed issue with unit on macOS (exponents had been displayed as Unicode superscripts when converting the unit to a string, leading to errors in the further processing).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Hide result only if Var(hideResult=true) (previously, hideResult=false was treated as true).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Modia/models/Rotational.jl: Change some Int to Float64 values, because errors occured in some situations.","category":"page"},{"location":"index.html#Version-0.8.1","page":"Home","title":"Version 0.8.1","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Missing file Modia/test/TestLinearEquations.jl added.","category":"page"},{"location":"index.html#Version-0.8.0","page":"Home","title":"Version 0.8.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Non-backwards compatible changes","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"The Modia packages are slightly restructured to allow more efficient operations. Previously, Modia was planned to include all the functionality with all model libraries. This is now changed and Modia includes now equation-oriented modeling and basic model libraries. Further model libraries, such as Modia3D (and other model libraries in the future) must be explicitly imported and are no longer automatically imported by Modia. To simplify the structuring, ModiaLang is merged into Modia and some functionality for the code generation is moved from ModiaBase to Modia. Overall, the benefit is that loading and compilation times are reduced, if Modia3D is not needed. Furthermore, the generated code contains only references to Modia functionality and no longer to ModiaBase. Details of the changes:","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"ModiaLang#main 0.11.3 and ModiaLang#development merged into Modia 0.7.0 resulting in the new Modia version 0.8.0 (hereby history of both ModiaLang and of Modia is preserved).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Modia3D is removed from Modia (so when a model is using Modia3D, the package must be explicitly imported and is no longer automatically imported from Modia).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Require ModiaBase 0.10 (where EquationAndStateInfo.jl and StateSelection.jl are removed and added to Modia, in order that only references to Modia are in the generated code and no longer references to ModiaBase).","category":"page"},{"location":"index.html#Old-Release-Notes-(until-28.2.2022)","page":"Home","title":"Old Release Notes (until 28.2.2022)","text":"","category":"section"},{"location":"index.html#Release-Notes-of-Modia-(until-28.2.2022)","page":"Home","title":"Release Notes of Modia (until 28.2.2022)","text":"","category":"section"},{"location":"index.html#Version-0.7.0","page":"Home","title":"Version 0.7.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Non-backwards compatible changes (basically, these changes are, erronously, in 0.6.1):","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Equations can only be defined with key equations and no other key (still, expressions can be associated with one variable, such as b = Var(:(2*a))). In versions 0.6.0 and before, equations could be associated with any key.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"The merge operator | appends the expression vectors of equations, so m1 | m2 basically appends the vector of m2.equations to the vector of m1.equations. In versions 0.6.0 and before, the merge operator did not handle equations specially, and therefore m1 | m2 replaced m1.equations by m2.equations.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Parameter values in the code are now type cast to the type of the parameter value from the @instantiatedModel(..) call. The benefit is that access of parameter values in the code is type stable and operations with the parameter value are more efficient and at run-time no memory is allocated. Existing models can no longer be simulated, if parameter values provided via simulate!(.., merge=xx) are not type compatible to their definition. For example, an error is thrown if the @instantedModel(..) uses a Float64 value and the simulate!(.., merge=xx) uses a Measurement{Float64} value for the same parameter","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Operator buildModia3D(..) as used in Modia3D models is removed. Instead, the new constructor Model3D(..) must be used at the top level of a Modia3D definition. It is now possible to define several, independent multibody systems (currently, only one of them can have animation and animation export).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Var(init=[...]) or Var(start=[..]) of FreeMotion joints must be defined as Var(init=SVector{3,Float64}(..)) or Var(start=SVector{3,Float64}(..)). Otherwise, errors occur during compilation.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Other changes","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Documentation (especially tutorial) adapted to the new version.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Examples and test models (Modia/examples, Modia/tests) adapted to the new version, especially to the non-backwards compatible changes.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"For further changes of equation-based models, see the release notes of ModiaLang 0.11.0.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"For further changes of Modia3D models, see the release notes of Modia3D 0.9.0.","category":"page"},{"location":"index.html#Version-0.6.1","page":"Home","title":"Version 0.6.1","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"This version was erronously released as 0.6.1. Since it contains non-backwards compatible changes with respect to 0.6.0, this is wrong and should have been released as version 0.7.0.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"See release notes of ModiaLang and of Modia3D.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Project.toml and Manifest.toml updated due to new versions of Modia3D and ModiaLang","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"docu: fix some typing and formatting","category":"page"},{"location":"index.html#Version-0.6.0","page":"Home","title":"Version 0.6.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Modia is restricted to Julia 1.7\ncyclic dependencies with Modia3D package are removed","category":"page"},{"location":"index.html#Version-0.5.2","page":"Home","title":"Version 0.5.2","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Fully reexporting Modia3D and removing duplicate ModiaInterface (see Modia3D release notes 0.6.0).","category":"page"},{"location":"index.html#Version-0.5.1","page":"Home","title":"Version 0.5.1","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Using and reexporting ModiaLang 0.8.3 (see release notes 0.8.3 and 0.8.2).\nUsing and partially reexporting Modia3D 0.5.1 (see release notes 0.5.1).","category":"page"},{"location":"index.html#Version-0.5.0","page":"Home","title":"Version 0.5.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Using and reexporting ModiaLang 0.8.1 (see release notes).\nUsing and partially reexporting Modia3D 0.5.0 (see release notes).\nNew plot package interface via ModiaResult. Additional support for PyPlot, WGLMakie, CairoMakie (besides GLMakie).","category":"page"},{"location":"index.html#Version-0.4.0","page":"Home","title":"Version 0.4.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Initial version of new Modia design.","category":"page"},{"location":"index.html#Release-Notes-of-ModiaLang-(until-28.2.2022)","page":"Home","title":"Release Notes of ModiaLang (until 28.2.2022)","text":"","category":"section"},{"location":"index.html#Version-0.11.3","page":"Home","title":"Version 0.11.3","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"@instantiateModel(..): Var(hideResult=true) is no longer ignored if present in a sub-component.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"simulate!(..): Unnecessary evaluation of the parameters dictionary is avoided (if merge = missing, nothing or has no elements).","category":"page"},{"location":"index.html#Version-0.11.2","page":"Home","title":"Version 0.11.2","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Minor (efficiency) improvement if states are SVectors.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Require ModiaBase 0.9.2 (to get rid of performance issues in Modia3D).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Replace ustrip(..) with ustrip.(..) at some places to get rid of warnings.","category":"page"},{"location":"index.html#Version-0.11.1","page":"Home","title":"Version 0.11.1","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Update of Manifest.toml file\nRequire ModiaBase 0.9.1 (with updated Manifest.toml file)","category":"page"},{"location":"index.html#Version-0.11.0-2","page":"Home","title":"Version 0.11.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Non-backwards compatible changes","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Equations can only be defined with key equations and no other key.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Parameter values in the code are now type cast to the type of the parameter value from the @instantiatedModel(..) call. The benefit is that access of parameter values in the code is type stable and operations with the parameter value are more efficient and at run-time no memory is allocated. Existing models can no longer be simulated, if parameter values provided via simulate!(.., merge=xx) are not type compatible to their definition. For example, an error is thrown if the @instantedModel(..) uses a Float64 value and the simulate!(.., merge=xx) uses a Measurement{Float64} value for the same parameter","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Other changes","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Hierarchical names in function calls supported (e.g. a.b.c.fc(..)).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Functions can return multiple values, e.g. (tau1,tau2) = generalizedForces(derw1, derw2).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Support for StaticArrays variables (the StaticArrays feature is kept in the generated AST). For an example, see ModiaLang/test/TestArrays.jl.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Support for Array variables (especially of state and tearing variables) where the dimension can change after @instantiateModel(..). For examples, see ModiaLang/test/TestArrays.jl and TestMultiReturningFunction10.jl.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"New keyword Var(hideResult=true) removes variable from the result (has no effect on states, derivative of states and parameters). For an example, see ModiaLang/test/TestMultiReturningFunction10.jl","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"New feature of @instantiatedModel(..): If a Model(..) has key :_buildFunction, call this function to merge additional code to the model. For details see the docu of function buildSubModels! in ModiaLang.jl. For examples, see ModiaLang/test/TestMultiReturningFunction10.jl and constructor Model3D(..) in Modia3D/src/ModiaInterface/model3D.jl and Modia3D/src/ModiaInterface/buildModia3D.jl.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Generalized connection semantics.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Functions converting model to/from JSON: modelToJSON(model), JSONtoModel(json_string)","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"simulate!(..):\nNew option logProgress=false in function simulate!(..) to print current simulation time every 5s (cpu-time).\nIf tolerance is too small, a warning is prented and it is automatically enlarged to a meaningful value (e.g. tolerance = 1e-8 is not useful if FloatType=Float32)\nLogging improved: If log=true or logTiming=true, then timing, memory allocation and compilation time is reported for initialization (ths includes compilation of the generated getDerivatives(..) function). The remaining log shows cpu-time and memory allocation without initialization (and without the resources needed to compile getDerivatives(..)).\nPrefix messages of the timers with \"ModiaLang\" or \"DifferentialEquations\" to more clearly see the origin of a message in the timer log.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Large speedup of symbolic transformation, if function depends on many input (and output) arguments (includes new operator implicitDependency(..)).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Included DAE-Mode in solution of linear equation system (if DAE integrator is used and all unknowns of a linear equation system are part of the DAE states, solve the linear equation system during continuous integration via DAE solver (= usually large simulation speed-up, for larger linear equation systems)","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Bug fixes","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"If unitless=true, units in instantiatedModel.evaluatedParameters are removed.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"The unit macro is kept in the generated code and is no longer expanded. For example, u\"N\", is kept in the code that is displayed with logCode=true (previously, this was expanded and the unit was displayed in the code as N which is not correct Julia code).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Function ModiaLang.firstInitialOfAllSegments(..) now correctly returns true for the first call of the getDerivatives function during the simulation.","category":"page"},{"location":"index.html#Version-0.10.2","page":"Home","title":"Version 0.10.2","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Minor (efficiency) improvement if states are SVectors.\nRequire ModiaBase 0.9.2 (to get rid of performance issues in Modia3D).\nReplace ustrip(..) with ustrip.(..) at some places to get rid of warnings.","category":"page"},{"location":"index.html#Version-0.10.1","page":"Home","title":"Version 0.10.1","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Update of Manifest.toml file\nRequire ModiaBase 0.9.1 (with updated Manifest.toml file).","category":"page"},{"location":"index.html#Version-0.10.0-2","page":"Home","title":"Version 0.10.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Require DifferentialEquations.jl version 7.\nCleanup of using/export\nCleanup of Project.toml/Manifest.toml.´\n@reexport using Unitful\n@reexport using DifferentialEquations\nCleanup of test files (besides ModiaLang, no other package needed in the environment to run the tests).\nChange InstantiatedModel{FloatType,ParType,EvaluatedParType,TimeType} to InstantiatedModel{FloatType,TimeType}","category":"page"},{"location":"index.html#Version-0.9.1-2","page":"Home","title":"Version 0.9.1","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"New function plotPath to plot a PTP_path\nReplace ustrip(..) with ustrip.(..) at some places to get rid of warnings.\nInclude time in error message, if simulation failed","category":"page"},{"location":"index.html#Version-0.9.0-2","page":"Home","title":"Version 0.9.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Require Julia 1.7\nUpgrade Manifest.toml to version 2.0\nUpdate Project.toml/Manifest.toml","category":"page"},{"location":"index.html#Version-0.8.7","page":"Home","title":"Version 0.8.7","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Packages used in test models, prefixed with ModiaLang. to avoid missing package errors.\nDeactivating test with DoubleFloats, since not in Project.toml\nVersion/date updated","category":"page"},{"location":"index.html#Version-0.8.6","page":"Home","title":"Version 0.8.6","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Require ModiaResult, version 0.3.9\nProject.toml/Manifest.toml updated","category":"page"},{"location":"index.html#Version-0.8.5","page":"Home","title":"Version 0.8.5","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"simulate!(..):\nTrigger an error, if simulation is not successful (retcode is neither :Default nor :Success nor :Terminate)\nUse RightRootFind for zero crossings (improves state events based on new DifferentialEquations option)\nNew keyword argument requiredFinalStates_atol=0.0.\nImprove docu (e.g. add return argument solution).\nShow correct integrator name QBDF in simulation log (instead of QNDF)\nRaise an error, if (relative) tolerance is too small for FloatType\nUse FloatType for zero crossing hysteresis, instead of Float64\nIf log=true print info about end of initialization.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Support of MonteCarloMeasurements with units + new test model TestLinearEquationSystemWithUnitsAndMonteCarlo.jl","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Fixing and activating the deactivated test TestTwoInertiasAndIdealGearWithUnitsAndMonteCarlo.jl.","category":"page"},{"location":"index.html#Version-0.8.4-2","page":"Home","title":"Version 0.8.4","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"FloatType is included in the name space of Core.eval when evaluating parameters.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Version and Date updated","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Included Version in printout of runtests.jl and runtests_withPlot.jl","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Print difference of finalStates and requiredFinalStates in case they do not match with the given tolerance.","category":"page"},{"location":"index.html#Version-0.8.3-2","page":"Home","title":"Version 0.8.3","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Project.toml, Manifest.toml updated: Require newest version 0.7.7 of ModiaBase (containing a bug fix)","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Minor correction of simulate!(log=true) output","category":"page"},{"location":"index.html#Version-0.8.2-2","page":"Home","title":"Version 0.8.2","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Issue with tearing fixed: Variables are only explicitly solved, if linear factor is a non-zero literal number (previously a division by zero could occur, if the linear factor became zero during simulation).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Issue with unit of tearing variable fixed, if it is a derivative of a variable (previously, the generated code for unitless=false was wrong, if the tearing variable was a derivative, since the unit was not taken into account).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"simulate!(..):\nSupport DAE integrators, especially IDA() from Sundials.\nNew keyword useRecursiveFactorizationUptoSize=0: Linear equation systems A*v=b are solved with RecursiveFactorization.jl instead of the default lu!(..) and ldiv!(..), if length(v) <= useRecursiveFactorizationUptoSize. According to RecursiveFactorization.jl docu, it is faster as lu!(..) with OpenBLAS, for length(v) <= 500 (typically, more as a factor of two). Since there had been some cases where lu!(..)! was successful, but RecursiveFactorization.jl failed due to a singular system, the default is to use lu!(..)!.\nIf log=true, sizes of linear equation systems are listed, as well as whether RecursiveFactorization.jl is used for the respective system.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Test for RecursiveFactorization.jl added in TestTwoInertiasAndIdealGear.jl","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Some test models corrected (since leading to errors with the above changes).","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Updated Project.toml and Manifest.toml with newest versions of packages (including MonteCarloMeasurements, version >= 1) and improved Project.toml file to reduce issues with package constraints","category":"page"},{"location":"index.html#Version-0.8.1-2","page":"Home","title":"Version 0.8.1","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Added a minimal documentation, including release notes.\nNo message anymore, when ModiaLang is started.\nFixed bug that using ModiaResult is needed, when calling @usingModiaPlot.","category":"page"},{"location":"index.html#Version-0.8.0-2","page":"Home","title":"Version 0.8.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Improved scalability by using OrderedDicts instead of named tuples for models, variables and parameter modifications.\nSpeed improvements for structural and symbolic algorithms.\nAdded support for state events, time events and synchronous operators.\nAdded support for mixed linear equation systems having Real and Boolean unknowns.\nAdded support for user-defined components defined by structs and functions (multibody modeling with Modia3D is based on this feature). This makes it possible to utilize algorithms specialized for a component.\nAdded support for numerical and analytic linearization.\nAdded support for propagation of parameters (e.g. deep in a model, the value of a parameter can be defined as a function of some top level parameter and this parameter is changed before simulation starts).\nNew small model libraries Translational.jl and PathPlanning.jl added.\nResult storage changed: sol = simulate!(...) calls internally sol = solve(..) from DifferentialEquations.jl. sol contains time and the states at the communication time grid and at events. This is now kept in simulate(..), so the return value of simulate!(..) can be exactly used as if solve(..) would have been used directly.\nThe plot(..) command now supports the following underlying plot packages: PyPlot, GLMakie, WGLMakie, and CairoMakie. It is also possible to select NoPlot, to ignore plot(..) calls or SilenNoPlot to ignore plot(..) calls silently. The latter is useful for runtests.jl. Note, often PyPlot is the best choice.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Changes that are not backwards compatible to version 0.7.x:","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Models are OrderedDicts and no longer NamedTuples.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"simulate!(..):\nIf FloatType=Float64 and no algorithm is defined, then Sundials.CVODE_BDF() is used instead of the default algorithm of DifferentialEquations as in 0.7. The reason is that Modia models are usually large and expensive to evaluate and have often stiff parts, so that multi-step methods are often by far the best choice. CVODE_BDF() seems to be a good choice in many applications (another algorithm should be used, if there are many events, highly oscillatory vibrations, or if all states are non-stiff).\nThe default value of stopTime is equal to startTime (which has a default value of 0.0 s), and is no longer 1.0 s.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Plotting is defined slightly differently (@useModiaPlot, instead of using ModiaPlot).","category":"page"},{"location":"index.html#Version-0.7.3","page":"Home","title":"Version 0.7.3","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Evaluation and propagation of parameter expressions (also in simulate!(..., merge=Map(...))). Propagation of start/init values of states is not yet supported.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"State events supported.","category":"page"},{"location":"index.html#Version-0.7.2","page":"Home","title":"Version 0.7.2","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Missing dependency of Test package added.","category":"page"},{"location":"index.html#Version-0.7.1","page":"Home","title":"Version 0.7.1","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Variable constructor Var(...) introduced. For example: v = input | Var(init = 1.2u\"m\").","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Functions are called in the scope where macro @instantiateModel is called.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"New arguments of function simulate!:\nParameter and init/start values can be changed with argument merge.\nA simulation can be checked with argument requiredFinalStates.\nArgument logParameters lists the parameter and init/start values used for the simulation.\nArgument logStates lists the states, init, and nominal values used for the simulation.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"end in array ranges is supported, for example v[2:end].","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"New (small) model library Modia/models/HeatTransfer.jl.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Modia Tutorial improved.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Functions docu improved.","category":"page"},{"location":"index.html#Version-0.7.0-2","page":"Home","title":"Version 0.7.0","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Initial version, based on code developed for Modia 0.6 and ModiaMath 0.6.","category":"page"},{"location":"index.html#Main-developers","page":"Home","title":"Main developers","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Hilding Elmqvist, Mogram.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Martin Otter, DLR - Institute of System Dynamics and Control.","category":"page"}] +} diff --git a/stable/tutorial/Appendix.html b/stable/tutorial/Appendix.html new file mode 100644 index 0000000..bf443d0 --- /dev/null +++ b/stable/tutorial/Appendix.html @@ -0,0 +1,50 @@ + +Appendix A · Modia

      Appendix A

      A.1 Var constructor

      The constructor Var(..) defines attributes of a variable with key/value pairs. In column 1 the keys are shown. The default is that none of the keys are defined (meaning key = nothing). Most of the keys are also provided as predefined constants as shown in column 2 and 3. These constants can be used as shortcuts:

      Var keyShortCutShortcut valueDescription
      parameterparameterVar(parameter = true)If true, value is fixed during simulation
      inputinputVar(input = true)If true, input signal
      outputoutputVar(output = true)If true, output signal
      potentialpotentialVar(potential = true)If true, potential variable
      flowflowVar(flow = true)If true, flow variable
      initInitial value of ODE state (defines unit and size)
      startStart value of variable (defines unit and size)
      hideResultIf true, the variable is not stored in the result

      Example:

      v = output | Var(start = zeros(3)u"N*m")
      +
      +# Same as: v = Var(output = true, start = zeros(3)u"N*m")

      An attribute can be removed by using a value of nothing. Example:

      System1 = Model(v = input | Var(init = 1.0), ...)
      +
      +# System2 = Model(v = input, ...)
      +System2 = System1 | Map(v = Var(init = nothing), ...)

      The following attributes are also defined for constructor Var, but have no effect yet. Using min, max, info already now, might be useful for model libraries:

      Var KeyShortcutShortcut valueDescription
      constantconstantVar(constant = true)If true, value cannot be changed
      min, maxinterval(a,b)Var(min = a, max = b)Allowed variable value range
      infoinfo"..."Var(info="...")Description

      Example:

      v = output | interval(0.0,1.0) | Var(start = zeros(3)u"N*m") | info"An output variable"
      +
      +# Same as: v = Var(output = true, min = 0.0, max = 1.0,
      +#                  start = zeros(3)u"N*m", info = "An output variable")

      A.2 Dictionaries and quoted expressions

      The fundamental mechanism for defining models, variables and parameter modifications in Modia are ordered dictionaries, i.e. a list of key/value pairs:

      julia> using OrderedCollections
      +
      +julia> S = OrderedDict(:p=>5, :q=>10)
      +OrderedDict{Symbol, Int64} with 2 entries:
      +  :p => 5
      +  :q => 10

      It is also possible to define a constructor Model with keyword arguments which creates the ordered dictionary:

      julia> Model(; kwargs...) = OrderedDict{Symbol, Any}(kwargs)
      +Model (generic function with 1 method)
      +
      +julia> T=Model(q=100, r=200)
      +OrderedDict{Symbol, Any} with 2 entries:
      +  :q => 100
      +  :r => 200

      The values can also be a quoted expression, i.e. an expression enclosed in :( ), an array of quoted expressions enclosed in :[ ] or just a quoted symbol, :x. This mechanism is used to encode equations and expressions of the model which needs to be manipulated before the model can be simulated.

      Julia defines a very useful merge operation between dictionaries:

      julia> merge(S, T)
      +OrderedDict{Symbol, Any} with 3 entries:
      +  :p => 5
      +  :q => 100
      +  :r => 200

      If a key already exists in the first dictionary (like :q), its value is overwritten (like :r) otherwise it's added (like :p). Such a merge semantic allows for unification of parameter modifications and inheritance as will be demonstrated below.

      A.3 MergeModels algorithm

      The basics of the mergeModels algorithm and the merge operator | are defined as follows (without logging):

      function mergeModels(m1::AbstractDict, m2::AbstractDict, env=Symbol())
      +    result = deepcopy(m1)
      +    for (k,v) in m2)
      +        if typeof(v) <: AbstractDict
      +            if k in keys(result) && ! (:_redeclare in keys(v))
      +                if typeof(result[k]) <: AbstractDict
      +                    result[k] = mergeModels(result[k], v, k)
      +                end
      +            else
      +                result[k] = v
      +            end
      +        elseif v === nothing
      +            delete!(result, k)
      +        elseif k in keys(result) && k == :equations
      +            equa = copy(result[k])
      +            push!(equa.args, v.args...)
      +            result[k] = equa
      +        else
      +            result[k] = v
      +        end
      +    end
      +    return result
      +end
      +
      +|(m::AbstractDict, n::AbstractDict) =  mergeModels(m, n)
      +
      diff --git a/stable/tutorial/FloatingPointTypes.html b/stable/tutorial/FloatingPointTypes.html new file mode 100644 index 0000000..7baa540 --- /dev/null +++ b/stable/tutorial/FloatingPointTypes.html @@ -0,0 +1,50 @@ + +4 Floating Point Types · Modia

      4 Floating Point Types

      The types of the floating point numbers in a Modia model can be parameterized with argument FloatType of macro @instantiateModel:

      filter = @instantiateModel(Filter; FloatType = Float64)

      By default, a floating point number has type Float64.

      Warning

      Using another floating point type requires that a DifferentialEquations.jl integrator is used that is implemented in native Julia. An integrator that interfaces an integrator implemented in C (such as CVODE_BDF() the popular Sundials BDF method), cannot be used.

      4.1 Lower and higher precision

      In principal, any floating point type of Julia (so any type that is derived from AbstractFloat) can be used in the model and the integrators. Examples

      TypePrecisionPackageUsage
      Float327 digitsbuilt-inEmbedded system
      Float6416 digitsbuilt-inOffline simulation
      Double6430 digitsDoubleFloatsHigh precision needed
      BigFloatarbitrarybuilt-inVery high precision needed (very slow)
      • The Float32 type might be used to test the execution and numerics of a model that shall later run on an embedded system target (there is no automatic way, yet, to translate a Modia model to C).
      • Double64 is a type that is constructed from two Float64 types. The execution is much faster as the comparable Julia built-in type BigFloat when set to 128 bit precision. The Double64 type might be used, when simulation with Float64 fails due to numerical reasons (for example the model is very sensitive, or equation systems are close to singularity) or when very stringent relative tolerances are needed, for example relative tolerance = 1e-15 as needed for some space applications.

      In the following example, simulation is performed with a Float32 floating point type used for model and integrator and utilizing a Runge-Kutta integrator of order 4 with a fixed step size of 0.01 s:

      filter = @instantiateModel(Filter, FloatType = Float32)
      +simulate!(filter, RK4(), adaptive=false, stopTime=10.0, interval=0.01)

      4.2 Uncertainties

      Package Measurements provides a floating point type designed for error propagation. A floating point number is defined with a nominal value and an uncertainty:

      using Measurements
      +
      +m1 = 2.1 ± 0.4
      +m2 = 2*m1           # 4.2 ± 0.8
      +m3 = m2 - m1        # 2.1 ± 0.4

      The statement m1 = 2.1 ± 0.4 defines that m1 has a nominal value of 2.1 with a standard deviation of 0.4. This means that the probability is about 95 % that the value of m1 is in the range 1.3 .. 2.9. Package Measurements computes the error propagation with first-order theory (so this is typically an approximation) by computing the partial derivatives of all variables with respect to all source error definitions and computing the propagated error with this information. The benefit is that the error bounds are typically reasonably propagated and the computation is reasonably fast. The drawback is that it is an approximation and will be not correct, if the uncertainty is too large and/or the signals change too quickly (for example are discontinuous).

      The following model defines a simple pendulum where a mass point is attached via a rod and a revolute joint to the environment. It is described by the equations

      \[\begin{aligned} + \frac{d\varphi}{dt} &= \omega \\ + 0 &= m \cdot L^2 \cdot \frac{d\omega}{dt} + d \cdot \omega + m \cdot g \cdot L \cdot sin(\varphi) +\end{aligned}\]

      where $\varphi$ is the rotation angle, $\omega$ the angular velocity, $m$ the mass, $L$ the rod length, $d$ a damping constant and $g$ the gravity constant. This model can be defined with the commands:

      Pendulum = Model(
      +   L = (0.8±0.1)u"m",
      +   m = (1.0±0.1)u"kg",
      +   d = (0.5±0.05)u"N*m*s/rad",
      +   g = 9.81u"m/s^2",
      +   phi = Var(init = (pi/2±0.1)*u"rad"),
      +   w   = Var(init = 0u"rad/s"),
      +   equations = :[
      +          w = der(phi)
      +        0.0 = m*L^2*der(w) + d*w + m*g*L*sin(phi)
      +   ]
      +)
      +
      +pendulum = @instantiateModel(Pendulum, FloatType=Measurements.Measurement{Float64})
      +simulate!(pendulum, Tsit5(), stopTime = 10.0)
      +plot(pendulum, "phi")

      and simulates the pendulum with uncertain parameter and init values and results in the following plot:

      PendulumWithUncertaintities

      The area around the nominal value of a variable characterizes the standard deviation.

      4.3 Monte-Carlo Simulation

      The Julia package MonteCarloMeasurements.jl provides calculations with particles. A value can be defined with a distribution of say 2000 values randomly chosen according to a desired distribution and then all calculations are performed with 2000 values at the same time (corresponds to 2000 simulations that are carried out).

      In the example below, a modest form of 100 particles (100 simulations) with Uniform distributions of some parameters and init values are defined that correspond roughly to the definition with uncertainties of the previous section (but using uniform instead for normal distributions):

      using Modia
      +using DifferentialEquations
      +using ModiaPlot
      +using MonteCarloMeasurements
      +using Distributions
      +using Unitful
      +
      +const nparticles = 100
      +uniform(vmin,vmax) = StaticParticles(nparticles,Distributions.Uniform(vmin,vmax))
      +
      +Pendulum = Model(
      +   L = uniform(0.6, 1.0),
      +   m = uniform(0.8, 1.2),
      +   d = uniform(0.4, 0.6),
      +   g = 9.81,
      +   phi = Var(init = uniform(pi/2-0.2, pi/2+0.2)),
      +   w   = Var(init = 0),
      +   equations = :[
      +          w = der(phi)
      +        0.0 = m*L^2*der(w) + d*w + m*g*L*sin(phi)
      +   ]
      +)
      +
      +pendulum = @instantiateModel(Pendulum,FloatType=StaticParticles{Float64,nparticles})
      +simulate!(pendulum, Tsit5(), stopTime = 10.0)
      +plot(pendulum, "phi", MonteCarloAsArea=false)

      The simulation result is shown in the next figure:

      PendulumWithMonteCarlo.png

      Since plot option MonteCarloAsArea=false is used, all 100 simulations are shown in the plot, together with the mean value of all simulations. The default plot behavior is to show the mean value and the area in which all simulations are contained (this is useful, if there are much more simulations, because GLMakie crashes when there are too many curves in a diagram).

      There are currently a few restrictions, in particular units are not yet supported in the combination of Modia and MonteCarloMeasurements, so units are not defined in the model above.

      diff --git a/stable/tutorial/GettingStarted.html b/stable/tutorial/GettingStarted.html new file mode 100644 index 0000000..903fb42 --- /dev/null +++ b/stable/tutorial/GettingStarted.html @@ -0,0 +1,25 @@ + +1 Getting Started · Modia

      1 Getting Started

      A simple differential equation with $x(t) \in \R$

      \[T \cdot \frac{dx}{dt} + x = 1; \;\;\; x(t_0) = 0.2\]

      can be defined, simulated and plotted with the following commands:

      using Modia       # reexports exported symbols from
      +                  # DifferentialEquations, Unitful, SignalTables
      +
      +# Define model
      +SimpleModel = Model(
      +    T = 0.4,
      +    x = Var(init=0.2),
      +    equations = :[T * der(x) + x = 1],
      +)
      +
      +# Transform to ODE form
      +simpleModel = @instantiateModel(SimpleModel)
      +
      +# Simulate with default integrator Sundials.CVODE_BDF
      +simulate!(simpleModel, stopTime = 1.2)
      +
      +# Simulate with a specific integrator (Tsit5) and use a unit for stopTime
      +simulate!(simpleModel, Tsit5(), stopTime = 1.2u"s")
      +
      +# Produce a line plot
      +@usingModiaPlot   # Use plot package defined with
      +                  # ENV["SignalTablesPlotPackage"] = "XXX" or with 
      +                  # usePlotPackage("XXX")
      +plot(simpleModel, ("x", "der(x)"))

      A model is defined with a constructor Model taking a comma separated list of name/value pairs. The model consists of a definition of a parameter T with default value 0.2. Constructor Var with an init key is used to define the initial condition 0.2 of the state x, and one equation. Equations can have a Julia expression on both sides of the equal sign and are given as a quoted array expression :[ ] assigned to key equations.

      The macro @instantiateModel(..) symbolically processes the model, in particular solves the equation for the derivative der(x), so the following equation will be used by the integrator:

      \[\frac{dx}{dt} = (1 - x) / T\]

      Furthermore, a Julia function is generated and compiled to evaluate this equation. @instantiateModel(..) returns an instance containing all the information needed for the next steps.

      The first simulate! function performs one simulation with the Modia default integrator Sundials.CVODE_BDF(). The second simulate! call defines the integrator as second argument. Integrator Tsit5 is an adaptive Runge-Kutta method of order 5/4 from Tsitouras. There are > 100 ODE integrators provided. For details, see here. The simulation result is stored inside simpleModel.

      Function call plot(..) produces a line plot. Variables to be plotted are defined as tuples or arrays of variable names. Tuples are displayed in one diagram. A Vector or matrix of tuples or strings are displayed as vector or matrix of diagrams. When ENV["SignalTablesPlotPackage"] = "GLMakie" is set, then command plot(..) produces the following image

      SimpleModel Plot

      When ENV["SignalTablesPlotPackage"] = "PyPlot" is set, the following image is produced:

      SimpleModel Plot

      Note, the tool bar of PyPlot provides various interactive commands, for example to zoom into the plot or to store the plot in different formats on file (for example in png or svg format).

      diff --git a/stable/tutorial/Modeling.html b/stable/tutorial/Modeling.html new file mode 100644 index 0000000..597a394 --- /dev/null +++ b/stable/tutorial/Modeling.html @@ -0,0 +1,224 @@ + +2 Modeling · Modia

      2 Modeling

      2.1 Equation oriented models

      A low pass filter block with input u and output y

      \[\begin{aligned} +T \cdot \frac{dx}{dt} + x &= u\\ + y &= x \\ +x(t_0) &= 0 +\end{aligned}\]

      can be defined as:

      using Modia
      +
      +LowPassFilter = Model(
      +    T = 0.2,
      +    u = input,
      +    y = output | Var(:x),
      +    x = Var(init=0),
      +    equations = :[T * der(x) + x = u],
      +)

      The symbols input and output refer to predefined variable constructors to define the input and output variables. If an equation has just a unique variable in the left hand side, y, the right hand side can be given as a quoted expression in a Var-constructor Var(:x) after the output constructor combined with the merge operator, |, see below.

      2.2 Merging models

      It is possible to combine models by merging. If we want to change the model to become a high-pass filter, an alternative output equation

      \[y = -x + u\]

      is defined in an anonymous model Model( y = :(-x + u) ). This anonymous model is merged with LowPassFilter using the merge operator |:

      HighPassFilter = LowPassFilter | Model( y = Var(:(-x + u) ) )

      The merging implies that the output property of y is kept, but the binding expression is changed from :x to :(-x + u).

      In general, recursive merging is desired and Modia provides a mergeModels function for that (see appendix A.3 MergeModels algorithm). This function is invoked as a binary operator | (also used for merge in Python). Note, that the order of the arguments/operands are important.

      Generalizing the block to have two outputs for both low and high pass filtering would be done as follows:

      LowAndHighPassFilter = LowPassFilter | Model(
      +        y = nothing,
      +        low = output | Var(:x),
      +        high = output | Var(:(-x + u)),
      +    )

      The equation for y is removed by "assigning" nothing and two variables are defined and declared as outputs.

      Model LowAndHighPassFilter represents the following equations:

      \[\begin{aligned} +T \cdot \frac{dx}{dt} + x &= u\\ + low &= x \\ + high &= -x + u \\ +x(t_0) &= 0 +\end{aligned}\]

      By turning on logging of merging setLogMerge(true), the translator gives the log:

      Adding: value = :(x)
      +Adding: value = :(-x + u)
      +Deleting: y
      +Adding: low = Var(
      +      output = true,
      +      value = :(x),
      +    ),
      +Adding: high = Var(
      +      output = true,
      +      value = :(-x + u),
      +    ),

      The resulting model is pretty printed by calling @showModel LowAndHighPassFilter:

      LowAndHighPassFilter = Model(
      +  T = 0.2,
      +  u = Var(
      +    input = true,
      +  ),
      +  x = Var(
      +    init = 0.0 V,
      +  ),
      +  equations = :([T * der(x) + x = u]),
      +  low = Var(
      +    output = true,
      +    value = :(x),
      +  ),
      +  high = Var(
      +    output = true,
      +    value = :(-x + u),
      +  ),
      +),

      2.3 Functions and tables

      In order to test an input/output block as defined in the previous section, an input needs to be defined. This can be made by adding an equation for u. Assume we want u to be sinusoidal with an increasing frequency:

      TestLowAndHighPassFilter = LowAndHighPassFilter | Model(
      +        u = :(sin( (time+1u"s")*u"1/s/s" * time)*u"V"),
      +        x = Var(init=0.2u"V")
      +    )

      time is a reserved name for the independent variable. It has unit s for seconds. The Julia package Unitful provides a means for defining units and managing unit inference. It need not be explicitly defined, because its symbols are exported by using Modia. Definition of units is done with a string macro u"...". In this case, the input signal was given unit Volt. The state x must then also have consistent unit, that is Volt. If the model equations contain systems of simultaneous equations, then approximate guess values, optionally with units, must be given start: i = Var(start=0.0u"A").

      The input signal can also be defined by interpolation in a table:

      using Interpolations
      +
      +table = CubicSplineInterpolation(0:0.5:2.0, [0.0, 0.7, 2.0, 1.8, 1.2])
      +TestLowAndHighPassFilter2 = TestLowAndHighPassFilter | Map(u = :(table(time*u"1/s")*u"V"))

      It is possible to call Julia functions that have more than one return argument:

      function ref(time)
      +    y1 = sin(time)
      +    y2 = cos(time)
      +    return (y1,y2)
      +end
      +
      +TestMultiReturningFunction1 = Model(
      +    equations = :[
      +        (y1,y2) = ref(time)
      +        y3 = y1+y2
      +    ]
      +)

      The returned arguments are typically numbers or arrays (see below). It is also possible to return an instance of a struct and, say, pass this instance as input to another function call.

      It is currently not supported that a function call modifies one of its arguments, or that a function call returns no argument at all:

      equations = :[
      +    fc!(u,y)                   # Error: Not known that fc! computes y
      +    println("This is a test")  # Error: One equation is introduced but no unknown
      +]

      2.4 Hierarchical modeling

      So far, the composition of models has resulted in dictionaries of key/value pairs with values being numeric values or quoted expressions. Hierarchical models are obtained if the values themselves are Models, i.e. dictionaries. A model with two filters can, for example, be defined as follows:

      TwoFilters = Model(
      +    high = HighPassFilter,
      +    low = LowPassFilter,
      +)

      Note, that the previous definitions of HighPassFilter and LowPassFilter was used instead of making the Model definitions inline.

      A band pass filter is a series connection of a high pass filter and a low pass filter and can be described as:

      BandPassFilter = Model(
      +    u = input,
      +    y = output,
      +    high = HighPassFilter | Map(T=0.5, x=Var(init=0.1u"V")),
      +    low = LowPassFilter | Map(x=Var(init=0.2u"V")),
      +    equations = :[
      +        high.u = u,
      +        low.u = high.y,
      +        y = low.y]
      +)

      A new input, u, has been defined which is propagated to high.u. The series connection itself is obtained by the equation low.u = high.y. Note, that dot-notation is allowed in equations.

      The input and output for the BandPassFilter when using the same input definition as for the TestLowPassFilter

      TestBandPassFilter = BandPassFilter | Map(
      +        u = :(sin( (time+1u"s")*u"1/s/s" * time)*u"V")
      +    )
      +bandPassFilter = @instantiateModel(TestBandPassFilter)
      +simulate!(bandPassFilter, Tsit5(), stopTime = 50u"s")
      +plot(bandPassFilter, ["u", "y"], figure=2)

      is shown below:

      Band Pass Filter Plot

      2.5 Physically oriented modeling

      So far, only signal flow modeling has been used, i.e. input/output blocks coupled with equations between outputs and inputs. For object oriented modeling more high level constructs are necessary. Coupling is then acausal and involves potentials such as electric potential, positions, pressure, etc. and flows such as electric current, forces and torques and mass flow rate.

      2.5.1 Connectors

      Models which contain any flow variable, i.e. a variable having an attribute flow=true, are considered connectors. Connectors must have equal number of flow and potential variables, i.e. variables having an attribute potential=true, and have matching array sizes. Connectors may not have any equations. An example of an electrical connector with potential (in Volt) and current (in Ampere) is shown below.

      Pin = Model( v = potential, i = flow )

      The value potential is a shortcut for Var(potential=true) and similarly for flow.

      2.5.2 Components

      Components are declared in a similar ways as blocks. However, the interfaces between components are defined using connector instances.

      An electrical resistor can be described as follows:

      Resistor = Model(
      +    R = 1.0u"Ω",
      +    p = Pin,
      +    n = Pin,
      +    equations = :[
      +        0 = p.i + n.i
      +        v = p.v - n.v
      +        i = p.i
      +        R*i = v ]
      +    )

      2.5.3 Inheritance

      Various physical components sometimes share common properties. One mechanism to handle this is to use inheritance. In Modia, merging is used.

      Electrical components such as resistors, capacitors and inductors are categorized as OnePorts which have two Pins. Common properties are: constraint on currents at the pins and definitions of voltage over the component and current through the component.

      OnePort = Model(
      +    p = Pin,
      +    n = Pin,
      +    equations = :[
      +        0 = p.i + n.i
      +        v = p.v - n.v
      +        i = p.i ] )

      Having such a OnePort definition makes it convenient to define electrical component models by merging OnePort with specific parameter definitions with default values and equations:

      Resistor = OnePort | Model( R = 1.0u"Ω", equations = :[ R*i = v ], )
      +
      +Capacitor = OnePort | Model( C = 1.0u"F", v=Map(init=0.0u"V"), equations = :[ C*der(v) = i ] )
      +
      +Inductor = OnePort | Model( L = 1.0u"H", i=Map(init=0.0u"A"), equations = :[ L*der(i) = v ] )
      +
      +ConstantVoltage = OnePort | Model( V = 1.0u"V", equations = :[ v = V ] )

      The merged Resistor is shown below:

      Resistor = Model(
      +  p = Model(
      +    v = Var(potential = true),
      +    i = Var(flow = true),
      +  ),
      +  n = Model(
      +    v = Var(potential = true),
      +    i = Var(flow = true),
      +  ),
      +  equations = :([v = p.v - n.v; 0 = p.i + n.i; i = p.i, R * i = v]),
      +  R = 1.0 Ω,
      +),

      Note, there is a special merge-rule that the vectors of keys equations are appended.

      2.5.4 Connections

      Connections are described as an array of tuples listing the connectors that are connected:

          ( <connect reference 1>, <connect reference 2>, ... )

      A connect reference has either the form 'connect instance name' or 'component instance name'.'connect instance name' with 'connect instance name' being either a connector instance, input or output variable.

      Examples

          connect = :[
      +      (V.p, R1.p)
      +      (R1.n, p)
      +      (C1.n, V.n, R2.p)
      +      ...
      +    ]

      For connectors, all the potentials of the connectors in the same connect tuple are set equal and the sum of all incoming flows to the model are set equal to the sum of the flows into sub-components. A Modelica inspired form of connections, i.e. connect-equations, are also supported:

          equations = :[
      +      connect(V.p, R1.p)
      +      connect(R1.n, p)
      +      connect(C1.n, V.n, R2.p)
      +      ...
      +    ]

      2.5.5 Connected models

      Having the above electrical component models, enables defining a filter

      Filter Circuit

      by instantiating components, setting parameters and defining connections.

      Filter = Model(
      +    R = Resistor | Map(R=0.5u"Ω"),
      +    C = Capacitor | Map(C=2.0u"F"),
      +    V = ConstantVoltage | Map(V=10.0u"V"),
      +    connect = :[
      +      (V.p, R.p)
      +      (R.n, C.p)
      +      (C.n, V.n)
      +    ]
      +)

      The connect tuples are translated to:

        V.p.v = R.p.v
      +  0 = V.p.i + R.p.i
      +  R.n.v = C.p.v
      +  0 = R.n.i + C.p.i
      +  C.n.v = V.n.v
      +  0 = C.n.i + V.n.i

      2.5.6 Parameter propagation

      Hierarchical modification of parameters is powerful but sometimes a bit inconvenient. It is also possible to propagate parameters introduced on a high level down in the hierarchy. The following Filter model defines three parameters, r, c and v. The r parameter is used to set the resistance of the resistor R: Map(R=:r).

      Filter2 = Model(
      +    r = 2.0u"Ω",
      +    c = 1.0u"F",
      +    v = 10u"V",
      +    R = Resistor | Map(R=:r),
      +    C = Capacitor | Map(C=:c),
      +    V = ConstantVoltage | Map(V=:v),
      +    connect = :[
      +      (V.p, R.p)
      +      (R.n, C.p)
      +      (C.n, V.n)
      +    ]
      +)

      Two separate filters can then be defined with:

      TwoFilters = Model( f1 = Filter | Map( r = 10.0, c = 2.0), f2 = Filter )

      2.5.7 Re-declarations

      It is possible to reuse a particular model topology by re-declaring the models of particular components. For example, changing the filter f1 to a voltage divider by changing C from a Capacitor to a Resistor. A predefined definition redeclare is used for this purpose.

      VoltageDividerAndFilter = TwoFilters | Map(f1 = Map(C = redeclare | Resistor | Map(R = 20.0)))

      By using redeclare, a new model based on a Resistor is used for C and the usual merge semantics with the previously defined model of C is not used.

      The above examples are available in file FilterCircuit.jl.

      2.5.8 Drive train example

      A larger example that utilizes most of the previously described features of Modia is available as $(Modia.path)/examples/ServoSystem.jl. This is a textual (Modia) representation of a Modelica model

      ServoSystem

      and demonstrates how to build up a hierarchical, multi-domain model consisting of a servo-system with a load, where the servo-system consists of an electric motor with a current and speed controller, as well with a more detailed model of a gearbox.

      2.6 Arrays

      Model parameters and variables can be arrays. For example a linear state space system

      \[\begin{aligned} +\frac{d\boldsymbol{x}}{dt} &= \boldsymbol{A} \cdot \boldsymbol{x} + \boldsymbol{B} \cdot \boldsymbol{u}\\ + \boldsymbol{y} &= \boldsymbol{C} \cdot \boldsymbol{x} + \boldsymbol{D} \cdot \boldsymbol{u} +\end{aligned}\]

      can be defined as:

      StateSpace = Model(
      +    A = fill(0.0, 0, 0),
      +    B = fill(0.0, 0, 0),
      +    C = fill(0.0, 0, 0),
      +    D = fill(0.0, 0, 0),
      +    u = input,
      +    y = output,
      +    x = Var(init = zeros(0)),
      +    equations = :[
      +        der(x) = A*x + B*u
      +             y = C*x + D*u
      +    ]
      +)

      and used as:

      SecondOrder = Model(
      +    w = 20.0,
      +    D =  0.1,
      +    k =  2.0,
      +    sys = StateSpace | Map(A = :([  0        1;
      +                                 -w^2  -2*D*w]),
      +                           B = :([0; w^2;;]),    # Julia 1.7: Trailing ";;" defines a column matrix
      +                           C = :([k 0]),
      +                           D = :(zeros(1,1)),
      +                           x = Var(init = zeros(2)) ),
      +    equations = :[sys.u = [1.0]]
      +)

      Variables sys.u and sys.y are vectors with one element each.

      Note, [0; w^2] is a vector in Julia and not a column matrix. In order that B is defined as column matrix, the Julia 1.7 feature is used to append two semicolons, that is, [0; w^2;;]

      Array equations remain array equations during symbolic transformation and in the generated code, so the code is both compact and efficient. In order that this is reasonably possible, the definition of an array cannot be split in different statements:

      equations = :[             # error, vector v is not defined as one symbol
      +    m1*der(v[1]) = 2.0
      +    m2*der(v[2]) = 3.0
      +]

      If scalar equations are needed in which arrays are used, then the arrays have to be first defined and then elements can be used.

      v = Var(init=zeros(2)),
      +equations = :[
      +    a = der(v)
      +    a1 = a[1]
      +    a2 = a[2]
      +    m1*a1 = 2.0
      +    m2*a2 = 3.0
      +]

      When the init or start value of an array variable is defined as a StaticArrays.jl StaticArray, then the type of this array variable will be StaticArray in the generated code. The benefit is that array operations are more efficient:

      using StaticArrays
      +TestArray1 = Model
      +    v = Var(init=SVector{3,Float64}(1.0, 2.0, 3.0)),
      +    equations = :[der(v) = -v]
      +)
      +testArray1 =  @instantiateModel(TestArray1, logCode=true)

      Note, the generated code is shown in the REPL if logCode=true is defined:

      function getDerivatives(_x, _m::Modia.InstantiatedModel{_FloatType,_TimeType} ...
      +    ...
      +    v::ModiaBase.SVector{3,_FloatType} = ModiaBase.SVector{3,_FloatType}(_x[1:3])
      +    var"der(v)" = -v
      +    ...

      The sizes of StaticArrays variables cannot be changed, after @instantiatedModel was called. However, the sizes of standard array variables can be changed with keyword argument merge in simulate! (so no re-generation and re-compilation of the code is needed):

      TestArray2 = Model(
      +    v = Var(init=[1.0, 2.0, 3.0]),   # length(v) = 3
      +    equations = :[der(v) = -v]
      +)
      +testArray2 = @instantiateModel(TestArray2)
      +simulate!(testArray2, stopTime=2.0, merge=Map(v = [4.0, 3.0, 2.0, 1.0]))   # length(v) = 4
      +plot(testArray2, "v", figure=5)

      2.7 Model libraries

      Modia provides a small set of predefined model components in directory Modia.modelsPath:

      • AllModels.jl - Include all model libraries
      • Blocks.jl - Input/output control blocks
      • Electric.jl - Electric component models
      • HeatTransfer.jl - 1D heat transfer component models
      • Rotational.jl - 1D rotational, mechanical component models
      • Translational.jl - 1D translational, mechanical component models
      • PathPlanning - Defining reference trajectories and access them.

      The desired libraries must be explicitly included with the help of utility path variable Modia.modelsPath. For example, the circuit of section 2.5.5 Connected models is constructed with these libraries in the following way:

      using Modia
      +include("$(Modia.modelsPath)/Electric.jl")
      +
      +FilterCircuit = Model(
      +    R = Modia.Resistor  | Map(R=0.5u"Ω"),
      +    C = Modia.Capacitor | Map(C=2.0u"F", v=Var(init=0.1u"V")),
      +    V = Modia.ConstantVoltage | Map(V=10.0u"V"),
      +    ground = Modia.Ground,
      +    connect = :[
      +      (V.p, R.p)
      +      (R.n, C.p)
      +      (C.n, V.n, ground.p)
      +    ]
      +)
      +
      +filterCircuit = @instantiateModel(FilterCircuit)
      +simulate!(filterCircuit, Tsit5(), stopTime=10.0)
      +@usingModiaPlot
      +plot(filterCircuit, ["C.v", "C.i"], figure=3)

      It is planned to support a much larger set of predefined model components in the future.

      diff --git a/stable/tutorial/Simulation.html b/stable/tutorial/Simulation.html new file mode 100644 index 0000000..933d945 --- /dev/null +++ b/stable/tutorial/Simulation.html @@ -0,0 +1,168 @@ + +3 Simulation · Modia

      3 Simulation

      A particular model is instantiated, simulated and results plotted with the commands:

      using Modia
      +@usingModiaPlot
      +
      +filter = @instantiateModel(Filter)
      +simulate!(filter, stopTime=10.0)
      +plot(filter, "y", figure=1)

      3.1 Instantiating

      The @instantiateModel macro takes additional arguments:

      modelInstance = @instantiateModel(model; FloatType = Float64, aliasReduction=true, unitless=false,
      +        evaluateParameters=false, log=false, logModel=false, logDetails=false, logStateSelection=false,
      +        logCode=false,logExecution=logExecution, logCalculations=logCalculations, logTiming=false)

      The macro performs structural and symbolic transformations, generates a function for calculation of derivatives suitable for use with DifferentialEquations.jl and returns InstantiatedModel that can be used in other functions, for example to simulate or plot results. Explanation of the arguments:

      • model: model (declarations and equations)
      • FloatType: Variable type for floating point numbers, for example: Float64, Measurements{Float64}, StaticParticles{Float64,100}, Particles{Float64,2000}
      • aliasReduction: Perform alias elimination and remove singularities
      • unitless: Remove units (useful while debugging models and needed for MonteCarloMeasurements)
      • evaluateParameters: Use evaluated parameters in the generated code.
      • log: Log the different phases of translation
      • logModel: Log the variables and equations of the model
      • logDetails: Log internal data during the different phases of translation
      • logStateSelection: Log details during state selection
      • logCode: Log the generated code
      • logExecution: Log the execution of the generated code (useful for timing compilation)
      • logCalculations: Log the calculations of the generated code (useful for finding unit bugs)
      • logTiming: Log timing of different phases
      • return modelInstance prepared for simulation

      3.2 Simulating

      The simulate! function performs one simulation with DifferentialEquations.jl using by default integrator Sundials.CVODE_BDF(), provided instantiatedModel has FloatType = Float64. Otherwise, a default algorithm will be chosen from DifferentialEquations (for details see https://arxiv.org/pdf/1807.06430, Figure 3). The reason to choose CVODE_BDF as default integrator is that it is a very robust integrator and also usually very efficient for larger models, provided there are no undamped vibrations. It is also possible to specify the integrator as second argument of simulate!:

      using Modia
      +@usingModiaPlot
      +
      +filter = @instantiateModel(Filter)
      +sol = simulate!(filter, Tsit5(), stopTime=10.0, merge=Map(T=0.5, x=0.8))
      +plot(filter, ["y", "x"], figure=1)

      Integrator DifferentialEquations.Tsit5 is an adaptive Runge-Kutta method of order 5/4 from Tsitouras. There are > 100 ODE integrators provided. For details, see here.

      Parameters and init/start values can be changed with the merge keyword. The effect is the same, as if the filter would have been instantiated with:

      filter = @instantiateModel(Filter | Map(T=0.5, x=Var(init=0.8))

      Note, with the merge keyword in simulate!, init/start values are directly given as a value (x = 0.8) and are not defined with Var(..).

      Function simulate! returns sol which is the value that is returned by function DifferentialEquations.solve. Functions of DifferentialEquations that operate on this return argument can therefore also be used on the return argument sol of simulate!.

      3.4 Plotting

      A short overview of the most important plot commands is given in section Results and Plotting

      3.5 State selection (DAEs)

      Modia has a sophisticated symbolic engine to transform high index DAEs (Differential Algebraic Equations) automatically to ODEs (Ordinary Differential Equations in state space form). During the transformation, equations might be analytically differentiated and code might be generated to solve linear equation systems numerically during simulation. The current engine cannot transform a DAE to ODE form, if the DAE contains nonlinear algebraic equations. There is an (internal) prototype available to transform nearly any DAE system to a special index 1 DAE system that can be solved with standard DAE integrators. After a clean-up phase, this engine will be made publicly available at some time in the future. Some of the algorithms used in Modia are described in Otter and Elmqvist (2017). Some algorithms are not yet published.

      Usually, the symbolic engine is only visible to the modeler, when the model has errors, or when the number of ODE states is less than the number of DAE states. The latter case is discussed in this section.

      The following object diagram shows two rotational inertias that are connected by an ideal gear. One inertia is actuated with a sinusoidal torque:

      TwoInertiasAndIdealGear

      In order to most easily understand the issues, this model is provided in a compact, "flattened" form:

      TwoInertiasAndIdealGearTooManyInits = Model(
      +    J1    = 50,
      +    J2    = 100,
      +    ratio = 2,
      +    f     = 3, # Hz
      +
      +    phi1 = Var(init = 0.0), # Absolute angle of inertia1
      +    w1   = Var(init = 0.0), # Absolute angular velocity of inertia1
      +    phi2 = Var(init = 0.0), # Absolute angle of inertia2
      +    w2   = Var(init = 0.0), # Absolute angular velocity of inertia2
      +
      +    equations = :[
      +        tau = 2.0*sin(2*3.14*f*time/u"s")
      +
      +        # inertia1
      +        w1 = der(phi1)
      +        J1*der(w1) = tau - tau1
      +
      +        # ideal gear
      +        phi1 = ratio*phi2
      +        ratio*tau1 = tau2
      +
      +        # inertia2
      +        w2 = der(phi2)
      +        J2*der(w2) = tau2
      +    ]
      +)
      +
      +drive1 = @instantiateModel(TwoInertiasAndIdealGearTooManyInits)
      +simulate!(drive1, Tsit5(), stopTime = 1.0, logStates=true)
      +plot(drive1, [("phi1", "phi2"), ("w1", "w2")])

      The option logStates=true results in the following output:

      ... Simulate model TwoInertiasAndIdealGearTooManyInits
      +
      +│ # │ state  │ init │ unit │ nominal │
      +├───┼────────┼──────┼──────┼─────────┤
      +│ 1 │ phi2   │ 0.0  │      │ NaN     │
      +│ 2 │ w2     │ 0.0  │      │ NaN     │

      This model translates and simulates without problems.

      Changing the init-value of w2 to 1.0 and re-simulating:

      simulate!(drive1, Tsit5(), stopTime = 1.0, logStates=true, merge = Map(w2=1.0))

      results in the following error:

      ... Simulate model TwoInertiasAndIdealGearTooManyInits
      +
      +│ # │ state │ init │ unit │ nominal │
      +├───┼───────┼──────┼──────┼─────────┤
      +│ 1 │ phi2  │ 0.0  │      │ NaN     │
      +│ 2 │ w2    │ 1.0  │      │ NaN     │
      +
      +
      +Error from simulate!:
      +The following variables are explicitly solved for, have init-values defined
      +and after initialization the init-values are not respected
      +(remove the init-values in the model or change them to start-values):
      +
      +│ # │ name │ beforeInit │ afterInit │
      +├───┼──────┼────────────┼───────────┤
      +│ 1 │ w1   │ 0.0        │ 2.0       │

      The issue is the following:

      Every variable that is used in the der operator is a potential ODE state. When an init value is defined for such a variable, then Modia either utilizes this initial condition (so the variable has this value after initialization), or an error is triggered, as in the example above.

      The model contains the equation:

      phi1 = ratio*phi2

      So the potential ODE states phi1 and phi2 are constrained, and only one of them can be selected as ODE state, and the other variable is computed from this equation. Since parameter ratio can be changed before simulation is started, it can be changed also to a value of ratio = 0. Therefore, only when phi2 is selected as ODE state, phi1 can be uniquely computed from this equation. If phi1 would be selected as ODE state, then a division by zero would occur, if ratio = 0, since phi2 = phi1/ratio. For this reason, Modia selects phi2 as ODE state. This means the init value of phi1 has no effect. This is uncritical, as long as initialization computes this init value from the constraint equation above, as done in the example above.

      When differentiating the equation above:

      der(phi1) = ratio*der(phi2)  # differentiated constraint equation
      +       w1 = der(phi1)
      +       w2 = der(phi2)

      it becomes obvious, that there is also a hidden constraint equation for the potential ODE states w1, w2:

      w1 = ratio*w2  # hidden constraint equation

      Again, Modia selects w2 as ODE state, and ignores the init value of w1. In the second simulation, the init value of w1 (= 0.0) is no longer consistent to the init value of w2 (= 1.0). Therefore, an error occurs.

      The remedy is to remove the init values of phi1, w1 from the model:

      drive2 = @instantiateModel(TwoInertiasAndIdealGearTooManyInits |
      +                                Map(phi1 = Var(init=nothing),
      +                                    w1   = Var(init=nothing)) )
      +simulate!(drive2, Tsit5(), stopTime = 1.0, logStates=true, merge = Map(w2=1.0))

      and simulation is successful!

      Modia tries to respect init values during symbolic transformation. In cases as above, this is not possible and the reported issue occurs. In some cases, it might not be obvious, why Modia selects a particular variable as an ODE state. You can get more information by setting logStateSelection=true:

      drive1 = @instantiateModel(TwoInertiasAndIdealGearTooManyInits, logStateSelection=true)

      This results in the following output in the REPL:

      Instantiating model TwoInertiasAndIdealGearTooManyInits
      +  in module: Main.Tutorial
      +  in file: <..>\Modia\examples\Tutorial.jl:196
      +
      +=== getSortedAndSolvedAST(...) started for TwoInertiasAndIdealGearTooManyInits.
      +
      +... Equation set 1.1 ..............................
      +Equations:
      +   1: tau = 2.0 * sin((2 * 3.14 * f * time) / u"s")
      +Unknown variables:
      +   1: tau
      +One equation in one unknown variable. Solve the equation:
      +Julia code:
      +    tau = 2.0 * sin((2 * 3.14 * _FloatType(_p[:f])::_FloatType * time) / u"s")
      +
      +... Equation set 2.1 ..............................
      +Equations:
      +   4: phi1 = ratio * phi2
      +Unknown variables:
      +   7: phi2
      +   4: phi1
      +1 equation(s) in 2 unknown variable(s). Tear the system of equations:
      +    Unknowns with start or init values: phi2, phi1
      +    Tearing  variables: phi2
      +    All solved unknowns are dummy states.
      +Julia code:
      +    phi1 = _FloatType(_p[:ratio])::_FloatType * phi2
      +
      +... Equation set 2.2 ..............................
      +Equations:
      +   6: w2 = der(phi2)
      +   8: der(phi1) = ratio * der(phi2)
      +   2: w1 = der(phi1)
      +Unknown variables:
      +   9: w2
      +  10: der(phi2)
      +   3: der(phi1)
      +   2: w1
      +3 equation(s) in 4 unknown variable(s). Tear the system of equations:
      +    Unknowns with start or init values: w2, w1
      +    Tearing  variables: w2
      +    All solved unknowns are dummy states.
      +Julia code:
      +    var"der(phi2)" = w2
      +    var"der(phi1)" = _FloatType(_p[:ratio])::_FloatType * var"der(phi2)"
      +    w1 = var"der(phi1)"
      +
      +... Equation set 2.3 ..............................
      +Equations:
      +   5: ratio * tau1 = tau2
      +   7: J2 * der(w2) = tau2
      +  10: der(w2) = der(der(phi2))
      +  11: der(der(phi1)) = ratio * der(der(phi2))
      +   9: der(w1) = der(der(phi1))
      +   3: J1 * der(w1) = tau - tau1
      +Unknown variables:
      +   8: tau2
      +  11: der(w2)
      +  13: der(der(phi2))
      +  12: der(der(phi1))
      +   5: der(w1)
      +   6: tau1
      +6 equation(s) in 6 unknown variable(s). Tear the system of equations:
      +    Tearing  variables: der(w2)
      +    Residual equations:
      +       7: J2 * der(w2) = tau2
      +    All unknowns are solved.
      +Teared equation system is linear. Solve system with hasConstantCoefficients = false.
      +code = quote
      +    local var"der(w2)", var"der(der(phi2))", var"der(der(phi1))", var"der(w1)", tau1, tau2
      +    _leq_mode = initLinearEquationsIteration!(_m, 1)
      +     ModiaBase.TimerOutputs.@timeit _m.timer "ModiaBase LinearEquationsIteration!" while ModiaBase.LinearEquationsIteration!(_leq_mode, _m.isInitial, _m.solve_leq, _m.storeResult, _m.time, _m.timer)
      +            var"der(w2)" = _leq_mode.x[1] * u"s^-1"
      +            var"der(der(phi2))" = var"der(w2)"
      +            var"der(der(phi1))" = _FloatType(_p[:ratio])::_FloatType * var"der(der(phi2))"
      +            var"der(w1)" = var"der(der(phi1))"
      +            tau1 = -((_FloatType(_p[:J1])::_FloatType * var"der(w1)" - tau))
      +            tau2 = _FloatType(_p[:ratio])::_FloatType * tau1
      +            ModiaBase.appendVariable!(_leq_mode.residuals, Modia.Unitful.ustrip.(tau2) .- Modia.Unitful.ustrip.(_FloatType(_p[:J2])::_FloatType * var"der(w2)"))
      +        end
      +    _leq_mode = nothing
      +end
      +Sort equations (BLT on all equations under the assumption that the ODE states are known).
      +
      +Information message from getSortedAndSolvedAST for model TwoInertiasAndIdealGearTooManyInits:
      +The following variables are iteration variables but have no start/init values defined.
      +If units are used in the model, start/init values with correct units should be defined
      +to avoid unit errors during compilation.
      +Involved variables:
      +    der(w2)
      +
      +
      +Warning message from getSortedAndSolvedAST for model TwoInertiasAndIdealGearTooManyInits:
      +The following variables have an 'init' initialization and are explicitly solved for.
      +Therefore, the 'init' values have no effect, but must exactly match the values,
      +computed during initialization. Otherwise this gives a run-time error.
      +It is adviced to use 'start' initialization or remove initialization for these variables.
      +Involved variables:
      +    phi1
      +    w1
      diff --git a/stable/tutorial/Tutorial.html b/stable/tutorial/Tutorial.html new file mode 100644 index 0000000..a9224d8 --- /dev/null +++ b/stable/tutorial/Tutorial.html @@ -0,0 +1,3 @@ + +Modia Tutorial · Modia

      Modia Tutorial

      This tutorial gives an overview of package Modia to construct component-based and equation-based models with the Modia language on a high level, symbolically transforming these models into ODEs (Ordinary Differential Equations in state space form), simulating them and plotting result variables.

      Note, all examples in this tutorial can be executed with

      using Modia
      +include("$(Modia.path)/examples/Tutorial.jl")

      Modeling of 3D components (= multibody systems) is explained in the Modia3D Tutorial

      Info

      Modia is based on SignalTables that has an interface to various plot packages. A plot package can be either selected by setting ENV["SignalTablesPlotPackage"] = XXX, for example in the config/startup.jl file of Julia, or by command usePlotPackage(XXX). Possible values for XXX:

      • "PyPlot" (plots with Matplotlib from Python),
      • "GLMakie" (interactive plots in an OpenGL window),
      • "WGLMakie" (interactive plots in a browser window),
      • "CairoMakie" (static plots on file with publication quality), or
      • "SilentNoPlot" (= NoPlot without messages).
      diff --git a/test/runtests.jl b/test/runtests.jl deleted file mode 100644 index 870c3f4..0000000 --- a/test/runtests.jl +++ /dev/null @@ -1,11 +0,0 @@ -module Runtests - -using Test - -@testset "Test Modia" begin - - include("../examples/Pendulum.jl") - -end - -end \ No newline at end of file