diff --git a/Manifest.toml b/Manifest.toml
index e16f846d4be150f861b34a059f113ac47eec7797..3dd7435fcfb4200b13b1b8e756002f8e20c6de07 100644
--- a/Manifest.toml
+++ b/Manifest.toml
@@ -1,18 +1,19 @@
 # This file is machine-generated - editing it directly is not advised
 
-julia_version = "1.9.3"
+julia_version = "1.10.0"
 manifest_format = "2.0"
 project_hash = "34327d7ea7e42bf13c02b6c70751c90982e1f1be"
 
 [[deps.AbstractFFTs]]
 deps = ["LinearAlgebra"]
-git-tree-sha1 = "cad4c758c0038eea30394b1b671526921ca85b21"
+git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef"
 uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
-version = "1.4.0"
-weakdeps = ["ChainRulesCore"]
+version = "1.5.0"
+weakdeps = ["ChainRulesCore", "Test"]
 
     [deps.AbstractFFTs.extensions]
     AbstractFFTsChainRulesCoreExt = "ChainRulesCore"
+    AbstractFFTsTestExt = "Test"
 
 [[deps.AbstractTrees]]
 git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c"
@@ -21,9 +22,9 @@ version = "0.4.4"
 
 [[deps.Adapt]]
 deps = ["LinearAlgebra", "Requires"]
-git-tree-sha1 = "76289dc51920fdc6e0013c872ba9551d54961c24"
+git-tree-sha1 = "0fb305e0253fd4e833d486914367a2ee2c2e78d0"
 uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
-version = "3.6.2"
+version = "4.0.1"
 weakdeps = ["StaticArrays"]
 
     [deps.Adapt.extensions]
@@ -43,22 +44,22 @@ version = "1.1.1"
 uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
 
 [[deps.Automa]]
-deps = ["ScanByte", "TranscodingStreams"]
-git-tree-sha1 = "48e54446df62fdf9ef76959c32dc33f3cff659ee"
+deps = ["TranscodingStreams"]
+git-tree-sha1 = "ef9997b3d5547c48b41c7bd8899e812a917b409d"
 uuid = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b"
-version = "0.8.3"
+version = "0.8.4"
 
 [[deps.AxisAlgorithms]]
 deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"]
-git-tree-sha1 = "66771c8d21c8ff5e3a93379480a2307ac36863f7"
+git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712"
 uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950"
-version = "1.0.1"
+version = "1.1.0"
 
 [[deps.AxisArrays]]
 deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"]
-git-tree-sha1 = "1dd4d9f5beebac0c03446918741b1a03dc5e5788"
+git-tree-sha1 = "16351be62963a67ac4083f748fdb3cca58bfd52f"
 uuid = "39de3d68-74b9-583c-8d2d-e117c070f3a9"
-version = "0.4.6"
+version = "0.4.7"
 
 [[deps.Base64]]
 uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
@@ -69,20 +70,20 @@ uuid = "0e736298-9ec6-45e8-9647-e4fc86a2fe38"
 version = "0.2.8"
 
 [[deps.BufferedStreams]]
-git-tree-sha1 = "5bcb75a2979e40b29eb250cb26daab67aa8f97f5"
+git-tree-sha1 = "4ae47f9a4b1dc19897d3743ff13685925c5202ec"
 uuid = "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d"
-version = "1.2.0"
+version = "1.2.1"
 
 [[deps.Bzip2_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
-git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2"
+git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd"
 uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0"
-version = "1.0.8+0"
+version = "1.0.8+1"
 
 [[deps.CEnum]]
-git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90"
+git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc"
 uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
-version = "0.4.2"
+version = "0.5.0"
 
 [[deps.Cairo_jll]]
 deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"]
@@ -97,22 +98,26 @@ uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9"
 version = "0.5.1"
 
 [[deps.ChainRulesCore]]
-deps = ["Compat", "LinearAlgebra", "SparseArrays"]
-git-tree-sha1 = "e30f2f4e20f7f186dc36529910beaedc60cfa644"
+deps = ["Compat", "LinearAlgebra"]
+git-tree-sha1 = "1287e3872d646eed95198457873249bd9f0caed2"
 uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
-version = "1.16.0"
+version = "1.20.1"
+weakdeps = ["SparseArrays"]
+
+    [deps.ChainRulesCore.extensions]
+    ChainRulesCoreSparseArraysExt = "SparseArrays"
 
 [[deps.CircularArrays]]
 deps = ["OffsetArrays"]
-git-tree-sha1 = "61bc114e595167090b4cbcb7305ddeacd4274f16"
+git-tree-sha1 = "3f7b8a37359ae592cfa7aca7f811da045deff222"
 uuid = "7a955b69-7140-5f4e-a0ed-f168c5e2e749"
-version = "1.3.2"
+version = "1.3.3"
 
 [[deps.CodecZlib]]
 deps = ["TranscodingStreams", "Zlib_jll"]
-git-tree-sha1 = "9c209fb7536406834aa938fb149964b985de6c83"
+git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73"
 uuid = "944b1d66-785c-5afd-91f1-9de20f533193"
-version = "0.7.1"
+version = "0.7.4"
 
 [[deps.ColorBrewer]]
 deps = ["Colors", "JSON", "Test"]
@@ -122,9 +127,9 @@ version = "0.4.0"
 
 [[deps.ColorSchemes]]
 deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"]
-git-tree-sha1 = "be6ab11021cd29f0344d5c4357b163af05a48cba"
+git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129"
 uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
-version = "3.21.0"
+version = "3.24.0"
 
 [[deps.ColorTypes]]
 deps = ["FixedPointNumbers", "Random"]
@@ -145,10 +150,10 @@ uuid = "5ae59095-9a9b-59fe-a467-6f913c188581"
 version = "0.12.10"
 
 [[deps.Compat]]
-deps = ["UUIDs"]
-git-tree-sha1 = "4e88377ae7ebeaf29a047aa1ee40826e0b708a5d"
+deps = ["TOML", "UUIDs"]
+git-tree-sha1 = "75bd5b6fc5089df449b5d35fa501c846c9b6549b"
 uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
-version = "4.7.0"
+version = "4.12.0"
 weakdeps = ["Dates", "LinearAlgebra"]
 
     [deps.Compat.extensions]
@@ -157,7 +162,18 @@ weakdeps = ["Dates", "LinearAlgebra"]
 [[deps.CompilerSupportLibraries_jll]]
 deps = ["Artifacts", "Libdl"]
 uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
-version = "1.0.5+0"
+version = "1.0.5+1"
+
+[[deps.ConstructionBase]]
+deps = ["LinearAlgebra"]
+git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9"
+uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
+version = "1.5.4"
+weakdeps = ["IntervalSets", "StaticArrays"]
+
+    [deps.ConstructionBase.extensions]
+    ConstructionBaseIntervalSetsExt = "IntervalSets"
+    ConstructionBaseStaticArraysExt = "StaticArrays"
 
 [[deps.Contour]]
 git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781"
@@ -165,15 +181,15 @@ uuid = "d38c429a-6771-53c6-b99e-75d170b6e991"
 version = "0.6.2"
 
 [[deps.DataAPI]]
-git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c"
+git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe"
 uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
-version = "1.15.0"
+version = "1.16.0"
 
 [[deps.DataStructures]]
 deps = ["Compat", "InteractiveUtils", "OrderedCollections"]
-git-tree-sha1 = "cf25ccb972fec4e4817764d01c82386ae94f77b4"
+git-tree-sha1 = "ac67408d9ddf207de5cfa9a97e114352430f01ed"
 uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
-version = "0.18.14"
+version = "0.18.16"
 
 [[deps.DataValueInterfaces]]
 git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
@@ -191,28 +207,35 @@ uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
 version = "1.9.1"
 
 [[deps.Distances]]
-deps = ["LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI"]
-git-tree-sha1 = "49eba9ad9f7ead780bfb7ee319f962c811c6d3b2"
+deps = ["LinearAlgebra", "Statistics", "StatsAPI"]
+git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0"
 uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7"
-version = "0.10.8"
+version = "0.10.11"
+weakdeps = ["ChainRulesCore", "SparseArrays"]
+
+    [deps.Distances.extensions]
+    DistancesChainRulesCoreExt = "ChainRulesCore"
+    DistancesSparseArraysExt = "SparseArrays"
 
 [[deps.Distributed]]
 deps = ["Random", "Serialization", "Sockets"]
 uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
 
 [[deps.Distributions]]
-deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns", "Test"]
-git-tree-sha1 = "e76a3281de2719d7c81ed62c6ea7057380c87b1d"
+deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"]
+git-tree-sha1 = "7c302d7a5fec5214eb8a5a4c466dcf7a51fcf169"
 uuid = "31c24e10-a181-5473-b8eb-7969acd0382f"
-version = "0.25.98"
+version = "0.25.107"
 
     [deps.Distributions.extensions]
     DistributionsChainRulesCoreExt = "ChainRulesCore"
     DistributionsDensityInterfaceExt = "DensityInterface"
+    DistributionsTestExt = "Test"
 
     [deps.Distributions.weakdeps]
     ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
     DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d"
+    Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
 
 [[deps.DocOpt]]
 deps = ["Dates", "Printf"]
@@ -250,9 +273,9 @@ uuid = "2e619515-83b5-522b-bb60-26c02a35a201"
 version = "2.5.0+0"
 
 [[deps.Extents]]
-git-tree-sha1 = "5e1e4c53fa39afe63a7d356e30452249365fba99"
+git-tree-sha1 = "2140cd04483da90b2da7f99b2add0750504fc39c"
 uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910"
-version = "0.1.1"
+version = "0.1.2"
 
 [[deps.FFMPEG]]
 deps = ["FFMPEG_jll"]
@@ -261,16 +284,16 @@ uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a"
 version = "0.4.1"
 
 [[deps.FFMPEG_jll]]
-deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"]
-git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd"
+deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"]
+git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e"
 uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5"
-version = "4.4.2+2"
+version = "4.4.4+1"
 
 [[deps.FFTW]]
 deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"]
-git-tree-sha1 = "b4fbdd20c889804969571cc589900803edda16b7"
+git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d"
 uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
-version = "1.7.1"
+version = "1.8.0"
 
 [[deps.FFTW_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
@@ -280,18 +303,24 @@ version = "3.3.10+0"
 
 [[deps.FileIO]]
 deps = ["Pkg", "Requires", "UUIDs"]
-git-tree-sha1 = "299dc33549f68299137e51e6d49a13b5b1da9673"
+git-tree-sha1 = "c5c28c245101bd59154f649e19b038d15901b5dc"
 uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
-version = "1.16.1"
+version = "1.16.2"
 
 [[deps.FileWatching]]
 uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
 
 [[deps.FillArrays]]
-deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"]
-git-tree-sha1 = "2250347838b28a108d1967663cba57bfb3c02a58"
+deps = ["LinearAlgebra", "Random"]
+git-tree-sha1 = "5b93957f6dcd33fc343044af3d48c215be2562f1"
 uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
-version = "1.3.0"
+version = "1.9.3"
+weakdeps = ["PDMats", "SparseArrays", "Statistics"]
+
+    [deps.FillArrays.extensions]
+    FillArraysPDMatsExt = "PDMats"
+    FillArraysSparseArraysExt = "SparseArrays"
+    FillArraysStatisticsExt = "Statistics"
 
 [[deps.FixedPointNumbers]]
 deps = ["Statistics"]
@@ -313,15 +342,15 @@ version = "0.4.2"
 
 [[deps.FreeType]]
 deps = ["CEnum", "FreeType2_jll"]
-git-tree-sha1 = "cabd77ab6a6fdff49bfd24af2ebe76e6e018a2b4"
+git-tree-sha1 = "907369da0f8e80728ab49c1c7e09327bf0d6d999"
 uuid = "b38be410-82b0-50bf-ab77-7b57e271db43"
-version = "4.0.0"
+version = "4.1.1"
 
 [[deps.FreeType2_jll]]
-deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"]
-git-tree-sha1 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9"
+deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"]
+git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0"
 uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7"
-version = "2.10.4+0"
+version = "2.13.1+0"
 
 [[deps.FreeTypeAbstraction]]
 deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics"]
@@ -337,21 +366,21 @@ version = "1.0.10+0"
 
 [[deps.GPUArraysCore]]
 deps = ["Adapt"]
-git-tree-sha1 = "2d6ca471a6c7b536127afccfa7564b5b39227fe0"
+git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950"
 uuid = "46192b85-c4d5-4398-a991-12ede77f4527"
-version = "0.1.5"
+version = "0.1.6"
 
 [[deps.GeoInterface]]
 deps = ["Extents"]
-git-tree-sha1 = "bb198ff907228523f3dee1070ceee63b9359b6ab"
+git-tree-sha1 = "d4f85701f569584f2cff7ba67a137d03f0cfb7d0"
 uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f"
-version = "1.3.1"
+version = "1.3.3"
 
 [[deps.GeometryBasics]]
-deps = ["EarCut_jll", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"]
-git-tree-sha1 = "659140c9375afa2f685e37c1a0b9c9a60ef56b40"
+deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"]
+git-tree-sha1 = "5694b56ccf9d15addedc35e9a4ba9c317721b788"
 uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326"
-version = "0.4.7"
+version = "0.4.10"
 
 [[deps.Gettext_jll]]
 deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"]
@@ -359,17 +388,11 @@ git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046"
 uuid = "78b55507-aeef-58d4-861c-77aaff3498b1"
 version = "0.21.0+0"
 
-[[deps.Ghostscript_jll]]
-deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
-git-tree-sha1 = "43ba3d3c82c18d88471cfd2924931658838c9d8f"
-uuid = "61579ee1-b43e-5ca0-a5da-69d92c66a64b"
-version = "9.55.0+4"
-
 [[deps.Glib_jll]]
-deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"]
-git-tree-sha1 = "d3b3624125c1474292d0d8ed0f65554ac37ddb23"
+deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"]
+git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17"
 uuid = "7746bdde-850d-59dc-9ae8-88ece973131d"
-version = "2.74.0+2"
+version = "2.76.5+0"
 
 [[deps.Graphics]]
 deps = ["Colors", "LinearAlgebra", "NaNMath"]
@@ -385,9 +408,9 @@ version = "1.3.14+0"
 
 [[deps.GridLayoutBase]]
 deps = ["GeometryBasics", "InteractiveUtils", "Observables"]
-git-tree-sha1 = "678d136003ed5bceaab05cf64519e3f956ffa4ba"
+git-tree-sha1 = "f57a64794b336d4990d90f80b147474b869b1bc4"
 uuid = "3955a311-db13-416c-9275-1d80ed98e5e9"
-version = "0.9.1"
+version = "0.9.2"
 
 [[deps.Grisu]]
 git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2"
@@ -395,16 +418,22 @@ uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe"
 version = "1.0.2"
 
 [[deps.HDF5]]
-deps = ["Compat", "HDF5_jll", "Libdl", "Mmap", "Random", "Requires", "UUIDs"]
-git-tree-sha1 = "c73fdc3d9da7700691848b78c61841274076932a"
+deps = ["Compat", "HDF5_jll", "Libdl", "MPIPreferences", "Mmap", "Preferences", "Printf", "Random", "Requires", "UUIDs"]
+git-tree-sha1 = "26407bd1c60129062cec9da63dc7d08251544d53"
 uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f"
-version = "0.16.15"
+version = "0.17.1"
+
+    [deps.HDF5.extensions]
+    MPIExt = "MPI"
+
+    [deps.HDF5.weakdeps]
+    MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"
 
 [[deps.HDF5_jll]]
-deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "OpenSSL_jll", "Pkg", "Zlib_jll"]
-git-tree-sha1 = "4cc2bb72df6ff40b055295fdef6d92955f9dede8"
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "libaec_jll"]
+git-tree-sha1 = "38c8874692d48d5440d5752d6c74b0c6b0b60739"
 uuid = "0234f1f7-429e-5d53-9886-15a909be8d59"
-version = "1.12.2+2"
+version = "1.14.2+1"
 
 [[deps.HTTP]]
 deps = ["Base64", "Dates", "IniFile", "Logging", "MbedTLS", "NetworkOptions", "Sockets", "URIs"]
@@ -418,11 +447,17 @@ git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3"
 uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566"
 version = "2.8.1+1"
 
+[[deps.Hwloc_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "ca0f6bf568b4bfc807e7537f081c81e35ceca114"
+uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8"
+version = "2.10.0+0"
+
 [[deps.HypergeometricFunctions]]
 deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"]
-git-tree-sha1 = "0ec02c648befc2f94156eaef13b0f38106212f3f"
+git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685"
 uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a"
-version = "0.3.17"
+version = "0.3.23"
 
 [[deps.Hyperscript]]
 deps = ["Test"]
@@ -432,9 +467,9 @@ version = "0.0.4"
 
 [[deps.ImageAxes]]
 deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"]
-git-tree-sha1 = "c54b581a83008dc7f292e205f4c409ab5caa0f04"
+git-tree-sha1 = "2e4520d67b0cef90865b3ef727594d2a58e0e1f8"
 uuid = "2803e5a7-5153-5ecf-9a86-9b4c37f5f5ac"
-version = "0.6.10"
+version = "0.6.11"
 
 [[deps.ImageBase]]
 deps = ["ImageCore", "Reexport"]
@@ -450,27 +485,27 @@ version = "0.9.4"
 
 [[deps.ImageIO]]
 deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs"]
-git-tree-sha1 = "342f789fd041a55166764c351da1710db97ce0e0"
+git-tree-sha1 = "bca20b2f5d00c4fbc192c3212da8fa79f4688009"
 uuid = "82e4d734-157c-48bb-816b-45c225c6df19"
-version = "0.6.6"
+version = "0.6.7"
 
 [[deps.ImageMagick]]
-deps = ["FileIO", "ImageCore", "ImageMagick_jll", "InteractiveUtils", "Libdl", "Pkg", "Random"]
-git-tree-sha1 = "5bc1cb62e0c5f1005868358db0692c994c3a13c6"
+deps = ["FileIO", "ImageCore", "ImageMagick_jll", "InteractiveUtils"]
+git-tree-sha1 = "b0b765ff0b4c3ee20ce6740d843be8dfce48487c"
 uuid = "6218d12a-5da1-5696-b52f-db25d2ecc6d1"
-version = "1.2.1"
+version = "1.3.0"
 
 [[deps.ImageMagick_jll]]
-deps = ["Artifacts", "Ghostscript_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "OpenJpeg_jll", "Pkg", "Zlib_jll", "libpng_jll"]
-git-tree-sha1 = "7607ad4100c75908a79ff31fabb792cd37711d70"
+deps = ["JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg", "Zlib_jll", "libpng_jll"]
+git-tree-sha1 = "1c0a2295cca535fabaf2029062912591e9b61987"
 uuid = "c73af94c-d91f-53ed-93a7-00f77d67a9d7"
-version = "6.9.12+4"
+version = "6.9.10-12+3"
 
 [[deps.ImageMetadata]]
 deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"]
-git-tree-sha1 = "36cbaebed194b292590cba2593da27b34763804a"
+git-tree-sha1 = "355e2b974f2e3212a75dfb60519de21361ad3cb7"
 uuid = "bc367c6b-8a6b-528e-b4bd-a4b897500b49"
-version = "0.9.8"
+version = "0.9.9"
 
 [[deps.Imath_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl"]
@@ -484,9 +519,9 @@ uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959"
 version = "1.0.0"
 
 [[deps.Inflate]]
-git-tree-sha1 = "5cd07aab533df5170988219191dfad0519391428"
+git-tree-sha1 = "ea8031dea4aff6bd41f1df8f2fdfb25b33626381"
 uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9"
-version = "0.1.3"
+version = "0.1.4"
 
 [[deps.IniFile]]
 git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625"
@@ -494,10 +529,10 @@ uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f"
 version = "0.5.1"
 
 [[deps.IntelOpenMP_jll]]
-deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
-git-tree-sha1 = "0cb9352ef2e01574eeebdb102948a58740dcaf83"
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "5fdf2fe6724d8caabf43b557b84ce53f3b7e2f6b"
 uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0"
-version = "2023.1.0+0"
+version = "2024.0.2+0"
 
 [[deps.InteractiveUtils]]
 deps = ["Markdown"]
@@ -505,15 +540,25 @@ uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
 
 [[deps.Interpolations]]
 deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"]
-git-tree-sha1 = "721ec2cf720536ad005cb38f50dbba7b02419a15"
+git-tree-sha1 = "88a101217d7cb38a7b481ccd50d21876e1d1b0e0"
 uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59"
-version = "0.14.7"
+version = "0.15.1"
+
+    [deps.Interpolations.extensions]
+    InterpolationsUnitfulExt = "Unitful"
+
+    [deps.Interpolations.weakdeps]
+    Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
 
 [[deps.IntervalSets]]
-deps = ["Dates", "Random", "Statistics"]
-git-tree-sha1 = "16c0cc91853084cb5f58a78bd209513900206ce6"
+deps = ["Dates", "Random"]
+git-tree-sha1 = "3d8866c029dd6b16e69e0d4a939c4dfcb98fac47"
 uuid = "8197267c-284f-5f27-9208-e0e47529a953"
-version = "0.7.4"
+version = "0.7.8"
+weakdeps = ["Statistics"]
+
+    [deps.IntervalSets.extensions]
+    IntervalSetsStatisticsExt = "Statistics"
 
 [[deps.IrrationalConstants]]
 git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2"
@@ -527,9 +572,9 @@ uuid = "f1662d9f-8043-43de-a69a-05efc1cc6ff4"
 version = "0.1.1"
 
 [[deps.IterTools]]
-git-tree-sha1 = "fa6287a4469f5e048d763df38279ee729fbd44e5"
+git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023"
 uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e"
-version = "1.4.0"
+version = "1.10.0"
 
 [[deps.IteratorInterfaceExtensions]]
 git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
@@ -537,10 +582,10 @@ uuid = "82899510-4779-5014-852e-03e436cf321d"
 version = "1.0.0"
 
 [[deps.JLLWrappers]]
-deps = ["Preferences"]
-git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1"
+deps = ["Artifacts", "Preferences"]
+git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca"
 uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
-version = "1.4.1"
+version = "1.5.0"
 
 [[deps.JSON]]
 deps = ["Dates", "Mmap", "Parsers", "Unicode"]
@@ -550,9 +595,15 @@ version = "0.21.4"
 
 [[deps.JSON3]]
 deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"]
-git-tree-sha1 = "5b62d93f2582b09e469b3099d839c2d2ebf5066d"
+git-tree-sha1 = "eb3edce0ed4fa32f75a0a11217433c31d56bd48b"
 uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
-version = "1.13.1"
+version = "1.14.0"
+
+    [deps.JSON3.extensions]
+    JSON3ArrowExt = ["ArrowTypes"]
+
+    [deps.JSON3.weakdeps]
+    ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd"
 
 [[deps.JSServe]]
 deps = ["Base64", "CodecZlib", "Colors", "HTTP", "Hyperscript", "JSON3", "LinearAlgebra", "Markdown", "MsgPack", "Observables", "RelocatableFolders", "SHA", "Sockets", "Tables", "Test", "UUIDs", "WebSockets", "WidgetsBase"]
@@ -562,21 +613,21 @@ version = "1.2.9"
 
 [[deps.JpegTurbo]]
 deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"]
-git-tree-sha1 = "106b6aa272f294ba47e96bd3acbabdc0407b5c60"
+git-tree-sha1 = "fa6d0bcff8583bac20f1ffa708c3913ca605c611"
 uuid = "b835a17e-a41a-41e7-81f0-2f016b05efe0"
-version = "0.1.2"
+version = "0.1.5"
 
 [[deps.JpegTurbo_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl"]
-git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc"
+git-tree-sha1 = "60b1194df0a3298f460063de985eae7b01bc011a"
 uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8"
-version = "2.1.91+0"
+version = "3.0.1+0"
 
 [[deps.KernelDensity]]
 deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"]
-git-tree-sha1 = "90442c50e202a5cdf21a7899c66b240fdef14035"
+git-tree-sha1 = "fee018a29b60733876eb557804b5b109dd3dd8a7"
 uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b"
-version = "0.6.7"
+version = "0.6.8"
 
 [[deps.LAME_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
@@ -591,10 +642,10 @@ uuid = "88015f11-f218-50d7-93a8-a6af411a945d"
 version = "3.0.0+1"
 
 [[deps.LLVMOpenMP_jll]]
-deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
-git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b"
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713"
 uuid = "1d63c593-3942-5779-bab2-d838dc0a180e"
-version = "15.0.4+0"
+version = "15.0.7+0"
 
 [[deps.LZO_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
@@ -603,9 +654,9 @@ uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac"
 version = "2.10.1+0"
 
 [[deps.LaTeXStrings]]
-git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996"
+git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec"
 uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
-version = "1.3.0"
+version = "1.3.1"
 
 [[deps.LazyArtifacts]]
 deps = ["Artifacts", "Pkg"]
@@ -619,21 +670,26 @@ version = "0.3.1"
 [[deps.LibCURL]]
 deps = ["LibCURL_jll", "MozillaCACerts_jll"]
 uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
-version = "0.6.3"
+version = "0.6.4"
 
 [[deps.LibCURL_jll]]
 deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
 uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
-version = "7.84.0+0"
+version = "8.4.0+0"
 
 [[deps.LibGit2]]
-deps = ["Base64", "NetworkOptions", "Printf", "SHA"]
+deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"]
 uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
 
+[[deps.LibGit2_jll]]
+deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"]
+uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5"
+version = "1.6.4+0"
+
 [[deps.LibSSH2_jll]]
 deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
 uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
-version = "1.10.2+0"
+version = "1.11.0+1"
 
 [[deps.Libdl]]
 uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
@@ -657,10 +713,10 @@ uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8"
 version = "1.42.0+0"
 
 [[deps.Libiconv_jll]]
-deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
-git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71"
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175"
 uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531"
-version = "1.16.1+2"
+version = "1.17.0+0"
 
 [[deps.Libmount_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
@@ -684,17 +740,11 @@ version = "2.36.0+0"
 deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
 uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
 
-[[deps.LittleCMS_jll]]
-deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg"]
-git-tree-sha1 = "110897e7db2d6836be22c18bffd9422218ee6284"
-uuid = "d3a379c0-f9a3-5b72-a4c0-6bf4d2e8af0f"
-version = "2.12.0+0"
-
 [[deps.LogExpFunctions]]
 deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"]
-git-tree-sha1 = "c3ce8e7420b3a6e071e0fe4745f5d4300e37b13f"
+git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa"
 uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
-version = "0.3.24"
+version = "0.3.26"
 
     [deps.LogExpFunctions.extensions]
     LogExpFunctionsChainRulesCoreExt = "ChainRulesCore"
@@ -711,21 +761,39 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
 
 [[deps.MAT]]
 deps = ["BufferedStreams", "CodecZlib", "HDF5", "SparseArrays"]
-git-tree-sha1 = "79fd0b5ee384caf8ebba6c8fb3f365ca3e2c5493"
+git-tree-sha1 = "ed1cf0a322d78cee07718bed5fd945e2218c35a1"
 uuid = "23992714-dd62-5051-b70f-ba57cb901cac"
-version = "0.10.5"
+version = "0.10.6"
 
 [[deps.MKL_jll]]
-deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"]
-git-tree-sha1 = "154d7aaa82d24db6d8f7e4ffcfe596f40bff214b"
+deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl"]
+git-tree-sha1 = "72dc3cf284559eb8f53aa593fe62cb33f83ed0c0"
 uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
-version = "2023.1.0+0"
+version = "2024.0.0+0"
+
+[[deps.MPICH_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"]
+git-tree-sha1 = "2ee75365ca243c1a39d467e35ffd3d4d32eef11e"
+uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4"
+version = "4.1.2+1"
+
+[[deps.MPIPreferences]]
+deps = ["Libdl", "Preferences"]
+git-tree-sha1 = "8f6af051b9e8ec597fa09d8885ed79fd582f33c9"
+uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267"
+version = "0.1.10"
+
+[[deps.MPItrampoline_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"]
+git-tree-sha1 = "8eeb3c73bbc0ca203d0dc8dad4008350bbe5797b"
+uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748"
+version = "5.3.1+1"
 
 [[deps.MacroTools]]
 deps = ["Markdown", "Random"]
-git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2"
+git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df"
 uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
-version = "0.5.10"
+version = "0.5.13"
 
 [[deps.Makie]]
 deps = ["Animations", "Base64", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Distributions", "DocStringExtensions", "FFMPEG", "FileIO", "FixedPointNumbers", "Formatting", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageIO", "IntervalSets", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MakieCore", "Markdown", "Match", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "Printf", "Random", "RelocatableFolders", "Serialization", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "UnicodeFun"]
@@ -761,15 +829,15 @@ uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53"
 version = "0.4.3"
 
 [[deps.MbedTLS]]
-deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"]
-git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b"
+deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"]
+git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf"
 uuid = "739be429-bea8-5141-9913-cc70e7f3736d"
-version = "1.1.7"
+version = "1.1.9"
 
 [[deps.MbedTLS_jll]]
 deps = ["Artifacts", "Libdl"]
 uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
-version = "2.28.2+0"
+version = "2.28.2+1"
 
 [[deps.Meshes]]
 deps = ["Bessels", "CircularArrays", "Distances", "IterTools", "LinearAlgebra", "NearestNeighbors", "Random", "Rotations", "SparseArrays", "StaticArrays", "StatsBase", "Tables", "TransformsBase"]
@@ -777,6 +845,12 @@ git-tree-sha1 = "a1a152787767f3393362276452897605584964b1"
 uuid = "eacbb407-ea5a-433e-ab97-5258b1ca43fa"
 version = "0.29.0"
 
+[[deps.MicrosoftMPI_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
+git-tree-sha1 = "b01beb91d20b0d1312a9471a36017b5b339d26de"
+uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf"
+version = "10.1.4+1"
+
 [[deps.Missings]]
 deps = ["DataAPI"]
 git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272"
@@ -794,13 +868,13 @@ version = "0.3.4"
 
 [[deps.MozillaCACerts_jll]]
 uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
-version = "2022.10.11"
+version = "2023.1.10"
 
 [[deps.MsgPack]]
 deps = ["Serialization"]
-git-tree-sha1 = "fc8c15ca848b902015bd4a745d350f02cf791c2a"
+git-tree-sha1 = "f5db02ae992c260e4826fe78c942954b48e1d9c2"
 uuid = "99f44e22-a591-53d1-9472-aa23ef4bd671"
-version = "1.2.0"
+version = "1.2.1"
 
 [[deps.NaNMath]]
 deps = ["OpenLibm_jll"]
@@ -810,24 +884,24 @@ version = "1.0.2"
 
 [[deps.NearestNeighbors]]
 deps = ["Distances", "StaticArrays"]
-git-tree-sha1 = "2c3726ceb3388917602169bed973dbc97f1b51a8"
+git-tree-sha1 = "ded64ff6d4fdd1cb68dfcbb818c69e144a5b2e4c"
 uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce"
-version = "0.4.13"
+version = "0.4.16"
 
 [[deps.Netpbm]]
 deps = ["FileIO", "ImageCore", "ImageMetadata"]
-git-tree-sha1 = "5ae7ca23e13855b3aba94550f26146c01d259267"
+git-tree-sha1 = "d92b107dbb887293622df7697a2223f9f8176fcd"
 uuid = "f09324ee-3d7c-5217-9330-fc30815ba969"
-version = "1.1.0"
+version = "1.1.1"
 
 [[deps.NetworkOptions]]
 uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
 version = "1.2.0"
 
 [[deps.Observables]]
-git-tree-sha1 = "6862738f9796b3edc1c09d0890afce4eca9e7e93"
+git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225"
 uuid = "510215fc-4207-5dde-b226-833fc4488ee2"
-version = "0.5.4"
+version = "0.5.5"
 
 [[deps.ObservationPolicies]]
 deps = ["Observables"]
@@ -838,10 +912,13 @@ uuid = "6317928a-6b1a-42e8-b853-b8e2fc3e9ca3"
 version = "0.2.4"
 
 [[deps.OffsetArrays]]
-deps = ["Adapt"]
-git-tree-sha1 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb"
+git-tree-sha1 = "6a731f2b5c03157418a20c12195eb4b74c8f8621"
 uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
-version = "1.12.10"
+version = "1.13.0"
+weakdeps = ["Adapt"]
+
+    [deps.OffsetArrays.extensions]
+    OffsetArraysAdaptExt = "Adapt"
 
 [[deps.Ogg_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
@@ -852,7 +929,7 @@ version = "1.3.5+1"
 [[deps.OpenBLAS_jll]]
 deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
 uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
-version = "0.3.21+4"
+version = "0.3.23+2"
 
 [[deps.OpenEXR]]
 deps = ["Colors", "FileIO", "OpenEXR_jll"]
@@ -866,22 +943,22 @@ git-tree-sha1 = "a4ca623df1ae99d09bc9868b008262d0c0ac1e4f"
 uuid = "18a262bb-aa17-5467-a713-aee519bc75cb"
 version = "3.1.4+0"
 
-[[deps.OpenJpeg_jll]]
-deps = ["Artifacts", "JLLWrappers", "Libdl", "Libtiff_jll", "LittleCMS_jll", "Pkg", "libpng_jll"]
-git-tree-sha1 = "76374b6e7f632c130e78100b166e5a48464256f8"
-uuid = "643b3616-a352-519d-856d-80112ee9badc"
-version = "2.4.0+0"
-
 [[deps.OpenLibm_jll]]
 deps = ["Artifacts", "Libdl"]
 uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
-version = "0.8.1+0"
+version = "0.8.1+2"
+
+[[deps.OpenMPI_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "PMIx_jll", "TOML", "Zlib_jll", "libevent_jll", "prrte_jll"]
+git-tree-sha1 = "1d1421618bab0e820bdc7ae1a2b46ce576981273"
+uuid = "fe0851c0-eecd-5654-98d4-656369965a5c"
+version = "5.0.1+0"
 
 [[deps.OpenSSL_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl"]
-git-tree-sha1 = "1aa4b74f80b01c6bc2b89992b861b5f210e665b5"
+git-tree-sha1 = "60e3045590bd104a16fefb12836c00c0ef8c7f8c"
 uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
-version = "1.1.21+0"
+version = "3.0.13+0"
 
 [[deps.OpenSpecFun_jll]]
 deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"]
@@ -896,26 +973,32 @@ uuid = "91d4177d-7536-5919-b921-800302f37372"
 version = "1.3.2+0"
 
 [[deps.OrderedCollections]]
-git-tree-sha1 = "d321bf2de576bf25ec4d3e4360faca399afca282"
+git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5"
 uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
-version = "1.6.0"
+version = "1.6.3"
 
 [[deps.PCRE2_jll]]
 deps = ["Artifacts", "Libdl"]
 uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15"
-version = "10.42.0+0"
+version = "10.42.0+1"
 
 [[deps.PDMats]]
 deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"]
-git-tree-sha1 = "67eae2738d63117a196f497d7db789821bce61d1"
+git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65"
 uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
-version = "0.11.17"
+version = "0.11.31"
+
+[[deps.PMIx_jll]]
+deps = ["Artifacts", "Hwloc_jll", "JLLWrappers", "Libdl", "Zlib_jll", "libevent_jll"]
+git-tree-sha1 = "8b3b19351fa24791f94d7ae85faf845ca1362541"
+uuid = "32165bc3-0280-59bc-8c0b-c33b6203efab"
+version = "4.2.7+0"
 
 [[deps.PNGFiles]]
 deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"]
-git-tree-sha1 = "f809158b27eba0c18c269cf2a2be6ed751d3e81d"
+git-tree-sha1 = "67186a2bc9a90f9f85ff3cc8277868961fb57cbd"
 uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883"
-version = "0.3.17"
+version = "0.4.3"
 
 [[deps.Packing]]
 deps = ["GeometryBasics"]
@@ -931,9 +1014,9 @@ version = "0.5.12"
 
 [[deps.Parsers]]
 deps = ["Dates", "PrecompileTools", "UUIDs"]
-git-tree-sha1 = "4b2e829ee66d4218e0cef22c0a64ee37cf258c29"
+git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821"
 uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
-version = "2.7.1"
+version = "2.8.1"
 
 [[deps.Pixman_jll]]
 deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"]
@@ -944,13 +1027,13 @@ version = "0.42.2+0"
 [[deps.Pkg]]
 deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"]
 uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
-version = "1.9.2"
+version = "1.10.0"
 
 [[deps.PkgVersion]]
 deps = ["Pkg"]
-git-tree-sha1 = "f6cf8e7944e50901594838951729a1861e668cb8"
+git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da"
 uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688"
-version = "0.3.2"
+version = "0.3.3"
 
 [[deps.PlanarLarvae]]
 deps = ["DelimitedFiles", "HDF5", "JSON3", "LinearAlgebra", "MAT", "Meshes", "OrderedCollections", "Random", "SHA", "StaticArrays", "Statistics", "StatsBase", "StructTypes"]
@@ -962,9 +1045,9 @@ version = "0.15.0"
 
 [[deps.PlotUtils]]
 deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"]
-git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227"
+git-tree-sha1 = "862942baf5663da528f66d24996eb6da85218e76"
 uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043"
-version = "1.3.5"
+version = "1.4.0"
 
 [[deps.PolygonOps]]
 git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6"
@@ -973,15 +1056,15 @@ version = "0.1.2"
 
 [[deps.PrecompileTools]]
 deps = ["Preferences"]
-git-tree-sha1 = "9673d39decc5feece56ef3940e5dafba15ba0f81"
+git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f"
 uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
-version = "1.1.2"
+version = "1.2.0"
 
 [[deps.Preferences]]
 deps = ["TOML"]
-git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1"
+git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e"
 uuid = "21216c6a-2e73-6563-6e65-726566657250"
-version = "1.4.0"
+version = "1.4.1"
 
 [[deps.Printf]]
 deps = ["Unicode"]
@@ -989,9 +1072,9 @@ uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
 
 [[deps.ProgressMeter]]
 deps = ["Distributed", "Printf"]
-git-tree-sha1 = "d7a7aef8f8f2d537104f170139553b14dfe39fe9"
+git-tree-sha1 = "00099623ffee15972c16111bcf84c58a0051257c"
 uuid = "92933f4c-e287-5a05-a399-4b506db050ca"
-version = "1.7.2"
+version = "1.9.0"
 
 [[deps.QOI]]
 deps = ["ColorTypes", "FileIO", "FixedPointNumbers"]
@@ -1001,22 +1084,22 @@ version = "1.0.0"
 
 [[deps.QuadGK]]
 deps = ["DataStructures", "LinearAlgebra"]
-git-tree-sha1 = "6ec7ac8412e83d57e313393220879ede1740f9ee"
+git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e"
 uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
-version = "2.8.2"
+version = "2.9.4"
 
 [[deps.Quaternions]]
 deps = ["LinearAlgebra", "Random", "RealDot"]
-git-tree-sha1 = "da095158bdc8eaccb7890f9884048555ab771019"
+git-tree-sha1 = "9a46862d248ea548e340e30e2894118749dc7f51"
 uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0"
-version = "0.7.4"
+version = "0.7.5"
 
 [[deps.REPL]]
 deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"]
 uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
 
 [[deps.Random]]
-deps = ["SHA", "Serialization"]
+deps = ["SHA"]
 uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
 
 [[deps.RangeArrays]]
@@ -1071,31 +1154,19 @@ version = "0.4.0+0"
 
 [[deps.Rotations]]
 deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"]
-git-tree-sha1 = "54ccb4dbab4b1f69beb255a2c0ca5f65a9c82f08"
+git-tree-sha1 = "792d8fd4ad770b6d517a13ebb8dadfcac79405b8"
 uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc"
-version = "1.5.1"
+version = "1.6.1"
 
 [[deps.SHA]]
 uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
 version = "0.7.0"
 
-[[deps.SIMD]]
-deps = ["PrecompileTools"]
-git-tree-sha1 = "0e270732477b9e551d884e6b07e23bb2ec947790"
-uuid = "fdea26ae-647d-5447-a871-4b548cad5224"
-version = "3.4.5"
-
-[[deps.ScanByte]]
-deps = ["Libdl", "SIMD"]
-git-tree-sha1 = "d49e35f413186528f1d7cc675e67d0ed16fd7800"
-uuid = "7b38b023-a4d7-4c5e-8d43-3f3097f304eb"
-version = "0.4.0"
-
 [[deps.Scratch]]
 deps = ["Dates"]
-git-tree-sha1 = "30449ee12237627992a99d5e30ae63e4d78cd24a"
+git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386"
 uuid = "6c6a2e73-6563-6170-7368-637461726353"
-version = "1.2.0"
+version = "1.2.1"
 
 [[deps.Serialization]]
 uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
@@ -1130,28 +1201,29 @@ version = "0.9.4"
 
 [[deps.Sixel]]
 deps = ["Dates", "FileIO", "ImageCore", "IndirectArrays", "OffsetArrays", "REPL", "libsixel_jll"]
-git-tree-sha1 = "8fb59825be681d451c246a795117f317ecbcaa28"
+git-tree-sha1 = "2da10356e31327c7096832eb9cd86307a50b1eb6"
 uuid = "45858cf5-a6b0-47a3-bbea-62219f50df47"
-version = "0.1.2"
+version = "0.1.3"
 
 [[deps.Sockets]]
 uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
 
 [[deps.SortingAlgorithms]]
 deps = ["DataStructures"]
-git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee"
+git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085"
 uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
-version = "1.1.1"
+version = "1.2.1"
 
 [[deps.SparseArrays]]
 deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"]
 uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
+version = "1.10.0"
 
 [[deps.SpecialFunctions]]
 deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"]
-git-tree-sha1 = "7beb031cf8145577fbccacd94b8a8f4ce78428d3"
+git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d"
 uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
-version = "2.3.0"
+version = "2.3.1"
 weakdeps = ["ChainRulesCore"]
 
     [deps.SpecialFunctions.extensions]
@@ -1164,30 +1236,31 @@ uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15"
 version = "0.1.1"
 
 [[deps.StaticArrays]]
-deps = ["LinearAlgebra", "Random", "StaticArraysCore"]
-git-tree-sha1 = "0da7e6b70d1bb40b1ace3b576da9ea2992f76318"
+deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"]
+git-tree-sha1 = "7b0e9c14c624e435076d19aea1e5cbdec2b9ca37"
 uuid = "90137ffa-7385-5640-81b9-e52037218182"
-version = "1.6.0"
-weakdeps = ["Statistics"]
+version = "1.9.2"
+weakdeps = ["ChainRulesCore", "Statistics"]
 
     [deps.StaticArrays.extensions]
+    StaticArraysChainRulesCoreExt = "ChainRulesCore"
     StaticArraysStatisticsExt = "Statistics"
 
 [[deps.StaticArraysCore]]
-git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a"
+git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d"
 uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
-version = "1.4.0"
+version = "1.4.2"
 
 [[deps.Statistics]]
 deps = ["LinearAlgebra", "SparseArrays"]
 uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
-version = "1.9.0"
+version = "1.10.0"
 
 [[deps.StatsAPI]]
 deps = ["LinearAlgebra"]
-git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7"
+git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed"
 uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0"
-version = "1.6.0"
+version = "1.7.0"
 
 [[deps.StatsBase]]
 deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"]
@@ -1210,10 +1283,10 @@ version = "1.3.0"
     InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112"
 
 [[deps.StructArrays]]
-deps = ["Adapt", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"]
-git-tree-sha1 = "521a0e828e98bb69042fec1809c1b5a680eb7389"
+deps = ["Adapt", "ConstructionBase", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"]
+git-tree-sha1 = "1b0b1205a56dc288b71b1961d48e351520702e24"
 uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a"
-version = "0.6.15"
+version = "0.6.17"
 
 [[deps.StructTypes]]
 deps = ["Dates", "UUIDs"]
@@ -1226,9 +1299,9 @@ deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"]
 uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
 
 [[deps.SuiteSparse_jll]]
-deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"]
+deps = ["Artifacts", "Libdl", "libblastrampoline_jll"]
 uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c"
-version = "5.10.1+6"
+version = "7.2.1+1"
 
 [[deps.TOML]]
 deps = ["Dates"]
@@ -1242,10 +1315,10 @@ uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c"
 version = "1.0.1"
 
 [[deps.Tables]]
-deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"]
-git-tree-sha1 = "1544b926975372da01227b382066ab70e574a3ec"
+deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"]
+git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d"
 uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
-version = "1.10.1"
+version = "1.11.1"
 
 [[deps.Tar]]
 deps = ["ArgTools", "SHA"]
@@ -1272,9 +1345,9 @@ version = "0.1.1"
 
 [[deps.TiffImages]]
 deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "UUIDs"]
-git-tree-sha1 = "8621f5c499a8aa4aa970b1ae381aae0ef1576966"
+git-tree-sha1 = "34cc045dd0aaa59b8bbe86c644679bc57f1d5bd0"
 uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69"
-version = "0.6.4"
+version = "0.6.8"
 
 [[deps.TranscodingStreams]]
 deps = ["Random", "Test"]
@@ -1289,9 +1362,9 @@ uuid = "28dd2a49-a57a-4bfb-84ca-1a49db9b96b8"
 version = "0.1.2"
 
 [[deps.URIs]]
-git-tree-sha1 = "074f993b0ca030848b897beff716d93aca60f06a"
+git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b"
 uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
-version = "1.4.2"
+version = "1.5.1"
 
 [[deps.UUIDs]]
 deps = ["Random", "SHA"]
@@ -1326,15 +1399,15 @@ version = "0.1.4"
 
 [[deps.WoodburyMatrices]]
 deps = ["LinearAlgebra", "SparseArrays"]
-git-tree-sha1 = "de67fa59e33ad156a590055375a30b23c40299d3"
+git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511"
 uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6"
-version = "0.5.5"
+version = "1.0.0"
 
 [[deps.XML2_jll]]
-deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"]
-git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73"
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"]
+git-tree-sha1 = "801cbe47eae69adc50f36c3caec4758d2650741b"
 uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a"
-version = "2.10.3+0"
+version = "2.12.2+0"
 
 [[deps.XSLT_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"]
@@ -1393,7 +1466,7 @@ version = "1.5.0+0"
 [[deps.Zlib_jll]]
 deps = ["Libdl"]
 uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
-version = "1.2.13+0"
+version = "1.2.13+1"
 
 [[deps.Zstd_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl"]
@@ -1407,6 +1480,12 @@ git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c"
 uuid = "9a68df92-36a6-505f-a73e-abb412b6bfb4"
 version = "0.2.3+0"
 
+[[deps.libaec_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "eddd19a8dea6b139ea97bdc8a0e2667d4b661720"
+uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0"
+version = "1.0.6+1"
+
 [[deps.libaom_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
 git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4"
@@ -1422,7 +1501,13 @@ version = "0.15.1+0"
 [[deps.libblastrampoline_jll]]
 deps = ["Artifacts", "Libdl"]
 uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
-version = "5.8.0+0"
+version = "5.8.0+1"
+
+[[deps.libevent_jll]]
+deps = ["Artifacts", "JLLWrappers", "Libdl", "OpenSSL_jll"]
+git-tree-sha1 = "f04ec6d9a186115fb38f858f05c0c4e1b7fc9dcb"
+uuid = "1080aeaf-3a6a-583e-a51c-c537b09f60ec"
+version = "2.1.13+1"
 
 [[deps.libfdk_aac_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
@@ -1431,10 +1516,10 @@ uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280"
 version = "2.0.2+0"
 
 [[deps.libpng_jll]]
-deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"]
-git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c"
+deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"]
+git-tree-sha1 = "93284c28274d9e75218a416c65ec49d0e0fcdf3d"
 uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f"
-version = "1.6.38+0"
+version = "1.6.40+0"
 
 [[deps.libsixel_jll]]
 deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"]
@@ -1451,12 +1536,18 @@ version = "1.3.7+1"
 [[deps.nghttp2_jll]]
 deps = ["Artifacts", "Libdl"]
 uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
-version = "1.48.0+0"
+version = "1.52.0+1"
 
 [[deps.p7zip_jll]]
 deps = ["Artifacts", "Libdl"]
 uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
-version = "17.4.0+0"
+version = "17.4.0+2"
+
+[[deps.prrte_jll]]
+deps = ["Artifacts", "Hwloc_jll", "JLLWrappers", "Libdl", "PMIx_jll", "libevent_jll"]
+git-tree-sha1 = "5adb2d7a18a30280feb66cad6f1a1dfdca2dc7b0"
+uuid = "eb928a42-fffd-568d-ab9c-3f5d54fc65b9"
+version = "3.0.2+0"
 
 [[deps.x264_jll]]
 deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
diff --git a/Project.toml b/Project.toml
index a62f34aff4b9a40aba0ee45f68af67d672472fc2..7041c66a1c027cc90344a8ba2d6347be9df2f656 100644
--- a/Project.toml
+++ b/Project.toml
@@ -1,7 +1,7 @@
 name = "LarvaTagger"
 uuid = "8b3b36f1-dfed-446e-8561-ea19fe966a4d"
 authors = ["François Laurent", "Institut Pasteur"]
-version = "0.17"
+version = "0.17.1"
 
 [deps]
 Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
diff --git a/README.md b/README.md
index 73d662204d9a4e11b62e22ca3e060e5207f27ee0..fb9e873621d70a48d5649aac2a6bbd6cdff2bade 100644
--- a/README.md
+++ b/README.md
@@ -2,29 +2,93 @@
 
 [![Build Status](https://gitlab.pasteur.fr/Nyx/LarvaTagger.jl/badges/main/pipeline.svg)](https://gitlab.pasteur.fr/Nyx/LarvaTagger.jl/pipelines)
 
-`LarvaTagger.jl` is a graphical user application for the manual and automatic tagging of behaving Drosophila larvae.
+*LarvaTagger.jl* is a graphical user application for the manual and automatic tagging of behaving *Drosophila* larvae.
+
+> So far, it has been used to study *Drosophila melanogaster* third instar larvae only.
 
 <div><a href="https://ibb.co/JxRqjZH"><img src="https://i.ibb.co/mvC05p4/Larva-Tagger-jl-manual-tagging.gif" alt="Manual tagging with LarvaTagger.jl" style="display: block; margin: auto; width: 70%; border: 0;" /></a></div>
 
-This package features a web-based GUI for visualizing behaving larvae and assigning discrete behavior tags, at each time step.
+This package features a web-based graphical user interface (GUI) for visualizing the tracked larvae and assigning discrete behavior tags, at each time step.
+
+A command-line interface (CLI) is also available for batch processing, including the automatic tagging of track data files, training new taggers from labeled data, etc.
+
+Although *LarvaTagger.jl* alone comes with no automatic tagger, it is designed to work in combination with [*MaggotUBA*](https://gitlab.pasteur.fr/nyx/MaggotUBA-adapter) for the identification of larval actions or postures.
+
+> The term *LarvaTagger* refers to the full software with all the currently available tagging capabilities included.
+
+*Docker* images are available for *LarvaTagger*. See the [dedicated instructions page](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/tree/main/recipes) or the [Quick start](#quick-start-with-docker) section below.
+
+Support for various data file formats is implemented by [*PlanarLarvae.jl*](https://gitlab.pasteur.fr/nyx/planarlarvae.jl).
+Behavior labels from manual and automatic tagging are saved in [JSON files](https://gitlab.pasteur.fr/nyx/planarlarvae.jl#json-files) along with the corresponding track data files. These JSON files are text files and can be conveniently inspected with a text editor.
+
+
+## Quick start with *Docker*
+
+The present section will guide you through the following steps:
+* “install” the complete *LarvaTagger* package,
+* open a tracking data file in *LarvaTagger.jl*'s viewer,
+* “uninstall” *LarvaTagger*.
+
+These instructions only require [*Docker*](https://docs.docker.com/get-docker/) to be available, more specifically the *Docker Engine*. On Windows and macOS, *Docker Engine* is provided by the *Docker Desktop* product. *Docker Desktop* is free of charge.
+
+Ensure the currently logged-in user has access to *Docker*, and the *Docker* engine is running.
+
+The *Docker* image is obtained and operated using a script:
+* [larvatagger.bat](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/raw/dev/scripts/larvatagger.bat?ref_type=heads&inline=false) on Windows,
+* [larvatagger.sh](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/raw/dev/scripts/larvatagger.sh?ref_type=heads&inline=false) on macOS and Linux.
+
+Download the script and, optionally, some [demo data](https://gitlab.pasteur.fr/nyx/artefacts/-/raw/master/LarvaTagger/demo.zip?ref_type=heads&inline=false) to be unzipped (note: a [gzipped tar file](https://gitlab.pasteur.fr/nyx/artefacts/-/raw/master/LarvaTagger/demo.tgz?ref_type=heads&inline=false) is also available).
+
+Open a terminal window. On Windows, this can be done typing `cmd` in the finder.
+
+Change directory (`cd`) to the Downloads directory. In this example, we will assume the *larvatagger* script and unzipped demo data files are available in that directory.
+
+On macOS and Linux, change the permissions of the script file so that it can be executed:
+```
+chmod a+x larvatagger.sh
+```
+
+The demo data can be opened in the web browser for visual inspection, on macOS and Linux with:
+```
+./larvatagger.sh open Masson_et_al_2020.label --browser
+```
+and on Windows with:
+```
+larvatagger.bat open Masson_et_al_2020.label --browser
+```
+
+The viewer should open in a new tab in the default web browser. If no tabs appear, open a new one and go to [http://127.0.0.1:9284](http://127.0.0.1:9284).
+
+Not all the web browsers are supported. Prefer Firefox or Chrome-like browsers.
+
+Note that, on the first execution, the *Docker* image will be downloaded. This is done once, and can be considered as the installation step.
+
+*Docker* stores the image locally. Uninstalling *LarvaTagger* simply consists in removing the image from the local *Docker*'s store. *Docker Desktop* users can open *Docker Desktop* and delete the image listed as `flaur/larvatagger:latest`.
+
+### Main controls
+
+The tracked larvae can be animated pressing the "Play/Pause" button of the player below the 2D view.
+
+From the view displaying multiple larvae, a larva can be selected. As a result, the 2D view displays the selected larva only. From this single-larva view, the top right button allows going back to the multi-larva view.
+
+The 2D view(s) can be panned holding the mouse right button. The mouse wheel allows zooming in and out.
+
+In the single-larva view, action tags can be assigned at each time step selecting the desired tag in the horizontal list below the player. Alternatively, once the desired tag has been selected for the active time step, the same tag can be assigned at all the time steps in a time segment starting from or ending at that initial time step. This is done holding the mouse left button and moving the mouse pointer along the track until reaching the other end of the desired time segment. A drag-and-drop effect is displayed.
 
-A CLI is also available for batch processing: automatic tagging of track data files, training new taggers from labelled data, etc.
+Important: Do NOT release the mouse left button unless you are sure! As long as the left button is held, the assignment operation can be cancelled pressing the mouse middle or right button (before releasing the left button).
 
-`LarvaTagger.jl` alone comes with no automatic tagger. It is designed to work in combination with [MaggotUBA](https://gitlab.pasteur.fr/nyx/MaggotUBA-adapter).
+In the event an assignment operation needs to be undone, the only *undo* mechanism available for now undoes all the changes made on a larva, and can be accessed in the *Tracks* panel on the right, unchecking the *Edited* checkbox (middle column) corresponding to the larva.
 
-A Docker image is available, with all automatic tagging capabilities installed.
-If you have Docker or Singularity/Apptainer installed, take a look at the [dedicated instructions page](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/tree/main/recipes).
+Alternatively, tags can be similarly *un*assigned at individual time steps or over time segments. For example, the tag at the active time step can be unselected in the tag list below the player, and then the *no tag* condition can be “assigned” with the very same drag-and-drop mechanism as previously described.
 
-Support for various data file formats is implemented by [PlanarLarvae.jl](https://gitlab.pasteur.fr/nyx/planarlarvae.jl).
-Behavior labels from manual and automatic tagging are saved in [json files](https://gitlab.pasteur.fr/nyx/planarlarvae.jl#json-files) along with the corresponding track data files.
 
 ## Installing
 
-[Using the Docker image](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/tree/main/recipes) is recommended, as it ships `LarvaTagger.jl` as a standalone package that can be easily updated.
+[Using the *Docker* image](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/tree/main/recipes) is recommended, as it ships *LarvaTagger* with the default *MaggotUBA*-based tagger as a standalone package and is easier to update.
 
-To natively run `LarvaTagger.jl` instead, you will need [`julia>=1.7`](https://julialang.org/downloads/).
+To natively run *LarvaTagger.jl* instead, you will need [`julia>=1.7`](https://julialang.org/downloads/).
 
-If you are not familiar with installing Julia, you may appreciate installation helpers such as [Juliaup](https://github.com/JuliaLang/juliaup) or [jill](https://pypi.org/project/jill/) (preferred).
+If you are not familiar with installing *Julia*, you may appreciate installation helpers such as [*Juliaup*](https://github.com/JuliaLang/juliaup) or [*jill*](https://pypi.org/project/jill/) (preferred).
 
 ```
 git clone https://gitlab.pasteur.fr/nyx/larvatagger.jl LarvaTagger
@@ -33,11 +97,11 @@ julia --project=. -e 'using Pkg; Pkg.instantiate()'
 ```
 
 Calling `Pkg.instantiate` in a copy of the project is preferred over using `Pkg.add`,
-because `LarvaTagger.jl` depends on several unregistered packages.
+because *LarvaTagger.jl* depends on several unregistered packages.
 
 ### Alternative procedure
 
-Users who would prefer not to clone the repository or implicitly use the shipped `Manifest.toml` file
+Users who would prefer not to clone the repository or implicitly use the shipped *Manifest.toml* file
 can follow the following steps instead:
 
 ```
@@ -46,46 +110,51 @@ julia --project=. -e 'using Pkg; Pkg.add([ \
   PackageSpec(url="https://gitlab.com/dbc-nyx/ObservationPolicies.jl"), \
   PackageSpec(url="https://gitlab.com/dbc-nyx/TidyObservables.jl"), \
   PackageSpec(url="https://gitlab.pasteur.fr/nyx/PlanarLarvae.jl"), \
-  PackageSpec(url="https://gitlab.pasteur.fr/nyx/LarvaTagger.jl")])
+  PackageSpec(url="https://gitlab.pasteur.fr/nyx/LarvaTagger.jl")])'
 ```
 
+The `--project=.` option will make the newly created *LarvaTagger* directory a new Julia project with a dedicated *Manifest.toml* file.
+
 ### Upgrading
 
-From a local copy of the git repository, be sure to be on the appropriate branch (in most cases the *main* branch) and update (or *pull*) it:
+From a local copy of the git repository, be sure to be on the appropriate branch (in most cases the *main* branch) and update (*git pull*) it:
 ```
 git checkout main
 git pull
 ```
-Upgrading the Julia package can be done similarly to the installation step:
+
+If the alternative installation procedure was followed instead, go to the *LarvaTagger* directory and type:
 ```
-julia --project=. -e 'using Pkg; Pkg.instantiate()'
+julia --project=. -e 'using Pkg; Pkg.update()'
 ```
 
 ## Launching the graphical user interface
 
-The GUI is provided by a webserver.
+The GUI is provided by a web server and can be accessed using a web browser, preferably Firefox or Chrome-like browsers.
 
-Running `LarvaTagger.jl` sets the server up. Once the server is ready, the app can be loaded in a webbrowser at the address indicated (typically `localhost:9284`).
+Running *LarvaTagger.jl* sets the server up. Once the server is ready, the app can be loaded in a web browser at the address indicated, typically [http://localhost:9284](http://127.0.0.1:9284).
 
-### Using the `larvatagger` script
+See the [Quick start](#main-controls) section for information about some of the controls available in the GUI.
 
-If you cloned the repository, we recommend you run `LarvaTagger.jl` using the `larvatagger` script to be found in the `scripts` directory:
+### Using the *larvatagger* script
+
+If you cloned the repository, we recommend you run *LarvaTagger* using the *larvatagger* script to be found in the *scripts* directory:
 
 ```
 scripts/larvatagger open path/to/data/file --browser
 ```
 
-The script will actually open a Julia interpreter, and give some guidance on how to exit the interpreter.
+The script will actually open a *Julia* interpreter, and give some guidance on how to exit the interpreter.
 
-For now, `larvatagger open` cannot be run with no input arguments. A track data file is required.
+> For now, `larvatagger open` cannot be run with no input arguments. A track data file is required.
 
-The `--browser` argument may open a new tab in your webbrowser, but this feature is known to not work in some situations.
+The `--browser` argument may open a new tab in your web browser, but this feature is known to be ineffective in some situations. In such an event, open a new tab and go to [http://localhost:9284](http://127.0.0.1:9284).
 
-The first time the application is loaded, it may take a while for a window in your webbrowser to open, and the data to be plotted.
+The first time the application is loaded, it may take a while for a window in your web browser to open, and the data to be plotted.
 
-### From the Julia interpreter
+### From the *Julia* interpreter
 
-As an alternative to the *larvatagger* script, in the `LarvaTagger` directory created above, launch the Julia interpreter:
+As an alternative to the *larvatagger* script, in the *LarvaTagger* directory created above, launch the *Julia* interpreter:
 ```
 julia --project=.
 ```
@@ -98,29 +167,33 @@ To exit the interpreter, type `exit()` or press Ctrl+D.
 
 ### macOS
 
-On macOS computers, the 2D larva view often shows up twice as small as expected. To mitigate this undesired behavior,
-`larvatagger open` admits a `--view-factor` option, and `larvaeditor` admits a `viewfactor` argument.
+On macOS computers, the 2D larva view may show up twice as small as expected. To mitigate this undesired behavior,
+`larvatagger open` admits a `--view-factor` option, and equivalently `larvaeditor` admits a `viewfactor` argument.
 This option/argument is 2 per default on macOS, 1 on the other platforms.
 Feel free to adjust the value if the 2D view is too small or large.
 
 ## Automatic tagging
 
-`LarvaTagger.jl` comes with no automatic tagger per default.
+*LarvaTagger.jl* comes with no automatic tagger per default.
+
+To extend the editor with *MaggotUBA*-based automatic tagging, see the [recommended installation steps for *TaggingBackends* and *MaggotUBA*](https://gitlab.pasteur.fr/nyx/TaggingBackends#recommended-installation).
 
-To extend the editor with `MaggotUBA` automatic tagging, checkout out the [recommended installation steps for TaggingBackends and MaggotUBA](https://gitlab.pasteur.fr/nyx/TaggingBackends#recommended-installation).
+> Strictly speaking, the action identification package (or tagging backend) is called *MaggotUBA-adapter*.
+> It is based on *MaggotUBA*, which is an autoencoder for action-agnostic behavior analysis.
+> The terms *MaggotUBA* and *MaggotUBA-adapter* are used interchangeably in the present documentation.
 
-If the `JULIA_PROJECT` environment variable was used to control the location of the `TaggingBackends` Julia package, this variable should be equally set prior to carrying out any of the below steps.
+If the `JULIA_PROJECT` environment variable was used to control the location of the *TaggingBackends* *Julia* package, this variable should be equally set prior to carrying out any of the below steps.
 
-If the backend directory is created right in the `LarvaTagger` directory, `LarvaTagger.jl` will automatically find it.
+If the backend directory is created right in the *LarvaTagger* directory, *LarvaTagger.jl* will automatically find it.
 
-Otherwise, to let *larvaeditor* know about MaggotUBA or any other backend, in the Julia interpreter, type:
+Otherwise, to let the *larvaeditor* function know about *MaggotUBA* or any other backend, in the *Julia* interpreter, type:
 ```
-julia> using LarvaTagger; display(larvaeditor("path/to/data/file"; backend_directory="path/to/MaggotUBA's/parent/directory"))
+julia> using LarvaTagger; display(larvaeditor("path/to/data/file"; backend_directory="path/to/MaggotUBA/parent/directory"))
 ```
 
-Similarly, to let *larvatagger* know about MaggotUBA:
+Similarly, to let *LarvaTagger* know about *MaggotUBA*:
 ```
-scripts/larvatagger open <path/to/data/file> --backends=<path/to/MaggotUBA's/parent/directory> --browser
+scripts/larvatagger open <path/to/data/file> --backends=<path/to/MaggotUBA/parent/directory> --browser
 ```
 
 The *larvatagger* script can also be used to train a new tagger:
@@ -132,7 +205,9 @@ and apply this tagger to a tracking data file:
 scripts/larvatagger predict <path/to/backend> <tagger-name> <path/to/data/file>
 ```
 
-Among the many optional arguments to the `train` command, an important one is `--iterations`. It allows specifying the training budget. In several applications, higher training scores were achieved increasing the value for this argument. The default for `MaggotUBA-adapter` tagging backend is 1000. `MaggotUBA-adapter` admits either a single value or a comma-separated pair of values. Indeed, `MaggotUBA-adapter` training is performed in two phases: first the classifier stage is trained, with static weights in the pretrained MaggotUBA encoder; second both the classifier and encoder are fine-tuned. A higher training budget for the second fine-tuning stage may significantly increase the training accuracy.
+Among the many optional arguments to the `train` command, an important one is `--iterations`. It allows specifying the training budget. In several applications, higher training scores were achieved increasing the value for this argument. The default for *MaggotUBA-adapter* tagging backend is 1000, which may be too few iterations in many cases.
+
+*MaggotUBA-adapter* admits either a single value or a comma-separated pair of values. Indeed, *MaggotUBA-adapter* training is performed in two phases: first the classifier stage is trained, with static weights in the pretrained *MaggotUBA* encoder; second both the classifier and encoder are fine-tuned. A higher training budget for the second fine-tuning stage may significantly increase the training accuracy.
 
 Note: since `TaggingBackends==0.10`, argument `--skip-make-dataset` is default behavior; pass `--make-dataset` instead to enforce the former default.
 
@@ -148,9 +223,9 @@ The `train` and `predict` commands admit more arguments. Check them out with:
 scripts/larvatagger --help
 ```
 
-The trained taggers are stored in the `models` directory in the backend.
-MaggotUBA-based taggers are stored in the shape of *.pt* and *.json* files.
-After training a tagger, post-processing rules can be manually added into the `clf_config.json` file.
+The trained taggers are stored in the *models* directory in the backend.
+*MaggotUBA*-based taggers are stored in the shape of PT and JSON files.
+After training a tagger, post-processing rules can be manually added into the *clf_config.json* file.
 See the following [comment](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/issues/62#note_51819).
 
 ## Developer documentation
@@ -159,10 +234,18 @@ See the [release announcements](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/i
 
 ## Known issues
 
-### CUDA errors
+### Data from remote stores
+
+In the graphical user interface, viewing data files loaded from a network mount may cause the player to exhibit erratic behavior, jumping to/from past and future time steps, and refusing to stop.
+
+In addition, loading such a data file may take *LarvaTagger.jl* a lot more time than transferring the file locally and opening the local copy instead.
+
+Ensure the data can be loaded without latencies or slow downs.
+
+### *CUDA* errors
 
-On calling `larvatagger predict` using a MaggotUBA-based tagger, if CUDA complains with messages such as:
+On calling `larvatagger predict` using a *MaggotUBA*-based tagger, if *CUDA* complains with messages such as:
 ```
 .../torch/cuda/__init__.py:... Can't initialize NVML
 ```
-you might have upgraded your NVIDIA drivers and not rebooted the OS. Try restarting your computer.
+you might have upgraded your *NVIDIA* drivers and not rebooted the OS. Try restarting your computer.
diff --git a/doc/develop.md b/doc/develop.md
index f035658160a20ef52bc523341318c398d9a05539..ec368bcd61e23ce026565fdcc8c38330342c60f5 100644
--- a/doc/develop.md
+++ b/doc/develop.md
@@ -1,25 +1,25 @@
-LarvaTagger is an umbrella project for the UI LarvaTagger.jl, the default MaggotUBA-based tagging backends and other related Julia and Python projects.
+*LarvaTagger* is an umbrella project for the UI *LarvaTagger.jl*, the default *MaggotUBA*-based tagging backends and other related *Julia* and *Python* projects.
 
 # Project map
 
 <img src="project_structure.svg" />
 
-The TidyObservables.jl and ObservationPolicies.jl are hosted on gitlab.com.
+The *TidyObservables.jl* and *ObservationPolicies.jl* are hosted on [gitlab.com](https://gitlab.com/dbc-nyx).
 
 ## Deployment projects
 
 More related projects can be found at [gitlab.com/LarvaTaggerPipelines](https://gitlab.com/larvataggerpipelines).
-For example, the [Pesticides](https://gitlab.com/larvataggerpipelines/pesticides), [t5_analysis_replicates](https://gitlab.com/larvataggerpipelines/t5_analysis_replicates) and [TrxmatRetagger](https://gitlab.com/larvataggerpipelines/TrxmatRetagger) are processing pipelines that include LarvaTagger.jl with MaggotUBA-based tagger.
+For example, the [Pesticides](https://gitlab.com/larvataggerpipelines/pesticides), [Alzheimer](https://gitlab.com/larvataggerpipelines/Alzheimer), [t5_analysis_replicates](https://gitlab.com/larvataggerpipelines/t5_analysis_replicates) and [TrxmatRetagger](https://gitlab.com/larvataggerpipelines/TrxmatRetagger) projects are processing pipelines that include *LarvaTagger.jl* with *MaggotUBA*-based tagger.
 
-They all rely on a Docker image of LarvaTagger and automate the deployment on various HPC clusters.
+They all rely on a *Docker* image of *LarvaTagger* and automate the deployment on specific HPC clusters using *make*.
 
 # Tests
 
 Only three sub-projects only include automatic tests.
 
-On the Julia side, the lower-level functionalities are provided by the PlanarLarvae.jl project. This project features unit tests with high coverage, that are run on every commit.
+On the *Julia* side, the lower-level functionalities are provided by the *PlanarLarvae.jl* project. This project features unit tests with high coverage, that are run on every commit.
 
-Similarly, the TidyObservables.jl project has unit tests and a GitLab workflow to run these tests on every commit.
+Similarly, the *TidyObservables.jl* project has unit tests and a GitLab workflow to run these tests on every commit.
 
-For the remaining part of the LarvaTagger project, high-level functional tests only are available.
-These tests are available in the LarvaTagger.jl project, in the test directory, file scenarii.sh. They depend on [shUnit2](https://github.com/kward/shunit2).
+For the remaining part of the *LarvaTagger* project, high-level functional tests only are available.
+These tests are available in the *LarvaTagger.jl* project, in the test directory, file *scenarii.sh*. They depend on [*shUnit2*](https://github.com/kward/shunit2).
diff --git a/recipes/Dockerfile b/recipes/Dockerfile
index 3c516f31810aef33875d8fe4b079669760bebb02..f73b1b4a5d03ac91969225027e82e040ee583406 100644
--- a/recipes/Dockerfile
+++ b/recipes/Dockerfile
@@ -1,4 +1,4 @@
-FROM julia:1.9.3-bullseye AS base
+FROM julia:1.10.0-bullseye AS base
 
 ARG PROJECT_DIR=/app
 ARG BRANCH=main
diff --git a/recipes/README.md b/recipes/README.md
index 79be90e707a866ee1f8d1ebf945bf74ee65c8719..19d5223a5cc57eaf46a98d4caf505d6389c8b145 100644
--- a/recipes/README.md
+++ b/recipes/README.md
@@ -1,13 +1,13 @@
-# Docker images
+# *Docker* images
 
-Docker images can be used with the `docker` command.
+*Docker* images can be used with the *docker* command.
 To make their usage easier, standalone scripts are available in the *scripts* directory.
-They can be used with no installation step other than setting up Docker.
+They can be used with no installation step other than setting up *Docker*.
 
 Windows users should use the [larvatagger.bat script](#the-larvataggerbat-script), while macOS and Linux users should use the [larvatagger.sh script](#the-larvataggersh-script) instead.
 
 The first two sections describe how to use these scripts.
-The last section is dedicated to Singularity/Apptainer.
+The last section is dedicated to *Singularity*/*Apptainer*.
 
 ## The *larvatagger.bat* script
 
@@ -17,14 +17,14 @@ The *larvatagger.bat* script is available in the *scripts* directory of the proj
 
 If you do not have a copy of the project, you can simply [download the script](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/raw/main/scripts/larvatagger.bat?inline=false) and save it in your `C:\Users\<user>` directory.
 
-Note that Docker still has to be installed.
+Note that *Docker* still has to be installed.
 
 In the command prompt (`cmd`), to check the script works properly, try:
 ```
 larvatagger.bat --version
 ```
 
-The first time the script runs, Docker downloads the latest image.
+The first time the script runs, *Docker* downloads the latest image.
 
 ### Launching the GUI
 
@@ -32,11 +32,11 @@ To open a track data file, try:
 ```
 larvatagger.bat open Z:\path\to\datafile
 ```
-This turns the commandline into a Julia interpreter to serve the app as a webserver.
+This turns the command-line into a *Julia* interpreter to serve the app as a web server.
 
-As instructed, open `localhost:9284` in your webbrowser to access the app.
+As instructed, open [http://localhost:9284](http://127.0.0.1:9284) in your web browser to access the app.
 
-You can stop the server in the commandline pressing Ctrl+C.
+You can stop the server in the command-line pressing Ctrl+C.
 The server can also be exited typing `exit()` and pressing Enter.
 
 The `--browser` argument mentioned elsewhere does not work with the *larvatagger.bat* script yet.
@@ -45,19 +45,19 @@ A default tagger will be available in the app.
 
 ### Automatic tagging
 
-To apply a tagger (e.g. `20230311`) to a track data file, type:
+To apply a tagger (e.g. *20230311*) to a track data file, type:
 ```
 larvatagger.bat predict Z:\path\to\datafile 20230311
 ```
 This will create a *predicted.label* in the same directory as the data file. If the file already exists, it is overwritten.
 
-To apply a custom tagger, named e.g. *mytagger* and stored in the `C:\Users\<user>\models\mytagger` directory, type instead:
+To apply a custom tagger, named *e.g.* *mytagger* and stored in the `C:\Users\<user>\models\mytagger` directory, type instead:
 ```
 larvatagger.bat predict Z:\path\to\datafile models\mytagger
 ```
 Here, `models\mytagger` is the relative path of the directory of the tagger.
 This path has to include at least one `\` character so that it is identified as an external tagger.
-Otherwise, LarvaTagger.jl would look up for the tagger inside the Docker container, and fail to find it.
+Otherwise, *LarvaTagger.jl* would look up for the tagger inside the *Docker* container, and fail to find it.
 
 ### More to come...
 
@@ -74,22 +74,22 @@ The *larvatagger.sh* script is available in the *scripts* directory of the proje
 
 If you do not have a copy of the project, you can simply [download the script](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/raw/main/scripts/larvatagger.sh?inline=false) and set its permissions so that it can be executed.
 
-Note that Docker still has to be installed.
+Note that *Docker* still has to be installed.
 
 To check the script works properly, in a terminal, change directory to where the *larvatagger.sh* script is located and try:
 ```
 ./larvatagger.sh --version
 ```
 
-The first time the script runs, Docker downloads the latest image.
+The first time the script runs, *Docker* downloads the latest image.
 
 #### Compatibility issue on macOS
 
-Some combinations of Apple architectures and Docker versions will hang and complain with the following message:
+Some combinations of Apple architectures and *Docker* versions will hang and complain with the following message:
 ```
 WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
 ```
-This can be fixed using Docker Desktop and enabling [Rosetta 2 virtualization (see section “How to run x86 containers on Apple Mac M1 Pro”)](https://collabnix.com/warning-the-requested-images-platform-linux-amd64-does-not-match-the-detected-host-platform-linux-arm64-v8/).
+This can be fixed using *Docker Desktop* and enabling [Rosetta 2 virtualization (see section “How to run x86 containers on Apple Mac M1 Pro”)](https://collabnix.com/warning-the-requested-images-platform-linux-amd64-does-not-match-the-detected-host-platform-linux-arm64-v8/).
 
 ### Launching the GUI
 
@@ -97,10 +97,10 @@ To open a track data file, try:
 ```
 ./larvatagger.sh open path/to/datafile
 ```
-This turns the commandline into a Julia interpreter to serve the app as a webserver.
+This turns the command-line into a *Julia* interpreter to serve the app as a web server.
 
-As instructed, open `localhost:9284` in your webbrowser to access the app.
-As similarly instructed, you can stop the server in the commandline pressing Ctrl+D.
+As instructed, open [http://localhost:9284](http://127.0.0.1:9284) in your web browser to access the app.
+As similarly instructed, you can stop the server in the command-line pressing Ctrl+D.
 The server can also be exited typing `exit()` and pressing Enter.
 
 A default tagger will be available in the app.
@@ -127,7 +127,7 @@ However, for the trained models to be persistant, the `train` command must store
 Per default, `larvatagger.sh train` creates a *models* directory in the current directory and stores the model instances in there.
 
 As a consequence, the `predict` command can use external model instances passing paths instead of instance names.
-To distinguish between paths and names, `larvatagger.sh` checks whether the corresponding directory exists. If a directory exists at the path pointed to by `--model-instance` (on the host), then it is mounted into the container as an external trained model:
+To distinguish between paths and names, *larvatagger.sh* checks whether the corresponding directory exists. If a directory exists at the path pointed to by `--model-instance` (on the host), then it is mounted into the container as an external trained model:
 ```
 ./larvatagger.sh predict path/to/data/file --model-instance models/my-tagger
 ```
@@ -136,66 +136,68 @@ To enable GPU acceleration, pass the `--gpus all` argument.
 
 To check whether GPUs are detected, run `docker run --rm --gpus all --entrypoint checkgpu flaur/larvatagger`. This command should print a list of your GPUs, otherwise prints *cuda unavailable*.
 
-The `train` and `predict` switches may require the `realpath` core utility that is not available per default on macOS. macOS users may need to install `coreutils`: `brew install coreutils`.
+The `train` and `predict` switches may require the *realpath* core utility that is not available per default on macOS. macOS users may need to install *coreutils*: `brew install coreutils`.
 
 ### Building an image
 
-The *larvatagger.sh* script features a `build` command to build a local Docker image:
+The *larvatagger.sh* script features a `build` command to build a local *Docker* image:
 ```
 scripts/larvatagger.sh build
 ```
 
-Optionally, you can also get the default backend (currently *MaggotUBA/20230311*) with:
+Optionally, you can also get the default backend (currently *20230311*) with:
 ```
 scripts/larvatagger.sh build --with-default-backend
 ```
 
-If you specifically want the *20230311* tagger, and not rely on the default set in the script, do:
+If you want another tagger, *e.g.* the *20230129* tagger implemented by the *20230129* branch of the *MaggotUBA-adapter* repository, do:
 ```
-scripts/larvatagger.sh build --with-backend MaggotUBA/20230311
+scripts/larvatagger.sh build --with-backend MaggotUBA/20230129
 ```
 
-The `build` command requires a local copy of the LarvaTagger.jl project. In addition, the larvatagger.sh script must be executed from the project root directory, hence the path `scripts/larvatagger.sh`.
+The `build` command requires a local copy of the *LarvaTagger.jl* project. In addition, the *larvatagger.sh* script must be executed from the project root directory, hence the path *scripts/larvatagger.sh*.
 
-## Using the docker command
+## Using the *docker* command
+
+The present section gives low-level usage examples.
 
 ### Getting available images
 
 Images are published on [Docker Hub](https://hub.docker.com/r/flaur/larvatagger/tags).
 
-They ship with `LarvaTagger.jl` and, optionally, with a MaggotUBA-based toy backend for automatic tagging.
+They ship with *LarvaTagger.jl* and, optionally, with a *MaggotUBA*-based backend for automatic tagging.
 
 Try:
 ```
 docker pull flaur/larvatagger
 ```
 
-Beware that images that ship with backends are relatively large files (>5GB on disk).
-If you are not interested in automatic tagging, use the `flaur/larvatagger:0.17-standalone` image instead.
+Beware that images that ship with a tagging backend are relatively large files (>5GB on disk).
+If you are not interested in automatic tagging, use the `flaur/larvatagger:0.17.1-standalone` image instead.
 
 ### Upgrading
 
-The `docker pull flaur/larvatagger` command can be used to upgrade the Docker image as well.
+The `docker pull flaur/larvatagger` command can be used to upgrade the *Docker* image as well.
 
 It should be safe to upgrade but beware that, for example, the default tagger may change.
 
-The last release known to include a specific tagger will stay available on dockerhub.
+The last release known to include a specific tagger will stay available on Docker Hub.
 
 ### Launching the GUI
 
-A number of options must be passed to the `docker` command for the container to open a data file in the current working directory:
+A number of options must be passed to the *docker* command for the container to open a data file in the current working directory:
 
 ```
-docker -iv $(pwd):/data -p 9284:9284 flaur/larvatagger open yourfilename
+docker -iv $(pwd):/data -p 9284:9284 flaur/larvatagger open <yourfilename>
 ```
-with `yourfilename` the name of your data file.
+with `<yourfilename>` the name of your data file.
 
-In PowerShell on Windows, use `${PWD}` instead of `$(pwd)`.
+In *PowerShell* on Windows, use `${PWD}` instead of `$(pwd)`.
 
 In the command above, `/data` represents the local directory, as made available within the container.
 This is required, since no files outside the container can be accessed.
 
-The port LarvaTagger.jl listens to must also be exported with `-p 9284:9284` so that it can be accessed from outside the container.
+The port *LarvaTagger.jl* listens to must also be exported with `-p 9284:9284` so that it can be accessed from outside the container.
 
 ### `train` and `predict`
 
@@ -207,7 +209,7 @@ See the main [README](https://gitlab.pasteur.fr/nyx/larvatagger.jl#automatic-tag
 Additionally, for the `train` switch, an external *models* directory must be explicitly mounted */app/MaggotUBA/models*.
 Ownership of the generated files will have to be fixed (*root* per default on Unix-like systems).
 
-### Windows PowerShell example
+### Windows *PowerShell* example
 
 Using a few [sample files](https://gitlab.pasteur.fr/nyx/artefacts/-/tree/master/PlanarLarvae):
 ```
@@ -272,14 +274,14 @@ trx_small.mat
 
 ```
 A *predicted.label* file was generated.
-This file can be loaded in the LarvaTagger.jl viewer like any *table.csv*, *.mat* or *.outline* file.
+This file can be loaded in the *LarvaTagger.jl* viewer like any *table.csv*, *.mat* or *.outline* file.
 
-## Singularity/Apptainer
+## *Singularity*/*Apptainer*
 
-Docker is usually not available on shared HPC resources.
-[Singularity](https://sylabs.io/) or [Apptainer](http://apptainer.org/) are used instead, and the Docker image for LarvaTagger.jl can be run using these technologies.
+*Docker* is usually not available on shared HPC clusters.
+[*Singularity*](https://sylabs.io/) or [*Apptainer*](http://apptainer.org/) are used instead, and the *Docker* image for *LarvaTagger.jl* can be run using these technologies.
 
-An issue with the `predict` and `train` switches makes the backend unable to use the internal */app/MaggotUBA/data* directory to organise the raw, interim and processed data files.
+An issue with the `predict` and `train` switches makes the backend unable to use the internal */app/MaggotUBA/data* directory to organise the *raw*, *interim* and *processed* data files.
 A workaround consists in using an external *apptainer-data* directory and bind mount it as */app/MaggotUBA/data*.
 For example:
 
@@ -289,6 +291,6 @@ apptainer run --bind apptainer-data:/app/MaggotUBA/data docker://flaur/larvatagg
 
 Depending on where the data file is located in the file system, the parent directory may also need to be bind-mounted.
 
-Running Docker containers may not be accessible from worker nodes. A workaround consists in converting the Docker image into a Singularity image file for Apptainer, and then call `apptainer run` for that *sif* image.
+Running *Docker* containers may not be accessible from worker nodes. A workaround consists in converting the *Docker* image into a *Singularity* image file for *Apptainer*, and then call `apptainer run` for that *.sif* image.
 
-See also a [deployment example](https://gitlab.com/larvataggerpipelines/t5_analysis_replicates/-/blob/0db595945b6c2d1bdf7147b136807b11c41d52dc/Makefile.maestro#L53).
+See also a [deployment example](https://gitlab.com/larvataggerpipelines/t5_analysis_replicates/-/blob/0db595945b6c2d1bdf7147b136807b11c41d52dc/Makefile.maestro#L53), and [other examples](https://gitlab.pasteur.fr/nyx/larvatagger.jl/-/blob/dev/doc/develop.md?ref_type=heads#deployment-projects).
diff --git a/src/Taggers.jl b/src/Taggers.jl
index f75bb50625b14544dbda737e13752865f20c4d0d..77987c966c9c40edbd7bd80b11e4c021e42100b3 100644
--- a/src/Taggers.jl
+++ b/src/Taggers.jl
@@ -81,7 +81,7 @@ function push(tagger::Tagger, inputdata::String)
     destination = nothing
     backend_name = basename(realpath(tagger.backend_dir))
     raw_data_dir = datadir(tagger, "raw")
-    if occursin("*", inputdata)
+    if occursin('*', inputdata)
         repository = Dataloaders.Repository(inputdata)
         for file in Formats.find_associated_files(Dataloaders.files(repository))
             src_file = file.source
diff --git a/src/controllers.jl b/src/controllers.jl
index 79fb0c06b52b39c4ffb82d5c2eaac83fca028033..bf5906beb44e138f07047e0b5b5149c79ef70ccd 100644
--- a/src/controllers.jl
+++ b/src/controllers.jl
@@ -307,7 +307,9 @@ end
 setbounds!(view::Axis, lb, ub) = limits!(view, lb[1], ub[1], lb[2], ub[2])
 
 settimebounds!(c, larva) = settimebounds!(getplayer(c), larva)
+settimebounds!(::AbstractAnimator, _) = nothing
 unsettimebounds!(c) = unsettimebounds!(getplayer(c))
+unsettimebounds!(::AbstractAnimator) = nothing
 
 function slave(master::Observable, policy::ObservationPolicy=IndependentObservables())
     newobservable(policy, master)
diff --git a/src/files.jl b/src/files.jl
index ac616586b19d9fde077cc3b1eb3ae5568ae7933f..273e385e54911b683ebd1532a84c8e14b5dc7038 100644
--- a/src/files.jl
+++ b/src/files.jl
@@ -413,7 +413,7 @@ function explicit_editions_needed(controller, editiontag)
     if file isa Formats.JSONLabels
         Formats.load!(file)
         return haskey(file.run.attributes, :labels)
-    elseif file isa Formats.Trxmat || file isa MaggotUBA
+    elseif file isa Formats.Trxmat || file isa Formats.MaggotUBA
         return true
     else
         return false
diff --git a/src/larvatagger.js b/src/larvatagger.js
index 3455cff2174caec81d8fbfc59100427b17b9152b..51b1478c28e87ce5887df5b73f831020d3d73a1c 100644
--- a/src/larvatagger.js
+++ b/src/larvatagger.js
@@ -62,7 +62,7 @@ const LarvaTagger = (function () {
 		if (checkbox.checked) {
 			checkbox.checked = false;
 		} else {
-			var answer = confirm("Discard changes for larva ${label}?");
+			var answer = confirm(`Discard changes for larva ${label}?`);
 			if (answer) {
 				JSServe.update_obs(observer, false);
 			} else {
diff --git a/src/plots.jl b/src/plots.jl
index 0364c82020fdb99104df2c9c5f37025810f5b481..104d85655e7879bf56ea429146331184c37907ba 100644
--- a/src/plots.jl
+++ b/src/plots.jl
@@ -436,7 +436,7 @@ function setmouseevents!(scene, larva::SingleLarvaView;
 
     on(events(scene).mousebutton) do event
         if event.action == Mouse.press && event.button != Mouse.left
-            assignmentfailed!(larva.controller, "$(event.button) mouse button pressed")
+            dragging[] && assignmentfailed!(larva.controller, "$(event.button) mouse button pressed")
             stop()
         end
     end
diff --git a/src/wgl.jl b/src/wgl.jl
index 164fe6792251376c606e2a5ef7e82479807772a3..a162e970af2959e4a33ef4c4a138a26324cc52d3 100644
--- a/src/wgl.jl
+++ b/src/wgl.jl
@@ -521,11 +521,12 @@ end
 JSServe.jsrender(session::Session, li::LarvaInfo) = r(session, prerender(li))
 
 function prerender(li::LarvaInfo)
-    label = DOM.label("#$(li.id)",
+    label = "#$(li.id)"
+    discard_larva_edits = js"LarvaTagger.discardLarvaEdits(this, $(li.edited), $label)"
+    label = DOM.label(label,
                       onmouseenter=js"JSServe.update_obs($(li.hovered), true)",
                       onmouseleave=js"JSServe.update_obs($(li.hovered), false)",
                       onmouseup=js"JSServe.update_obs($(li.clicked), true)")
-    discard_larva_edits = js"LarvaTagger.discardLarvaEdits(this, $(li.edited), $label)"
     reviewed_checkbox = DOM.input(type="checkbox",
                                   checked=li.reviewed,
                                   onchange=js"""