diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fccf560..42a9afd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,78 +40,3 @@ jobs: ${{ runner.os }}- - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 - env: - JULIA_NUM_THREADS: 2 - - uses: julia-actions/julia-processcoverage@v1 - - uses: codecov/codecov-action@v1 - with: - file: lcov.info - docs: - name: Documentation - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: julia-actions/setup-julia@v1 - with: - version: '1' - - run: | - julia -e ' - function set_environment_variable(name::AbstractString, value::AbstractString) - github_env = ENV["GITHUB_ENV"] - touch(github_env) - open(github_env, "a") do io - println(io, "$(name)=$(value)") - end - end - event_name = "${{ github.event_name }}" - if event_name == "pull_request" - base_ref = "${{ github.base_ref }}" - head_ref = "${{ github.head_ref }}" - base_repository = "${{ github.repository }}" - head_repository = "${{ github.event.pull_request.head.repo.full_name }}" - build_docs = (base_ref == "master") && (head_ref == "dev") && (base_repository == head_repository) - elseif event_name == "push" - ref = "${{ github.ref }}" - build_docs = (ref == "refs/heads/master") || (startswith(ref, "refs/tags/")) - elseif event_name == "schedule" - build_docs = ref == "refs/heads/master" - elseif event_name == "workflow_dispatch" - build_docs = ref == "refs/heads/master" - else - build_docs = false - end - if build_docs - @info("We will build the docs") - set_environment_variable("BUILD_DOCS", "true") - else - @info("We will NOT build the docs") - set_environment_variable("BUILD_DOCS", "false") - end' - - run: | - julia --project=docs -e ' - if ENV["BUILD_DOCS"] == "true" - using Pkg - Pkg.develop(PackageSpec(path=pwd())) - Pkg.instantiate() - end' - - run: | - julia --project=docs -e ' - if ENV["BUILD_DOCS"] == "true" - using Documenter: doctest - using MLJBase - @info "attempting to run the doctests" - doctest(MLJBase) - else - @info "skipping the doctests" - end' - - run: julia --project=docs -e ' - if ENV["BUILD_DOCS"] == "true" - @info "attempting to build the docs" - run(`julia --project=docs docs/make.jl`) - @info "successfully built the docs" - else - @info "skipping the docs build" - end' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} diff --git a/DEVELOPER_NOTES.md b/DEVELOPER_NOTES.md index be03a97..72c899b 100644 --- a/DEVELOPER_NOTES.md +++ b/DEVELOPER_NOTES.md @@ -27,14 +27,12 @@ generated won't run properly. ## Generating the notebooks -To generate notebooks do `include(/src/generate_all.jl)`. For some -tutorials, a notebook may not be generated, because of some known -issue. A warning will be issued and you'll need to generate the -relevant notebook by hand. (At time of writing a pre-executed Jupiter -notebook needs to be generated for -`notebooks/01_getting_started/`. After generating the notebooks, copy -`notebook.unexecuted.ipynb` to `notebook.ipynb`; execute the latter -file and save.) +To generate notebooks do `include("path/to/HelloJulia/src/generate_all.jl")`. For some tutorials, a notebook +may not be generated, because of some known issue. A warning will be issued and you'll +need to generate the relevant notebook by hand. + +For example, to generate an executed python notebook for `notebooks/01_first_steps/`, copy +`notebook.unexecuted.ipynb` to `notebook.ipynb`; execute the latter file and save. To generate notebooks for just one tutorial, `include` the file called `generate.jl` within the notebook's folder. diff --git a/FIRST_STEPS.md b/FIRST_STEPS.md index af58d61..40b8d98 100644 --- a/FIRST_STEPS.md +++ b/FIRST_STEPS.md @@ -1,7 +1,7 @@ # Installing Julia **Important** When following the following **four steps**, be sure the version -of Julia you install is **version 1.9.x**, where **x** is any integer. +of Julia you install is **version 1.10.x**, where **x** is any integer. While Julia can be run in the cloud (see e.g., [here](https://juliahub.com/ui/Home)) we recommend installing Julia on diff --git a/INSTALLATION.md b/INSTALLATION.md index b6313cf..3c0db8c 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -1,25 +1,20 @@ # Demos and Tutorials -For a quick static view of the demo and tutorial notebooks, click on a -link in the first column. +Quick, static views of the demo and tutorial notebooks: -To run a notebook without installing anything, click on the binder -link. These notebooks are ephemeral, and can be very slow to load, and -are therefore not recommended for in-depth study. Rather, complete -[Setup](#setup) and choose one of the options that follow. - - -Juptyer | binder ---------|--------- -[Mandelbrot set demo](notebooks/mandelbrot/notebook.ipynb) | [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ablaom/HelloJulia.jl/dev?labpath=notebooks%2Fmandelbrot%2Fnotebook.ipynb) -[Julia's secret sauce](notebooks/secret_sauce/notebook.ipynb) | [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ablaom/HelloJulia.jl/dev?labpath=notebooks%2Fsecret_sauce%2Fnotebook.ipynb) -[Package composability](notebooks/pkg_composability/notebook.ipynb) | [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ablaom/HelloJulia.jl/dev?labpath=notebooks%2Fpkg_composability%2Fnotebook.ipynb) -[01 - First_steps](notebooks/01_first_steps/notebook.unexecuted.ipynb) | [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ablaom/HelloJulia.jl/dev?labpath=notebooks%2F01_first_steps%2Fnotebook.unexecuted.ipynb) -[02 - DataFrames](notebooks/02_dataframes/notebook.ipynb) | [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ablaom/HelloJulia.jl/dev?labpath=notebooks%2F02_dataframes%2Fnotebook.ipynb) -[03 - Machine learning](notebooks/03_machine_learning/notebook.ipynb) | [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ablaom/HelloJulia.jl/dev?labpath=notebooks%2F03_machine_learning%2Fnotebook.ipynb) +|Notebook | +|:-------:| +|[Mandelbrot set demo](notebooks/mandelbrot/notebook.ipynb) | +[Julia's secret sauce](notebooks/secret_sauce/notebook.ipynb) | +[Package composability](notebooks/pkg_composability/notebook.ipynb) | +[01 - First_steps](notebooks/01_first_steps/notebook.unexecuted.ipynb) | +[02 - DataFrames](notebooks/02_dataframes/notebook.ipynb) | +[03 - Machine learning](notebooks/03_machine_learning/notebook.ipynb) | ## Setup +The following instructions only need to be executed successfully once: + - [Install a correct version of the Julia compiler](FIRST_STEPS.md). - **In a new Julia session** type the following at the `julia>` prompt: @@ -35,60 +30,41 @@ Pkg.build("Conda") Pkg.build("IJulia") ENV["JULIA_PKG_PRECOMPILE_AUTO"]=1 -using HelloJulia - +using Pkg +Pkg.test("HelloJulia") +exit() ``` -## Option 1: To run as Jupyter notebooks - -- Enter `go()` at the `julia>` prompt - -- In the browser window that should appear, navigate to the folder of -interest - -- Choose the file called `notebook.unexecuted.ipynb` (or - `notebook.ipynb` to see pre-executed version) +## Running the demos and tutorials +!!! Note -## Option 2: To run as Pluto notebooks + Running notebooks for the first time may involve delays due to + precompilation of newly installed packages. -- When running for the first time, enter (immediately after - [Setup](#setup)): +After starting a new Julia session, do this: ```julia -julia> setup() +julia> using Pkg; Pkg.activate(joinpath(Pkg.devdir(), "HelloJulia")) +julia> using HelloJulia ``` -ignoring any "ld: warning" you get. This will take several minutes but -speeds up using the notebooks. (It creates a Julia system image -tailored to the notebook content.) +Then: -- Quit Julia with `control-D` and restart. +### Option 1: To run as Pluto notebooks -- Run the following commands each time you want to run the notebooks: +- Enter `pluto()` at the `julia>` prompt. -```julia -using Pkg; Pkg.activate(joinpath(Pkg.devdir(), "HelloJulia")) -using HelloJulia -pluto() +### Option 2: To run as Jupyter notebooks -``` +- Enter `juptyer()` at the `julia>` prompt. -If you encounter problems with running `setup()` or `pluto()` you can try launching the notebooks directly (without creating a system image) by restarting Julia and trying: - -```julia -using Pkg; Pkg.activate(joinpath(Pkg.devdir(), "HelloJulia")) -Pkg.build("Conda") # only need to do this very first time -Pkg.build("IJulia") # only need to do this very first time -using HelloJulia -pluto_now() -``` - -The only difference here is that notebooks may take a while to load, at least the first -time they are launched. +- In the browser window that should appear, navigate to the folder of interest +- Choose the file called `notebook.unexecuted.ipynb` (or + `notebook.ipynb` to see pre-executed version) -## Option 3: To run as script in your editor +### Option 3: To run as script in your editor For more experienced users and instructors. diff --git a/Manifest.toml b/Manifest.toml index 9d9d664..0664ef6 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.0" +julia_version = "1.10.3" manifest_format = "2.0" -project_hash = "c5574f8e5f94c74105c169c2ee46065e1d9afc3d" +project_hash = "2edfe41f97de8e611b2e9ed77953e997d683e955" [[deps.ARFFFiles]] deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] @@ -12,50 +12,65 @@ version = "1.4.1" [[deps.AbstractFFTs]] deps = ["LinearAlgebra"] -git-tree-sha1 = "16b6dbc4cf7caee4e1e75c49485ec67b667098a0" +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.3.1" -weakdeps = ["ChainRulesCore"] +version = "1.5.0" +weakdeps = ["ChainRulesCore", "Test"] [deps.AbstractFFTs.extensions] AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" [[deps.AbstractTrees]] -git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.4" +version = "0.4.5" [[deps.Adapt]] deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "76289dc51920fdc6e0013c872ba9551d54961c24" +git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.6.2" +version = "4.0.4" weakdeps = ["StaticArrays"] [deps.Adapt.extensions] AdaptStaticArraysExt = "StaticArrays" +[[deps.AliasTables]] +deps = ["PtrArrays", "Random"] +git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" +uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" +version = "1.1.3" + [[deps.Animations]] deps = ["Colors"] git-tree-sha1 = "e81c509d2c8e49592413bfb0bb3b08150056c79d" uuid = "27a7e980-b3e6-11e9-2bcd-0b925532e340" version = "0.4.1" +[[deps.ArgCheck]] +git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" +uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" +version = "2.3.0" + [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" version = "1.1.1" [[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "c4d9efe93662757bca4cc24df50df5f75e659a2d" +deps = ["Adapt", "LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "133a240faec6e074e07c31ee75619c90544179cf" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.4.4" +version = "7.10.0" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceCUDSSExt = "CUDSS" + ArrayInterfaceChainRulesExt = "ChainRules" ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceReverseDiffExt = "ReverseDiff" ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" ArrayInterfaceTrackerExt = "Tracker" @@ -63,50 +78,78 @@ version = "7.4.4" BandedMatrices = "aae01518-5342-5314-be14-df237901396f" BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" -[[deps.ArrayInterfaceCore]] -deps = ["LinearAlgebra", "SnoopPrecompile", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "e5f08b5689b1aad068e01751889f2f615c7db36d" -uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2" -version = "0.1.29" - [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +[[deps.Atomix]] +deps = ["UnsafeAtomics"] +git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" +uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" +version = "0.1.0" + [[deps.Automa]] -deps = ["Printf", "ScanByte", "TranscodingStreams"] -git-tree-sha1 = "d50976f217489ce799e366d9561d56a98a30d7fe" +deps = ["PrecompileTools", "TranscodingStreams"] +git-tree-sha1 = "588e0d680ad1d7201d4c6a804dcb1cd9cba79fbb" uuid = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b" -version = "0.8.2" +version = "1.0.3" [[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.BangBang]] +deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] +git-tree-sha1 = "7aa7ad1682f3d5754e3491bb59b8103cae28e3a3" +uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" +version = "0.3.40" + + [deps.BangBang.extensions] + BangBangChainRulesCoreExt = "ChainRulesCore" + BangBangDataFramesExt = "DataFrames" + BangBangStaticArraysExt = "StaticArrays" + BangBangStructArraysExt = "StructArrays" + BangBangTypedTablesExt = "TypedTables" + + [deps.BangBang.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +[[deps.Baselet]] +git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" +uuid = "9718e550-a3fa-408a-8086-8db961cd8217" +version = "0.1.1" + [[deps.BetaML]] deps = ["AbstractTrees", "CategoricalArrays", "Combinatorics", "DelimitedFiles", "Distributions", "DocStringExtensions", "ForceImport", "JLD2", "LinearAlgebra", "LoopVectorization", "MLJModelInterface", "PDMats", "PrecompileTools", "Printf", "ProgressMeter", "Random", "Reexport", "StableRNGs", "StaticArrays", "Statistics", "StatsBase", "Test", "Zygote"] -git-tree-sha1 = "bca5bbed67662e6018215d6e46419e3bbeba45fd" +git-tree-sha1 = "c5dc6b1aa72c37e445a401d01eae97c040d994d4" uuid = "024491cd-cc6b-443e-8034-08ea7eb7db2b" -version = "0.10.1" +version = "0.12.0" [[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" +version = "0.1.8" [[deps.BitTwiddlingConvenienceFunctions]] deps = ["Static"] @@ -116,24 +159,30 @@ version = "0.1.5" [[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.CPUSummary]] -deps = ["CpuId", "IfElse", "Static"] -git-tree-sha1 = "2c144ddb46b552f72d7eafe7cc2f50746e41ea21" +deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] +git-tree-sha1 = "585a387a490f1c4bd88be67eea15b93da5e85db7" uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.2" +version = "0.2.5" [[deps.CRC32c]] uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" +[[deps.CRlibm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc" +uuid = "4e9b3aee-d8a1-5a3d-ad8b-7d824db253f0" +version = "1.0.1+0" + [[deps.Cairo]] deps = ["Cairo_jll", "Colors", "Glib_jll", "Graphics", "Libdl", "Pango_jll"] git-tree-sha1 = "d0b3f8b4ad16cb0a2988c6788646a5e6a17b6b1b" @@ -141,16 +190,16 @@ uuid = "159f3aea-2a34-519c-b102-8c37f9878175" version = "1.0.5" [[deps.CairoMakie]] -deps = ["Base64", "Cairo", "Colors", "FFTW", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools", "SHA"] -git-tree-sha1 = "9e7f01dd16e576ebbdf8b453086f9d0eff814a09" +deps = ["CRC32c", "Cairo", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"] +git-tree-sha1 = "a6c5225b318890e8a94c451cc8a4bfed8bdd0549" uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" -version = "0.10.5" +version = "0.12.1" [[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"] -git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "a2f1c8c668c8e3cb4cca4e57a8efdb09067bb3fd" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.16.1+1" +version = "1.18.0+2" [[deps.Calculus]] deps = ["LinearAlgebra"] @@ -178,9 +227,9 @@ version = "0.10.8" [[deps.CategoricalDistributions]] deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] -git-tree-sha1 = "da68989f027dcefa74d44a452c9e36af9730a70d" +git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" -version = "0.1.10" +version = "0.1.15" [deps.CategoricalDistributions.extensions] UnivariateFiniteDisplayExt = "UnicodePlots" @@ -189,16 +238,20 @@ version = "0.1.10" UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" [[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "Statistics", "StructArrays"] -git-tree-sha1 = "8bae903893aeeb429cf732cf1888490b93ecf265" +deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] +git-tree-sha1 = "291821c1251486504f6bae435227907d734e94d2" uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.49.0" +version = "1.66.0" [[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "e30f2f4e20f7f186dc36529910beaedc60cfa644" +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "575cd02e080939a33b6df6c5853d14924c08e35b" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.16.0" +version = "1.23.0" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" [[deps.CloseOpenIntervals]] deps = ["Static", "StaticArrayInterface"] @@ -208,9 +261,9 @@ version = "0.1.12" [[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"] @@ -220,27 +273,31 @@ version = "0.4.0" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "be6ab11021cd29f0344d5c4357b163af05a48cba" +git-tree-sha1 = "4b270d6465eb21ae89b732182c20dc165f8bf9f2" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.21.0" +version = "3.25.0" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" +version = "0.11.5" [[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] -git-tree-sha1 = "600cc5508d66b78aae350f7accdb58763ac18589" +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.9.10" +version = "0.10.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" [[deps.Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" +git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.10" +version = "0.12.11" [[deps.Combinatorics]] git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" @@ -254,10 +311,10 @@ uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" version = "0.3.0" [[deps.Compat]] -deps = ["UUIDs"] -git-tree-sha1 = "7a60c856b9fa189eb34f5f8a6f6b5529b7942957" +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.6.1" +version = "4.15.0" weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] @@ -266,7 +323,18 @@ weakdeps = ["Dates", "LinearAlgebra"] [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.2+0" +version = "1.1.1+0" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + + [deps.CompositionsBase.weakdeps] + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" [[deps.ComputationalResources]] git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" @@ -275,37 +343,43 @@ version = "0.3.2" [[deps.ConcurrentUtilities]] deps = ["Serialization", "Sockets"] -git-tree-sha1 = "96d823b94ba8d187a6d8f0826e731195a74b90e9" +git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.2.0" +version = "2.4.1" [[deps.Conda]] deps = ["Downloads", "JSON", "VersionParsing"] -git-tree-sha1 = "e32a90da027ca45d84678b826fffd3110bb3fc90" +git-tree-sha1 = "51cab8e982c5b598eea9c8ceaced4b58d9dd37c9" uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" -version = "1.8.0" +version = "1.10.0" [[deps.Configurations]] deps = ["ExproniconLite", "OrderedCollections", "TOML"] -git-tree-sha1 = "62a7c76dbad02fdfdaa53608104edf760938c4ca" +git-tree-sha1 = "4358750bb58a3caefd5f37a4a0c5bfdbbf075252" uuid = "5218b696-f38b-4ac9-8b61-a12ec717816d" -version = "0.17.4" +version = "0.17.6" [[deps.ConstructionBase]] deps = ["LinearAlgebra"] -git-tree-sha1 = "738fec4d684a9a6ee9598a8bfee305b26831f28c" +git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.2" +version = "1.5.5" weakdeps = ["IntervalSets", "StaticArrays"] [deps.ConstructionBase.extensions] ConstructionBaseIntervalSetsExt = "IntervalSets" ConstructionBaseStaticArraysExt = "StaticArrays" +[[deps.ContextVariablesX]] +deps = ["Compat", "Logging", "UUIDs"] +git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" +uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" +version = "0.1.3" + [[deps.Contour]] -git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" +git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.2" +version = "0.6.3" [[deps.CpuId]] deps = ["Markdown"] @@ -319,21 +393,21 @@ uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" version = "4.1.1" [[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.DataFrames]] -deps = ["Compat", "DataAPI", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SnoopPrecompile", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "aa51303df86f8626a962fccb878430cdb0a97eee" +deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.5.0" +version = "1.6.1" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" +git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.13" +version = "0.18.20" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -356,6 +430,17 @@ git-tree-sha1 = "c0dfa5a35710a193d83f03124356eef3386688fc" uuid = "3f0dd361-4fe0-5fc6-8523-80b14ec94d85" version = "1.1.0" +[[deps.DefineSingletons]] +git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" +uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" +version = "0.1.2" + +[[deps.DelaunayTriangulation]] +deps = ["EnumX", "ExactPredicates", "Random"] +git-tree-sha1 = "1755070db557ec2c37df2664c75600298b0c1cfc" +uuid = "927a84f5-c5f4-47a5-9785-b46e178433df" +version = "1.0.3" + [[deps.DelimitedFiles]] deps = ["Mmap"] git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" @@ -370,33 +455,40 @@ version = "1.1.0" [[deps.DiffRules]] deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "a4ad7ef19d2cdc2eff57abbbe68032b1cd0bd8f8" +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.13.0" +version = "1.15.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 = "b0a916504cf33a6f07a4b56c58451d1dc93a2ff5" +deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "22c595ca4146c07b16bcf9c8bea86f731f7109d2" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.91" +version = "0.25.108" [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.DocStringExtensions]] deps = ["LibGit2"] @@ -439,40 +531,55 @@ git-tree-sha1 = "714865b8d0ec66d90283acc737da9e534307f5e6" uuid = "d872a56f-244b-5cc9-b574-2017b5b909a8" version = "1.0.1" +[[deps.EnumX]] +git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" +uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" +version = "1.0.4" + +[[deps.ExactPredicates]] +deps = ["IntervalArithmetic", "Random", "StaticArrays"] +git-tree-sha1 = "b3f2ff58735b5f024c392fde763f29b057e4b025" +uuid = "429591f6-91af-11e9-00e2-59fbe8cec110" +version = "2.2.8" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.10" + [[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bad72f730e9e91c08d9427d5e8db95478a3c323d" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.4.8+0" +version = "2.6.2+0" + +[[deps.ExpressionExplorer]] +git-tree-sha1 = "0da78bef32ca71276337442389a3d1962a1ee0da" +uuid = "21656369-7473-754a-2065-74616d696c43" +version = "1.0.2" [[deps.ExproniconLite]] -deps = ["Pkg", "TOML"] -git-tree-sha1 = "c2eb763acf6e13e75595e0737a07a0bec0ce2147" +git-tree-sha1 = "6091a6fc0f16639f43d7f78fee225ba365712612" uuid = "55351af7-c7e9-48d6-89ff-24e801d99491" -version = "0.7.11" +version = "0.10.8" [[deps.Extents]] -git-tree-sha1 = "5e1e4c53fa39afe63a7d356e30452249365fba99" +git-tree-sha1 = "2140cd04483da90b2da7f99b2add0750504fc39c" uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" -version = "0.1.1" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" +version = "0.1.2" [[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 = "ab3f7e1819dba9434a3a5126510c8fda3a4e7000" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.2+2" +version = "6.1.1+0" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "f9818144ce7c8c41edf5c4c179c684d92aa4d9fe" +git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.6.0" +version = "1.8.0" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -480,11 +587,23 @@ git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" version = "3.3.10+0" +[[deps.FLoops]] +deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] +git-tree-sha1 = "ffb97765602e3cbe59a0589d237bf07f245a8576" +uuid = "cc61a311-1640-44b5-9fba-1b764f453329" +version = "0.2.1" + +[[deps.FLoopsBase]] +deps = ["ContextVariablesX"] +git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" +uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" +version = "0.1.1" + [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "299dc33549f68299137e51e6d49a13b5b1da9673" +git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.1" +version = "1.16.3" [[deps.FilePaths]] deps = ["FilePathsBase", "MacroTools", "Reexport", "Requires"] @@ -494,30 +613,36 @@ version = "0.8.3" [[deps.FilePathsBase]] deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "e27c4ebe80e8699540f2d6c805cc12203b614f12" +git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.20" +version = "0.9.21" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" [[deps.FillArrays]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "fc86b4fd3eff76c3ce4f5e96e2fdfa6282722885" +deps = ["LinearAlgebra"] +git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.0.0" +version = "1.11.0" +weakdeps = ["PDMats", "SparseArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" [[deps.FixedPointNumbers]] deps = ["Statistics"] -git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.4" +version = "0.8.5" [[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] +git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.93+0" +version = "2.13.96+0" [[deps.ForceImport]] deps = ["Test"] @@ -525,17 +650,16 @@ git-tree-sha1 = "7ac07d5194360af910146abd33af89bb69541194" uuid = "9dda63f9-cce7-5873-89fa-eccbb2fffcde" version = "0.0.3" -[[deps.Formatting]] -deps = ["Printf"] -git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.2" +[[deps.Format]] +git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" +uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" +version = "1.3.7" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "00e252f4d706b3d55a8863432e742bf5717b498d" +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.35" +version = "0.10.36" weakdeps = ["StaticArrays"] [deps.ForwardDiff.extensions] @@ -543,27 +667,27 @@ weakdeps = ["StaticArrays"] [[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 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.10.4+0" +version = "2.13.2+0" [[deps.FreeTypeAbstraction]] deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics"] -git-tree-sha1 = "38a92e40157100e796690421e34a11c107205c86" +git-tree-sha1 = "2493cdfd0740015955a8e46de4ef28f49460d8bc" uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" -version = "0.10.0" +version = "0.10.3" [[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.10+0" +version = "1.0.14+0" [[deps.Future]] deps = ["Random"] @@ -571,33 +695,33 @@ uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" [[deps.FuzzyCompletions]] deps = ["REPL"] -git-tree-sha1 = "e16dd964b4dfaebcded16b2af32f05e235b354be" +git-tree-sha1 = "40ec72c57559a4473961bbcd12c96bcd4c2aaab4" uuid = "fb4132e2-a121-4a70-b8a1-d5b831dcdcc2" -version = "0.5.1" +version = "0.5.4" [[deps.GPUArrays]] deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "9ade6983c3dbbd492cf5729f865fe030d1541463" +git-tree-sha1 = "38cb19b8a3e600e509dc36a6396ac74266d108c1" uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "8.6.6" +version = "10.1.1" [[deps.GPUArraysCore]] deps = ["Adapt"] -git-tree-sha1 = "1cd7f0af1aa58abc02ea1d872953a97359cb87fa" +git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.4" +version = "0.1.6" [[deps.GeoInterface]] deps = ["Extents"] -git-tree-sha1 = "bb198ff907228523f3dee1070ceee63b9359b6ab" +git-tree-sha1 = "801aef8228f7f04972e596b09d4dba481807c913" uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" -version = "1.3.1" +version = "1.3.4" [[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 = "b62f2b2d76cee0d61a2ef2b3118cd2a3215d3134" uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.4.7" +version = "0.4.11" [[deps.Gettext_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] @@ -605,23 +729,11 @@ git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" version = "0.21.0+0" -[[deps.Git]] -deps = ["Git_jll"] -git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" -uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" -version = "1.3.0" - -[[deps.Git_jll]] -deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "d8be4aab0f4e043cc40984e9097417307cce4c03" -uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.36.1+2" - [[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 = "7c82e6a6cd34e9d935e9aa4051b66c6ff3af59ba" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.74.0+2" +version = "2.80.2+0" [[deps.Graphics]] deps = ["Colors", "LinearAlgebra", "NaNMath"] @@ -637,9 +749,9 @@ version = "1.3.14+0" [[deps.GridLayoutBase]] deps = ["GeometryBasics", "InteractiveUtils", "Observables"] -git-tree-sha1 = "678d136003ed5bceaab05cf64519e3f956ffa4ba" +git-tree-sha1 = "fc713f007cff99ff9e50accba6373624ddd33588" uuid = "3955a311-db13-416c-9275-1d80ed98e5e9" -version = "0.9.1" +version = "0.11.0" [[deps.Grisu]] git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" @@ -647,10 +759,10 @@ uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" version = "1.0.2" [[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "41f7dfb2b20e7e8bf64f6b6fae98f4d2df027b06" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.4" +version = "1.10.8" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] @@ -660,33 +772,33 @@ version = "2.8.1+1" [[deps.HostCPUFeatures]] deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] -git-tree-sha1 = "734fd90dd2f920a2f1921d5388dcebe805b262dc" +git-tree-sha1 = "eb8fed28f4994600e29beef49744639d985a04b2" uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" -version = "0.1.14" +version = "0.1.16" [[deps.HypergeometricFunctions]] deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "84204eae2dd237500835990bcade263e27674a93" +git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.16" +version = "0.3.23" [[deps.HypertextLiteral]] deps = ["Tricks"] -git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -version = "0.9.4" +version = "0.9.5" [[deps.IJulia]] deps = ["Base64", "Conda", "Dates", "InteractiveUtils", "JSON", "Libdl", "Logging", "Markdown", "MbedTLS", "Pkg", "Printf", "REPL", "Random", "SoftGlobalScope", "Test", "UUIDs", "ZMQ"] -git-tree-sha1 = "59e19713542dd9dd02f31d59edbada69530d6a14" +git-tree-sha1 = "47ac8cc196b81001a711f4b2c12c97372338f00c" uuid = "7073ff75-c697-5162-941a-fcdaad2a7d2a" -version = "1.24.0" +version = "1.24.2" [[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools", "Test"] -git-tree-sha1 = "eac00994ce3229a464c2847e956d77a2c64ad3a5" +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.10" +version = "0.4.14" [[deps.IfElse]] git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" @@ -695,39 +807,39 @@ version = "0.1.1" [[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"] -git-tree-sha1 = "b51bb8cae22c66d0f6357e3bcb6363145ef20835" +git-tree-sha1 = "eb49b82c172811fd2c86759fa0553a2221feb909" uuid = "c817782e-172a-44cc-b673-b171935fbb9e" -version = "0.1.5" +version = "0.1.7" [[deps.ImageCore]] -deps = ["AbstractFFTs", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Graphics", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "Reexport"] -git-tree-sha1 = "acf614720ef026d38400b3817614c45882d75500" +deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] +git-tree-sha1 = "b2a7eaa169c13f5bcae8131a83bc30eff8f71be0" uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.9.4" +version = "0.10.2" [[deps.ImageIO]] deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs"] -git-tree-sha1 = "342f789fd041a55166764c351da1710db97ce0e0" +git-tree-sha1 = "437abb322a41d527c197fa800455f79d414f0a3c" uuid = "82e4d734-157c-48bb-816b-45c225c6df19" -version = "0.6.6" +version = "0.6.8" [[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"] -git-tree-sha1 = "3d09a9f60edf77f8a4d99f9e015e8fbf9989605d" +git-tree-sha1 = "0936ba688c6d201805a83da835b55c61a180db52" uuid = "905a6f67-0a94-5f89-b386-d35d92009cd1" -version = "3.1.7+0" +version = "3.1.11+0" [[deps.IndirectArrays]] git-tree-sha1 = "012e604e1c7458645cb8b436f8fba789a51b257f" @@ -735,9 +847,14 @@ 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.InitialValues]] +git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" +uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" +version = "0.3.1" [[deps.InlineStrings]] deps = ["Parsers"] @@ -746,10 +863,10 @@ uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" version = "1.4.0" [[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0cb9352ef2e01574eeebdb102948a58740dcaf83" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "be50fe8df3acbffa0274a744f1a99d29c45a57f4" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2023.1.0+0" +version = "2024.1.0+0" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -757,15 +874,36 @@ 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" +weakdeps = ["Unitful"] + + [deps.Interpolations.extensions] + InterpolationsUnitfulExt = "Unitful" + +[[deps.IntervalArithmetic]] +deps = ["CRlibm_jll", "MacroTools", "RoundingEmulator"] +git-tree-sha1 = "e75c4e33afbc631aa62671ebba12863321c1d46e" +uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" +version = "0.22.12" +weakdeps = ["DiffRules", "ForwardDiff", "RecipesBase"] + + [deps.IntervalArithmetic.extensions] + IntervalArithmeticDiffRulesExt = "DiffRules" + IntervalArithmeticForwardDiffExt = "ForwardDiff" + IntervalArithmeticRecipesBaseExt = "RecipesBase" [[deps.IntervalSets]] -deps = ["Dates", "Random", "Statistics"] -git-tree-sha1 = "16c0cc91853084cb5f58a78bd209513900206ce6" +git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.4" +version = "0.7.10" +weakdeps = ["Random", "RecipesBase", "Statistics"] + + [deps.IntervalSets.extensions] + IntervalSetsRandomExt = "Random" + IntervalSetsRecipesBaseExt = "RecipesBase" + IntervalSetsStatisticsExt = "Statistics" [[deps.InvertedIndices]] git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" @@ -784,15 +922,15 @@ 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.IterationControl]] deps = ["EarlyStopping", "InteractiveUtils"] -git-tree-sha1 = "d7df9a6fdd82a8cfdfe93a94fcce35515be634da" +git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" -version = "0.5.3" +version = "0.5.4" [[deps.IteratorInterfaceExtensions]] git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" @@ -800,16 +938,16 @@ uuid = "82899510-4779-5014-852e-03e436cf321d" version = "1.0.0" [[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] -git-tree-sha1 = "42c17b18ced77ff0be65957a591d34f4ed57c631" +deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Reexport", "Requires", "TranscodingStreams", "UUIDs", "Unicode"] +git-tree-sha1 = "bdbe8222d2f5703ad6a7019277d149ec6d78c301" uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.31" +version = "0.4.48" [[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"] @@ -819,67 +957,97 @@ version = "0.21.4" [[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 = "c84a835e1a09b289ffcd2271bf2a337bbdda6637" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.91+0" +version = "3.0.3+0" + +[[deps.JuliaVariables]] +deps = ["MLStyle", "NameResolution"] +git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" +uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" +version = "0.2.4" + +[[deps.KernelAbstractions]] +deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] +git-tree-sha1 = "db02395e4c374030c53dc28f3c1d33dec35f7272" +uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" +version = "0.9.19" + + [deps.KernelAbstractions.extensions] + EnzymeExt = "EnzymeCore" + + [deps.KernelAbstractions.weakdeps] + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" [[deps.KernelDensity]] deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] -git-tree-sha1 = "90442c50e202a5cdf21a7899c66b240fdef14035" +git-tree-sha1 = "7d703202e65efa1369de1279c162b915e245eed1" uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" -version = "0.6.7" +version = "0.6.9" [[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.1+0" +version = "3.100.2+0" [[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Printf", "Unicode"] -git-tree-sha1 = "26a31cdd9f1f4ea74f649a7bf249703c687a953d" +deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] +git-tree-sha1 = "065c36f95709dd4a676dc6839a35d6fa6f192f24" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "5.1.0" +version = "7.1.0" + + [deps.LLVM.extensions] + BFloat16sExt = "BFloat16s" + + [deps.LLVM.weakdeps] + BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" [[deps.LLVMExtra_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "09b7505cc0b1cee87e5d4a26eea61d2e1b0dcd35" +git-tree-sha1 = "88b916503aac4fb7f701bb625cd84ca5dd1677bc" uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.21+0" +version = "0.0.29+0" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "15.0.7+0" [[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.1+0" +version = "2.10.2+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.LatinHypercubeSampling]] deps = ["Random", "StableRNGs", "StatsBase", "Test"] -git-tree-sha1 = "42938ab65e9ed3c3029a8d2c58382ca75bdab243" +git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" -version = "1.8.0" +version = "1.9.0" [[deps.LayoutPointers]] deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "88b8f66b604da079a627b6fb2860d3704a6729a1" +git-tree-sha1 = "62edfee3211981241b57ff1cedf4d74d79519277" uuid = "10f19ff3-798f-405d-979b-55457f8fc047" -version = "0.1.14" +version = "0.1.15" [[deps.LazilyInitializedFields]] -git-tree-sha1 = "410fe4739a4b092f2ffe36fcb0dcc3ab12648ce1" +git-tree-sha1 = "8f7f3cabab0fd1800699663533b6d5cb3fc0e612" uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf" -version = "1.2.1" +version = "1.2.2" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] @@ -890,24 +1058,35 @@ git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" uuid = "8cdb02fc-e678-4876-92c5-9defec4f444e" version = "0.3.1" +[[deps.LearnAPI]] +deps = ["InteractiveUtils", "Statistics"] +git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" +uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" +version = "0.1.0" + [[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" @@ -919,34 +1098,34 @@ uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" version = "3.2.2+1" [[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] -git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] +git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673" uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.7+0" +version = "1.8.11+0" [[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "fbb1f2bef882392312feb1ede3615ddc1e9b99ed" uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.42.0+0" +version = "1.49.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"] -git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.35.0+0" +version = "2.40.1+0" [[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.36.0+0" +version = "2.40.1+0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -954,9 +1133,9 @@ uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "0a1b7c2863e44523180fdb3146534e265a91870b" +git-tree-sha1 = "18144f3e9cbe9b15b070288eef858f71b291ce37" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.23" +version = "0.3.27" [deps.LogExpFunctions.extensions] LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" @@ -973,97 +1152,130 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] -git-tree-sha1 = "cedb76b37bc5a6c702ade66be44f831fa23c681e" +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.0" +version = "1.0.3" [[deps.LoopVectorization]] -deps = ["ArrayInterface", "ArrayInterfaceCore", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "3bb62b5003bc7d2d49f26663484267dc49fa1bf5" +deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] +git-tree-sha1 = "8f6786d8b2b3248d79db3ad359ce95382d5a6df8" uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.159" +version = "0.12.170" weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] [deps.LoopVectorization.extensions] ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] SpecialFunctionsExt = "SpecialFunctions" -[[deps.LossFunctions]] -deps = ["CategoricalArrays", "Markdown", "Statistics"] -git-tree-sha1 = "44a7bfeb7b5eb9386a62b9cccc6e21f406c15bea" -uuid = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" -version = "0.10.0" - [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" version = "0.1.4" [[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "2ce8695e1e699b68702c03402672a69f54b8aca9" +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "80b2833b56d466b3858d565adcd16a4a05f2089b" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2022.2.0+0" +version = "2024.1.0+0" + +[[deps.MLFlowClient]] +deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] +git-tree-sha1 = "9abb12b62debc27261c008daa13627255bf79967" +uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" +version = "0.5.1" [[deps.MLJ]] -deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "LinearAlgebra", "MLJBase", "MLJEnsembles", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "ScientificTypes", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "80149328ca780b522b5a95e402450d10df7904f2" +deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "LinearAlgebra", "MLJBalancing", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] +git-tree-sha1 = "c6f89d9fe1fb8872d72424b060a94f00f569b2dd" uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" -version = "0.19.1" +version = "0.20.4" + +[[deps.MLJBalancing]] +deps = ["MLJBase", "MLJModelInterface", "MLUtils", "OrderedCollections", "Random", "StatsBase"] +git-tree-sha1 = "f02e28f9f3c54a138db12a97a5d823e5e572c2d6" +uuid = "45f359ea-796d-4f51-95a5-deb1a414c586" +version = "0.1.4" [[deps.MLJBase]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LinearAlgebra", "LossFunctions", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "ScientificTypes", "Serialization", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "4cc167b6c0a3ab25d7050e4ac38fe119e97cd1ab" +deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] +git-tree-sha1 = "aba2ffd56a9a97027b4102055dd9f909a6e35d12" uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" -version = "0.21.11" +version = "1.3.0" +weakdeps = ["StatisticalMeasures"] + + [deps.MLJBase.extensions] + DefaultMeasuresExt = "StatisticalMeasures" [[deps.MLJEnsembles]] -deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJBase", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatsBase"] -git-tree-sha1 = "95b306ef8108067d26dfde9ff3457d59911cc0d6" +deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] +git-tree-sha1 = "d3dd87194ec96892bb243b65225a462c7ab16e66" uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" -version = "0.3.3" +version = "0.4.2" + +[[deps.MLJFlow]] +deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] +git-tree-sha1 = "a3a4502e187db2f599b82415bc0b18fc0e877ef4" +uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" +version = "0.4.3" [[deps.MLJIteration]] deps = ["IterationControl", "MLJBase", "Random", "Serialization"] -git-tree-sha1 = "be6d5c71ab499a59e82d65e00a89ceba8732fcd5" +git-tree-sha1 = "1e909ee09417ebd18559c4d9c15febff887192df" uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" -version = "0.5.1" +version = "0.6.1" [[deps.MLJModelInterface]] deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "c8b7e632d6754a5e36c0d94a4b466a5ba3a30128" +git-tree-sha1 = "d2a45e1b5998ba3fdfb6cfe0c81096d4c7fb40e7" uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.8.0" +version = "1.9.6" [[deps.MLJModels]] deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "21acf47dc53ccc3d68e38ac7629756cd09b599f5" +git-tree-sha1 = "410da88e0e6ece5467293d2c76b51b7c6df7d072" uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" -version = "0.16.6" +version = "0.16.17" [[deps.MLJTuning]] -deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase"] -git-tree-sha1 = "02688098bd77827b64ed8ad747c14f715f98cfc4" +deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] +git-tree-sha1 = "efb9ec087ab9589afad0002e69fdd9cd38ef1643" uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" -version = "0.7.4" +version = "0.8.6" + +[[deps.MLStyle]] +git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" +uuid = "d8e11817-5142-5d16-987a-aa16d5891078" +version = "0.4.17" + +[[deps.MLUtils]] +deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] +git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" +uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" +version = "0.4.4" [[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", "Downloads", "FFMPEG", "FileIO", "FixedPointNumbers", "Formatting", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageIO", "InteractiveUtils", "IntervalSets", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "Match", "MathTeXEngine", "MiniQhull", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Setfield", "Showoff", "SignedDistanceFields", "SparseArrays", "StableHashTraits", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun"] -git-tree-sha1 = "3a9ca622a78dcbab3a034df35d1acd3ca7ad487d" +deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageIO", "InteractiveUtils", "IntervalSets", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] +git-tree-sha1 = "99af67efccbf649e63efd4d3103a841c5c32a796" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.19.5" +version = "0.21.1" [[deps.MakieCore]] -deps = ["Observables"] -git-tree-sha1 = "9926529455a331ed73c19ff06d16906737a876ed" +deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"] +git-tree-sha1 = "07ac3a4c4c1f8821fda63e21601686e6a4342ec0" uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" -version = "0.6.3" +version = "0.8.1" + +[[deps.Malt]] +deps = ["Distributed", "Logging", "RelocatableFolders", "Serialization", "Sockets"] +git-tree-sha1 = "18cf4151e390fce29ca846b92b06baf9bc6e002e" +uuid = "36869731-bdee-424d-aa32-cab38c994e3b" +version = "1.1.1" [[deps.ManualMemory]] git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" @@ -1071,53 +1283,62 @@ uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" version = "0.1.8" [[deps.MappedArrays]] -git-tree-sha1 = "e8b359ef06ec72e8c030463fe02efe5527ee5142" +git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" -version = "0.4.1" +version = "0.4.2" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" -[[deps.Match]] -git-tree-sha1 = "1d9bc5c1a6e7ee24effb93f175c9342f9154d97f" -uuid = "7eb4fadd-790c-5f42-8a69-bfa0b872bfbf" -version = "1.2.0" - [[deps.MathTeXEngine]] -deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "Test", "UnicodeFun"] -git-tree-sha1 = "8f52dbaa1351ce4cb847d95568cb29e62a307d93" +deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "UnicodeFun"] +git-tree-sha1 = "1865d0b8a2d91477c8b16b49152a32764c7b1f5f" uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" -version = "0.5.6" +version = "0.6.0" [[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.Measurements]] -deps = ["Calculus", "LinearAlgebra", "Printf", "RecipesBase", "Requires"] -git-tree-sha1 = "51d946d38d62709d6a2d37ea9bcc30c80c686801" +deps = ["Calculus", "LinearAlgebra", "Printf", "Requires"] +git-tree-sha1 = "bdcde8ec04ca84aef5b124a17684bf3b302de00e" uuid = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" -version = "2.9.0" +version = "2.11.0" + + [deps.Measurements.extensions] + MeasurementsBaseTypeExt = "BaseType" + MeasurementsJunoExt = "Juno" + MeasurementsRecipesBaseExt = "RecipesBase" + MeasurementsSpecialFunctionsExt = "SpecialFunctions" + MeasurementsUnitfulExt = "Unitful" + + [deps.Measurements.weakdeps] + BaseType = "7fbed51b-1ef5-4d67-9085-a4a9b26f478c" + Juno = "e5e0dc1b-0480-54bc-9374-aad01c23163d" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" -[[deps.MiniQhull]] -deps = ["QhullMiniWrapper_jll"] -git-tree-sha1 = "9dc837d180ee49eeb7c8b77bb1c860452634b0d1" -uuid = "978d7f02-9e05-4691-894f-ae31a51d76ca" -version = "0.4.0" +[[deps.MicroCollections]] +deps = ["BangBang", "InitialValues", "Setfield"] +git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" +uuid = "128add7d-3638-4c79-886c-908ea0c25c34" +version = "0.1.4" [[deps.Missings]] deps = ["DataAPI"] -git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.1.0" +version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" @@ -1130,13 +1351,31 @@ 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.NNlib]] +deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] +git-tree-sha1 = "3d4617f943afe6410206a5294a95948c8d1b35bd" +uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" +version = "0.9.17" + + [deps.NNlib.extensions] + NNlibAMDGPUExt = "AMDGPU" + NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] + NNlibCUDAExt = "CUDA" + NNlibEnzymeCoreExt = "EnzymeCore" + + [deps.NNlib.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" [[deps.NaNMath]] deps = ["OpenLibm_jll"] @@ -1144,26 +1383,35 @@ git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" version = "1.0.2" +[[deps.NameResolution]] +deps = ["PrettyPrint"] +git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" +uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" +version = "0.1.5" + [[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.OffsetArrays]] -deps = ["Adapt"] -git-tree-sha1 = "82d7c9e310fe55aa54996e6f7f94674e2a38fcb4" +git-tree-sha1 = "e64b4f5ea6b7389f6f046d13d4896a8f9c1ba71e" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.9" +version = "1.14.0" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" [[deps.Ogg_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1174,7 +1422,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+4" [[deps.OpenEXR]] deps = ["Colors", "FileIO", "OpenEXR_jll"] @@ -1184,14 +1432,14 @@ version = "0.3.2" [[deps.OpenEXR_jll]] deps = ["Artifacts", "Imath_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "a4ca623df1ae99d09bc9868b008262d0c0ac1e4f" +git-tree-sha1 = "8292dd5c8a38257111ada2174000a33745b06d4e" uuid = "18a262bb-aa17-5467-a713-aee519bc75cb" -version = "3.1.4+0" +version = "3.2.4+0" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" +version = "0.8.1+2" [[deps.OpenML]] deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] @@ -1201,15 +1449,15 @@ version = "0.3.1" [[deps.OpenSSL]] deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.1" +version = "1.4.3" [[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9ff31d101d987eb9d66bd8b176ac7c277beccd09" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "3da7367955dcc5c54c1ba4d402ccdc09a1a3e046" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.20+0" +version = "3.0.13+1" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1224,32 +1472,26 @@ 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.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" - -[[deps.PackageCompiler]] -deps = ["Artifacts", "LazyArtifacts", "Libdl", "Pkg", "Printf", "RelocatableFolders", "TOML", "UUIDs"] -git-tree-sha1 = "7caa85906781a8fa5b1d13ad0dd858dca31b07f0" -uuid = "9b87118b-4619-50d2-8e1e-99f35a4d4d9d" -version = "2.1.5" +version = "0.4.3" [[deps.Packing]] deps = ["GeometryBasics"] @@ -1264,10 +1506,10 @@ uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" version = "0.5.12" [[deps.Pango_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "84a314e3926ba9ec66ac097e3635e270986b0f10" +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cb5a2ab6763464ae0f19c86c56c63d4a2b0f5bda" uuid = "36c8627f-9965-5494-a995-c6b170f724f3" -version = "1.50.9+0" +version = "1.52.2+0" [[deps.Parameters]] deps = ["OrderedCollections", "UnPack"] @@ -1277,20 +1519,20 @@ version = "0.12.3" [[deps.Parsers]] deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "7302075e5e06da7d000d9bfa055013e3e85578ca" +git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.5.9" +version = "2.8.1" [[deps.Pixman_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "b4f5d02549a10e20780a24fce72bea96b6329e29" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b" uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.40.1+0" +version = "0.43.4+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.0" +version = "1.10.0" [[deps.PkgOnlineHelp]] deps = ["DefaultApplication", "Pkg", "Scratch", "TOML"] @@ -1300,21 +1542,27 @@ version = "0.2.3" [[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.PlotUtils]] deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227" +git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5" uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.3.5" +version = "1.4.1" [[deps.Pluto]] -deps = ["Base64", "Configurations", "Dates", "Distributed", "FileWatching", "FuzzyCompletions", "HTTP", "HypertextLiteral", "InteractiveUtils", "Logging", "LoggingExtras", "MIMEs", "Markdown", "MsgPack", "Pkg", "PrecompileSignatures", "REPL", "RegistryInstances", "RelocatableFolders", "SnoopPrecompile", "Sockets", "TOML", "Tables", "URIs", "UUIDs"] -git-tree-sha1 = "c3127195e4d10d9de5aa7364b5924ae062dcad35" +deps = ["Base64", "Configurations", "Dates", "Downloads", "ExpressionExplorer", "FileWatching", "FuzzyCompletions", "HTTP", "HypertextLiteral", "InteractiveUtils", "Logging", "LoggingExtras", "MIMEs", "Malt", "Markdown", "MsgPack", "Pkg", "PlutoDependencyExplorer", "PrecompileSignatures", "PrecompileTools", "REPL", "RegistryInstances", "RelocatableFolders", "Scratch", "Sockets", "TOML", "Tables", "URIs", "UUIDs"] +git-tree-sha1 = "7074b3a8339fadaf8524a9252ae7565b85f648f1" uuid = "c3e4b0f8-55cb-11ea-2926-15256bba5781" -version = "0.19.25" +version = "0.19.42" + +[[deps.PlutoDependencyExplorer]] +deps = ["ExpressionExplorer", "InteractiveUtils", "Markdown"] +git-tree-sha1 = "4bc5284f77d731196d3e97f23abb732ad6f2a6e4" +uuid = "72656b73-756c-7461-726b-72656b6b696b" +version = "1.0.4" [[deps.PolyesterWeave]] deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] @@ -1329,15 +1577,9 @@ version = "0.1.2" [[deps.PooledArrays]] deps = ["DataAPI", "Future"] -git-tree-sha1 = "a6062fe4063cdafe78f4a0a81cfffb89721b30e7" +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.2" - -[[deps.PrecompilePlutoCourse]] -deps = ["Distributed", "Git", "PackageCompiler", "Pkg", "Pluto"] -git-tree-sha1 = "aa44d9a9cbf1642a677ae1aeef0e693e40a8edd6" -uuid = "031ef55e-ae57-4a95-aa50-04a4c1cc4953" -version = "0.2.4" +version = "1.4.3" [[deps.PrecompileSignatures]] git-tree-sha1 = "18ef344185f25ee9d51d80e179f8dad33dc48eb1" @@ -1346,26 +1588,31 @@ version = "3.0.3" [[deps.PrecompileTools]] deps = ["Preferences"] -git-tree-sha1 = "259e206946c293698122f63e2b513a7c99a244e8" +git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.1.1" +version = "1.2.1" [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" +git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" +version = "1.4.3" + +[[deps.PrettyPrint]] +git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" +uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" +version = "0.2.0" [[deps.PrettyPrinting]] -git-tree-sha1 = "22a601b04a154ca38867b991d5017469dc75f2db" +git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" -version = "0.4.1" +version = "0.4.2" [[deps.PrettyTables]] -deps = ["Crayons", "Formatting", "LaTeXStrings", "Markdown", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "213579618ec1f42dea7dd637a42785a608b1ea9c" +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "88b895d13d53b5577fd53379d913b9ab9ac82660" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.2.4" +version = "2.3.1" [[deps.Printf]] deps = ["Unicode"] @@ -1373,9 +1620,14 @@ uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" [[deps.ProgressMeter]] deps = ["Distributed", "Printf"] -git-tree-sha1 = "d7a7aef8f8f2d537104f170139553b14dfe39fe9" +git-tree-sha1 = "763a8ceb07833dd51bb9e3bbca372de32c0605ad" uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.7.2" +version = "1.10.0" + +[[deps.PtrArrays]] +git-tree-sha1 = "077664975d750757f30e739c870fbbdc01db7913" +uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" +version = "1.1.0" [[deps.QOI]] deps = ["ColorTypes", "FileIO", "FixedPointNumbers"] @@ -1383,30 +1635,18 @@ git-tree-sha1 = "18e8f4d1426e965c7b532ddd260599e1510d26ce" uuid = "4b34888f-f399-49d4-9bb3-47ed5cae4e65" version = "1.0.0" -[[deps.QhullMiniWrapper_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Qhull_jll"] -git-tree-sha1 = "607cf73c03f8a9f83b36db0b86a3a9c14179621f" -uuid = "460c41e3-6112-5d7f-b78c-b6823adb3f2d" -version = "1.0.0+1" - -[[deps.Qhull_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "be2449911f4d6cfddacdf7efc895eceda3eee5c1" -uuid = "784f63db-0788-585a-bace-daefebcd302b" -version = "8.0.1003+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.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]] @@ -1416,9 +1656,9 @@ version = "0.3.2" [[deps.Ratios]] deps = ["Requires"] -git-tree-sha1 = "6d7bb727e76147ba18eed998700998e17b8e4911" +git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" -version = "0.4.4" +version = "0.4.5" weakdeps = ["FixedPointNumbers"] [deps.Ratios.extensions] @@ -1449,9 +1689,9 @@ version = "0.1.0" [[deps.RelocatableFolders]] deps = ["SHA", "Scratch"] -git-tree-sha1 = "90bc7a7c96410424509e4263e277e43250c05691" +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.0" +version = "1.0.1" [[deps.Requires]] deps = ["UUIDs"] @@ -1466,10 +1706,15 @@ uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" version = "0.7.1" [[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.0+0" +version = "0.4.2+0" + +[[deps.RoundingEmulator]] +git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" +uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" +version = "0.2.1" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -1477,9 +1722,9 @@ version = "0.7.0" [[deps.SIMD]] deps = ["PrecompileTools"] -git-tree-sha1 = "0e270732477b9e551d884e6b07e23bb2ec947790" +git-tree-sha1 = "2803cab51702db743f3fda07dd1745aadfbf43bd" uuid = "fdea26ae-647d-5447-a871-4b548cad5224" -version = "3.4.5" +version = "3.5.0" [[deps.SIMDTypes]] git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" @@ -1488,15 +1733,9 @@ version = "0.1.0" [[deps.SLEEFPirates]] deps = ["IfElse", "Static", "VectorizationBase"] -git-tree-sha1 = "cda0aece8080e992f6370491b08ef3909d1c04e7" +git-tree-sha1 = "3aac6d68c5e57449f5b9b865c9ba50ac2970c4cf" uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" -version = "0.6.38" - -[[deps.ScanByte]] -deps = ["Libdl", "SIMD"] -git-tree-sha1 = "2436b15f376005e8790e318329560dcc67188e84" -uuid = "7b38b023-a4d7-4c5e-8d43-3f3097f304eb" -version = "0.3.3" +version = "0.6.42" [[deps.ScientificTypes]] deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] @@ -1511,15 +1750,15 @@ version = "3.0.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.SentinelArrays]] deps = ["Dates", "Random"] -git-tree-sha1 = "77d3c4726515dca71f6d80fbb5e251088defe305" +git-tree-sha1 = "90b4f68892337554d31cdcdbe19e48989f26c7e6" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.3.18" +version = "1.4.3" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -1530,10 +1769,21 @@ git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" version = "1.1.1" +[[deps.ShaderAbstractions]] +deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays", "StructArrays", "Tables"] +git-tree-sha1 = "79123bc60c5507f035e6d1d9e563bb2971954ec8" +uuid = "65257c39-d410-5151-9873-9b3e5be5013e" +version = "0.4.1" + [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +[[deps.ShowCases]] +git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" +uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" +version = "0.1.0" + [[deps.Showoff]] deps = ["Dates", "Grisu"] git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" @@ -1559,15 +1809,9 @@ 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" - -[[deps.SnoopPrecompile]] -deps = ["Preferences"] -git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" -uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" -version = "1.0.3" +version = "0.1.3" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" @@ -1580,35 +1824,42 @@ version = "1.1.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] -git-tree-sha1 = "a4ada03f999bd01b3a25dcaa30b2d929fe537e00" +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.0" +version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.10.0" + +[[deps.SparseInverseSubset]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" +uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" +version = "0.1.2" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "ef28127915f4229c971eb43f3fc075dd3fe91880" +git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.2.0" +version = "2.4.0" weakdeps = ["ChainRulesCore"] [deps.SpecialFunctions.extensions] SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" -[[deps.StableHashTraits]] -deps = ["CRC32c", "Compat", "Dates", "SHA", "Tables", "TupleTools", "UUIDs"] -git-tree-sha1 = "0b8b801b8f03a329a4e86b44c5e8a7d7f4fe10a3" -uuid = "c5dd0088-6c3f-4803-b00e-f31a60c170fa" -version = "0.3.1" +[[deps.SplittablesBase]] +deps = ["Setfield", "Test"] +git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" +uuid = "171d559e-b47b-412a-8079-5efa626c420e" +version = "0.1.15" [[deps.StableRNGs]] -deps = ["Random", "Test"] -git-tree-sha1 = "3be7d49667040add7ee151fefaf1f8c04c8c8276" +deps = ["Random"] +git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" -version = "1.0.0" +version = "1.0.2" [[deps.StackViews]] deps = ["OffsetArrays"] @@ -1618,15 +1869,15 @@ version = "0.1.1" [[deps.Static]] deps = ["IfElse"] -git-tree-sha1 = "dbde6766fc677423598138a5951269432b0fcc90" +git-tree-sha1 = "d2fdac9ff3906e27f7a618d47b676941baa6c80c" uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "0.8.7" +version = "0.8.10" [[deps.StaticArrayInterface]] -deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "Requires", "SnoopPrecompile", "SparseArrays", "Static", "SuiteSparse"] -git-tree-sha1 = "33040351d2403b84afce74dae2e22d3f5b18edcb" +deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Requires", "SparseArrays", "Static", "SuiteSparse"] +git-tree-sha1 = "5d66818a39bb04bf328e92bc933ec5b4ee88e436" uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.4.0" +version = "1.5.0" weakdeps = ["OffsetArrays", "StaticArrays"] [deps.StaticArrayInterface.extensions] @@ -1634,15 +1885,40 @@ weakdeps = ["OffsetArrays", "StaticArrays"] StaticArrayInterfaceStaticArraysExt = "StaticArrays" [[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "8982b3607a212b070a5e46eea83eb62b4744ae12" +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "9ae599cd7529cfce7fea36cf00a62cfc56f0f37c" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.5.25" +version = "1.9.4" +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.StatisticalMeasures]] +deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] +git-tree-sha1 = "8b5a165b0ee2b361d692636bfb423b19abfd92b3" +uuid = "a19d573c-0a75-4610-95b3-7071388c7541" +version = "0.1.6" + + [deps.StatisticalMeasures.extensions] + LossFunctionsExt = "LossFunctions" + ScientificTypesExt = "ScientificTypes" + + [deps.StatisticalMeasures.weakdeps] + LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" + ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" + +[[deps.StatisticalMeasuresBase]] +deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] +git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" +uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" +version = "0.1.1" [[deps.StatisticalTraits]] deps = ["ScientificTypesBase"] @@ -1653,25 +1929,25 @@ version = "3.2.0" [[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"] -git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" +git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.21" +version = "0.34.3" [[deps.StatsFuns]] deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" +git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.0" +version = "1.3.1" [deps.StatsFuns.extensions] StatsFunsChainRulesCoreExt = "ChainRulesCore" @@ -1682,24 +1958,32 @@ version = "1.3.0" InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" [[deps.StringManipulation]] -git-tree-sha1 = "46da2434b41f41ac3594ee9816ce5541c6096123" +deps = ["PrecompileTools"] +git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.0" +version = "0.3.4" [[deps.StructArrays]] -deps = ["Adapt", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] -git-tree-sha1 = "521a0e828e98bb69042fec1809c1b5a680eb7389" +deps = ["ConstructionBase", "DataAPI", "Tables"] +git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.15" +version = "0.6.18" +weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] + + [deps.StructArrays.extensions] + StructArraysAdaptExt = "Adapt" + StructArraysGPUArraysCoreExt = "GPUArraysCore" + StructArraysSparseArraysExt = "SparseArrays" + StructArraysStaticArraysExt = "StaticArrays" [[deps.SuiteSparse]] 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"] @@ -1707,10 +1991,10 @@ uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" version = "1.0.3" [[deps.TableShowUtils]] -deps = ["DataValues", "Dates", "JSON", "Markdown", "Test"] -git-tree-sha1 = "14c54e1e96431fb87f0d2f5983f090f1b9d06457" +deps = ["DataValues", "Dates", "JSON", "Markdown", "Unicode"] +git-tree-sha1 = "2a41a3dedda21ed1184a47caab56ed9304e9a038" uuid = "5e66a065-1f0a-5976-b372-e0b8c017ca10" -version = "0.2.5" +version = "0.2.6" [[deps.TableTraits]] deps = ["IteratorInterfaceExtensions"] @@ -1719,10 +2003,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"] @@ -1741,37 +2025,55 @@ uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] -git-tree-sha1 = "c97f60dd4f2331e1a495527f80d242501d2f9865" +git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.5.1" +version = "0.5.2" [[deps.TiffImages]] -deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "UUIDs"] -git-tree-sha1 = "8621f5c499a8aa4aa970b1ae381aae0ef1576966" +deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "SIMD", "UUIDs"] +git-tree-sha1 = "bc7fd5c91041f44636b2c134041f7e5263ce58ae" uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" -version = "0.6.4" +version = "0.10.0" [[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" +git-tree-sha1 = "5d54d076465da49d6746c647022f3b3674e64156" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" +version = "0.10.8" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.Transducers]] +deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] +git-tree-sha1 = "3064e780dbb8a9296ebb3af8f440f787bb5332af" +uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" +version = "0.4.80" + + [deps.Transducers.extensions] + TransducersBlockArraysExt = "BlockArrays" + TransducersDataFramesExt = "DataFrames" + TransducersLazyArraysExt = "LazyArrays" + TransducersOnlineStatsBaseExt = "OnlineStatsBase" + TransducersReferenceablesExt = "Referenceables" + + [deps.Transducers.weakdeps] + BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" + OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" + Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" [[deps.Tricks]] -git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.7" +version = "0.1.8" [[deps.TriplotBase]] git-tree-sha1 = "4d4ed7f294cda19382ff7de4c137d24d16adc89b" uuid = "981d1d27-644d-49a2-9326-4793e63143c3" version = "0.1.0" -[[deps.TupleTools]] -git-tree-sha1 = "3c712976c47707ff893cf6ba4354aa14db1d8938" -uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" -version = "1.3.0" - [[deps.URIParser]] deps = ["Unicode"] git-tree-sha1 = "53a9f49546b8d2dd2e688d216421d050c9a31d0d" @@ -1779,9 +2081,9 @@ uuid = "30578b45-9adc-5946-b283-645ec420af67" version = "0.4.1" [[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"] @@ -1802,22 +2104,35 @@ uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" version = "0.4.1" [[deps.Unitful]] -deps = ["ConstructionBase", "Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "ba4aa36b2d5c98d6ed1f149da916b3ba46527b2b" +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "dd260903fdabea27d9b6021689b3cd5401a57748" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.14.0" +version = "1.20.0" [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" InverseFunctionsUnitfulExt = "InverseFunctions" [deps.Unitful.weakdeps] + ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" +[[deps.UnsafeAtomics]] +git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" +uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" +version = "0.2.1" + +[[deps.UnsafeAtomicsLLVM]] +deps = ["LLVM", "UnsafeAtomics"] +git-tree-sha1 = "d9f5962fecd5ccece07db1ff006fb0b5271bdfdd" +uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" +version = "0.1.4" + [[deps.VectorizationBase]] deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "b182207d4af54ac64cbc71797765068fdeff475d" +git-tree-sha1 = "6129a4faf6242e7c3581116fbe3270f3ab17c90d" uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.21.64" +version = "0.21.67" [[deps.VersionParsing]] git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" @@ -1826,15 +2141,15 @@ version = "1.3.0" [[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 = "52ff2af32e591541550bd753c0da8b9bc92bb9d9" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.10.3+0" +version = "2.12.7+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] @@ -1843,75 +2158,75 @@ uuid = "aed1982a-8fda-507f-9586-7b0439959a61" version = "1.1.34+0" [[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.6.9+4" +version = "1.8.6+0" [[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.9+4" +version = "1.0.11+0" [[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.3+4" +version = "1.1.4+0" [[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.4+4" +version = "1.3.6+0" [[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.10+4" +version = "0.9.11+0" [[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.0+3" +version = "0.1.1+0" [[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" +deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.13.0+3" +version = "1.15.0+0" [[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.4.0+3" +version = "1.5.0+0" [[deps.ZMQ]] -deps = ["FileWatching", "Sockets", "ZeroMQ_jll"] -git-tree-sha1 = "356d2bdcc0bce90aabee1d1c0f6d6f301eda8f77" +deps = ["FileWatching", "PrecompileTools", "Sockets", "ZeroMQ_jll"] +git-tree-sha1 = "8ac0d6e982660047f4ec5ae462acf4b92260f4b3" uuid = "c2297ded-f4af-51ae-bb23-16f91089e4e1" -version = "1.2.2" +version = "1.2.3" [[deps.ZeroMQ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "libsodium_jll"] -git-tree-sha1 = "fe5c65a526f066fb3000da137d5785d9649a8a47" +deps = ["Artifacts", "JLLWrappers", "Libdl", "libsodium_jll"] +git-tree-sha1 = "42f97fb27394378591666ab0e9cee369e6d0e1f9" uuid = "8f1865be-045e-5c20-9c9f-bfbfb0764568" -version = "4.3.4+0" +version = "4.3.5+0" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" +version = "1.2.13+1" [[deps.Zygote]] deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "ebac1ae9f048c669317ad48c9bed815790a468d8" +git-tree-sha1 = "19c586905e78a26f7e4e97f81716057bd6b1bc54" uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.61" +version = "0.6.70" [deps.Zygote.extensions] ZygoteColorsExt = "Colors" @@ -1925,9 +2240,9 @@ version = "0.6.61" [[deps.ZygoteRules]] deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "977aed5d006b840e2e40c0b48984f7463109046d" +git-tree-sha1 = "27798139afc0a2afa7b1824c206d5e87ea587a00" uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.3" +version = "0.2.5" [[deps.isoband_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1936,10 +2251,10 @@ uuid = "9a68df92-36a6-505f-a73e-abb412b6bfb4" version = "0.2.3+0" [[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d" uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.4.0+0" +version = "3.9.0+0" [[deps.libass_jll]] deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] @@ -1950,7 +2265,7 @@ version = "0.15.1+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.7.0+0" +version = "5.8.0+1" [[deps.libfdk_aac_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1959,10 +2274,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 = "d7015d2e18a5fd9a4f47de711837e980519781a4" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.38+0" +version = "1.6.43+1" [[deps.libsixel_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"] @@ -1985,12 +2300,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.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2021.12.0+0" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +version = "17.4.0+2" [[deps.x264_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] diff --git a/Project.toml b/Project.toml index c3abc81..59e77e3 100644 --- a/Project.toml +++ b/Project.toml @@ -17,7 +17,6 @@ OpenML = "8b6db2d4-7670-4922-a472-f9537c81ab66" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" PkgOnlineHelp = "021381c1-d00a-4861-ba2b-4d077ab1b5cd" Pluto = "c3e4b0f8-55cb-11ea-2926-15256bba5781" -PrecompilePlutoCourse = "031ef55e-ae57-4a95-aa50-04a4c1cc4953" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" @@ -26,7 +25,7 @@ Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [compat] IJulia = "1" Pluto = "0.19" -julia = "1.9" +julia = "1.10" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/README.md b/README.md index 106adf7..5dab62a 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,26 @@ -## ✨ Participating in ResBaz 2023? +## ✨ Participating in ResBaz 2024? -Start [here](https://github.com/ablaom/HelloJulia.jl/wiki/Preparing-for-your-ResBaz-2023-Julia-workshop) either of these workshops: - -- **Getting Started With the Julia Programming Language** -- **Introduction to Using Julia for Machine Learning** - ---- - -## Participating in JuliaCon 2022? - -Start [here](https://github.com/ablaom/HelloJulia.jl/wiki/JuliaCon-2022-workshop:-Getting-started-with-Julia-and-MLJ) for the workshop **Getting started with Julia and machine learning**. +Start +[here](https://github.com/ablaom/HelloJulia.jl/wiki/Preparing-for-your-ResBaz-2024-Julia-workshop) +for the **Getting Started With the Julia Programming Language** workshop. --- # HelloJulia.jl -Resources used by the author for a short *Introduction to Julia* -workshop, and a longer *Getting started with Julia and machine -learning* workshop. Tutorials 1 and 2, and some of the demos, are -suitable for a one-hour workshop. Add the remaining material for a 3 -hour workshop. +Resources used by the author for a short *Introduction to Julia* workshop, and a longer +*Getting started with Julia and machine learning* workshop. There is between 2 and 5 hours of material, depending on choice of material. -Users are not assumed to have any familiarity with Julia but should be -know some basic linear algebra and statistics (especially for the -extended version). - -This README page summarizes some useful resources for starting out with Julia. +Users are not assumed to have any familiarity with Julia but should be know some basic +linear algebra and statistics (especially for the later sections). To **run demos and tutorials** presented in the workshop: [![here](https://img.shields.io/badge/run-demos%2Ftutorials-informational)](INSTALLATION.md) +Some random resources for Julia newcomers: + ## Is Julia for me? - [Julia language home page](https://julialang.org) - Good for a quick @@ -39,18 +28,29 @@ To **run demos and tutorials** presented in the workshop: - [Slides for this workshop](/slides/slides.pdf) -- [Why Julia?](https://indico.cern.ch/event/1074269/contributions/4539601/attachments/2317518/3945412/why-julia%20slides.pdf) - Motivation and comparison to other languages. Slides from a talk by Oliver Schulz, Max Planck Institute for Physics. [Alternative link](https://github.com/oschulz/Why-Julia) +- [Why + Julia?](https://indico.cern.ch/event/1074269/contributions/4539601/attachments/2317518/3945412/why-julia%20slides.pdf) - + Motivation and comparison to other languages. Slides from a talk by Oliver Schulz, Max + Planck Institute for Physics. [Alternative link](https://github.com/oschulz/Why-Julia) -- [Package search at JuliaHub](https://juliahub.com/ui/Packages) - Good for scouting out existing julia software (and communities) in your area of interest ([alternative search engine](https://juliapackages.com/packages?search=)). +- [Package search at JuliaHub](https://juliahub.com/ui/Packages) - Good for scouting out + existing julia software (and communities) in your area of interest ([alternative search + engine](https://juliapackages.com/packages?search=)). -- For experienced programmers: Julia is object-oriented but not in the way languages like python or C++. Rather it uses *multiple dispatch*. [This talk](https://www.youtube.com/watch?v=kc9HwsxE1OY) makes the case for this alternative paradigm. +- For experienced programmers: Julia is object-oriented but not in the way languages like + python or C++. Rather it uses *multiple dispatch*. [This + talk](https://www.youtube.com/watch?v=kc9HwsxE1OY) makes the case for this alternative + paradigm. + +- [Data Science and Machine Learning in + Julia](https://juliaai.github.io/DataScienceTutorials.jl/) ## First steps -See [here](/FIRST_STEPS.md) on how to install Julia on your -computer. To install and run the demos and tutorials in this -respository, click [here](INSTALLATION.md) +- [Installing Julia on my computer](/FIRST_STEPS.md) + +- [HelloJulia demos and tutorials](INSTALLATION.md) ## Advanced setup @@ -81,9 +81,10 @@ channel](https://julialang.org/slack/). Also useful: - [DataFrames cheatsheet](https://ahsmart.com/pub/data-wrangling-with-data-frames-jl-cheat-sheet/index.html) -- [MLJ cheatsheet](https://alan-turing-institute.github.io/MLJ.jl/dev/mlj_cheatsheet/) +- [MLJ cheatsheet](https://JuliaAI.github.io/MLJ.jl/dev/mlj_cheatsheet/) -- Get help on a command with `juia> ?some_command` at the REPL or `@doc ?some_command` in a notebook. +- Get help on a command with `juia> ?some_command` at the REPL or `@doc ?some_command` in + a notebook. - `apropos("invert")` seaches for objects with "invert" in the doc string. diff --git a/notebooks/01_first_steps/my_first_plot.png b/notebooks/01_first_steps/my_first_plot.png index 4d6e090..a782bbe 100644 Binary files a/notebooks/01_first_steps/my_first_plot.png and b/notebooks/01_first_steps/my_first_plot.png differ diff --git a/notebooks/01_first_steps/notebook.ipynb b/notebooks/01_first_steps/notebook.ipynb index 0450899..4eb9bc0 100644 --- a/notebooks/01_first_steps/notebook.ipynb +++ b/notebooks/01_first_steps/notebook.ipynb @@ -143,8 +143,8 @@ { "output_type": "execute_result", "data": { - "text/plain": "\u001b[36m sin(x)\u001b[39m\n\n Compute sine of \u001b[36mx\u001b[39m, where \u001b[36mx\u001b[39m is in radians.\n\n See also \u001b[36msind\u001b[39m, \u001b[36msinpi\u001b[39m, \u001b[36msincos\u001b[39m, \u001b[36mcis\u001b[39m, \u001b[36masin\u001b[39m.\n\n\u001b[1m Examples\u001b[22m\n\u001b[1m ≡≡≡≡≡≡≡≡≡≡\u001b[22m\n\n\u001b[36m julia> round.(sin.(range(0, 2pi, length=9)'), digits=3)\u001b[39m\n\u001b[36m 1×9 Matrix{Float64}:\u001b[39m\n\u001b[36m 0.0 0.707 1.0 0.707 0.0 -0.707 -1.0 -0.707 -0.0\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> sind(45)\u001b[39m\n\u001b[36m 0.7071067811865476\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> sinpi(1/4)\u001b[39m\n\u001b[36m 0.7071067811865476\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> round.(sincos(pi/6), digits=3)\u001b[39m\n\u001b[36m (0.5, 0.866)\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> round(cis(pi/6), digits=3)\u001b[39m\n\u001b[36m 0.866 + 0.5im\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> round(exp(im*pi/6), digits=3)\u001b[39m\n\u001b[36m 0.866 + 0.5im\u001b[39m\n\n\u001b[36m sin(A::AbstractMatrix)\u001b[39m\n\n Compute the matrix sine of a square matrix \u001b[36mA\u001b[39m.\n\n If \u001b[36mA\u001b[39m is symmetric or Hermitian, its eigendecomposition (\u001b[36meigen\u001b[39m) is used to\n compute the sine. Otherwise, the sine is determined by calling \u001b[36mexp\u001b[39m.\n\n\u001b[1m Examples\u001b[22m\n\u001b[1m ≡≡≡≡≡≡≡≡≡≡\u001b[22m\n\n\u001b[36m julia> sin(fill(1.0, (2,2)))\u001b[39m\n\u001b[36m 2×2 Matrix{Float64}:\u001b[39m\n\u001b[36m 0.454649 0.454649\u001b[39m\n\u001b[36m 0.454649 0.454649\u001b[39m", - "text/markdown": "```\nsin(x)\n```\n\nCompute sine of `x`, where `x` is in radians.\n\nSee also [`sind`](@ref), [`sinpi`](@ref), [`sincos`](@ref), [`cis`](@ref), [`asin`](@ref).\n\n# Examples\n\n```jldoctest\njulia> round.(sin.(range(0, 2pi, length=9)'), digits=3)\n1×9 Matrix{Float64}:\n 0.0 0.707 1.0 0.707 0.0 -0.707 -1.0 -0.707 -0.0\n\njulia> sind(45)\n0.7071067811865476\n\njulia> sinpi(1/4)\n0.7071067811865476\n\njulia> round.(sincos(pi/6), digits=3)\n(0.5, 0.866)\n\njulia> round(cis(pi/6), digits=3)\n0.866 + 0.5im\n\njulia> round(exp(im*pi/6), digits=3)\n0.866 + 0.5im\n```\n\n```\nsin(A::AbstractMatrix)\n```\n\nCompute the matrix sine of a square matrix `A`.\n\nIf `A` is symmetric or Hermitian, its eigendecomposition ([`eigen`](@ref)) is used to compute the sine. Otherwise, the sine is determined by calling [`exp`](@ref).\n\n# Examples\n\n```jldoctest\njulia> sin(fill(1.0, (2,2)))\n2×2 Matrix{Float64}:\n 0.454649 0.454649\n 0.454649 0.454649\n```\n" + "text/plain": "\u001b[36m sin(x)\u001b[39m\n\n Compute sine of \u001b[36mx\u001b[39m, where \u001b[36mx\u001b[39m is in radians.\n\n See also \u001b[36msind\u001b[39m, \u001b[36msinpi\u001b[39m, \u001b[36msincos\u001b[39m, \u001b[36mcis\u001b[39m, \u001b[36masin\u001b[39m.\n\n\u001b[1m Examples\u001b[22m\n\u001b[1m ≡≡≡≡≡≡≡≡\u001b[22m\n\n\u001b[36m julia> round.(sin.(range(0, 2pi, length=9)'), digits=3)\u001b[39m\n\u001b[36m 1×9 Matrix{Float64}:\u001b[39m\n\u001b[36m 0.0 0.707 1.0 0.707 0.0 -0.707 -1.0 -0.707 -0.0\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> sind(45)\u001b[39m\n\u001b[36m 0.7071067811865476\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> sinpi(1/4)\u001b[39m\n\u001b[36m 0.7071067811865475\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> round.(sincos(pi/6), digits=3)\u001b[39m\n\u001b[36m (0.5, 0.866)\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> round(cis(pi/6), digits=3)\u001b[39m\n\u001b[36m 0.866 + 0.5im\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> round(exp(im*pi/6), digits=3)\u001b[39m\n\u001b[36m 0.866 + 0.5im\u001b[39m\n\n\u001b[36m sin(A::AbstractMatrix)\u001b[39m\n\n Compute the matrix sine of a square matrix \u001b[36mA\u001b[39m.\n\n If \u001b[36mA\u001b[39m is symmetric or Hermitian, its eigendecomposition (\u001b[36meigen\u001b[39m) is used to\n compute the sine. Otherwise, the sine is determined by calling \u001b[36mexp\u001b[39m.\n\n\u001b[1m Examples\u001b[22m\n\u001b[1m ≡≡≡≡≡≡≡≡\u001b[22m\n\n\u001b[36m julia> sin(fill(1.0, (2,2)))\u001b[39m\n\u001b[36m 2×2 Matrix{Float64}:\u001b[39m\n\u001b[36m 0.454649 0.454649\u001b[39m\n\u001b[36m 0.454649 0.454649\u001b[39m\n\n\u001b[36m sin(::BareInterval)\u001b[39m\n\u001b[36m sin(::Interval)\u001b[39m\n\n Implement the \u001b[36msin\u001b[39m function of the IEEE Standard 1788-2015 (Table 9.1).", + "text/markdown": "```\nsin(x)\n```\n\nCompute sine of `x`, where `x` is in radians.\n\nSee also [`sind`](@ref), [`sinpi`](@ref), [`sincos`](@ref), [`cis`](@ref), [`asin`](@ref).\n\n# Examples\n\n```jldoctest\njulia> round.(sin.(range(0, 2pi, length=9)'), digits=3)\n1×9 Matrix{Float64}:\n 0.0 0.707 1.0 0.707 0.0 -0.707 -1.0 -0.707 -0.0\n\njulia> sind(45)\n0.7071067811865476\n\njulia> sinpi(1/4)\n0.7071067811865475\n\njulia> round.(sincos(pi/6), digits=3)\n(0.5, 0.866)\n\njulia> round(cis(pi/6), digits=3)\n0.866 + 0.5im\n\njulia> round(exp(im*pi/6), digits=3)\n0.866 + 0.5im\n```\n\n```\nsin(A::AbstractMatrix)\n```\n\nCompute the matrix sine of a square matrix `A`.\n\nIf `A` is symmetric or Hermitian, its eigendecomposition ([`eigen`](@ref)) is used to compute the sine. Otherwise, the sine is determined by calling [`exp`](@ref).\n\n# Examples\n\n```jldoctest\njulia> sin(fill(1.0, (2,2)))\n2×2 Matrix{Float64}:\n 0.454649 0.454649\n 0.454649 0.454649\n```\n\n```\nsin(::BareInterval)\nsin(::Interval)\n```\n\nImplement the `sin` function of the IEEE Standard 1788-2015 (Table 9.1).\n" }, "metadata": {}, "execution_count": 5 @@ -1212,7 +1212,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.3002995202519845" + "text/plain": "0.5373161485486371" }, "metadata": {}, "execution_count": 50 @@ -1230,7 +1230,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "3×4 Matrix{Float64}:\n 0.56066 0.282712 0.869004 0.608561\n 0.256356 0.762232 0.886113 0.71041\n 0.669456 0.84814 0.48216 0.111286" + "text/plain": "3×4 Matrix{Float64}:\n 0.156884 0.965893 0.822031 0.175844\n 0.263368 0.389618 0.341254 0.288944\n 0.545627 0.789382 0.801309 0.207644" }, "metadata": {}, "execution_count": 51 @@ -1248,7 +1248,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "3×4 Matrix{Float64}:\n -1.47085 -0.484285 0.226564 -0.541436\n -0.864527 -0.642369 -1.33996 -0.0708261\n 1.46799 -0.21449 -0.675616 -0.736763" + "text/plain": "3×4 Matrix{Float64}:\n 0.779817 -0.519889 0.534122 -1.55778\n 0.0072398 1.49424 -0.0276442 -2.16914\n 1.15712 1.28477 -0.260504 0.594076" }, "metadata": {}, "execution_count": 52 @@ -1266,7 +1266,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "-95" + "text/plain": "-80" }, "metadata": {}, "execution_count": 53 @@ -1284,7 +1284,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "10-element Vector{Char}:\n 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)\n 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)\n 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)\n 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)\n 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)\n 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)\n 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)\n 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)\n 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)\n 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)" + "text/plain": "10-element Vector{Char}:\n 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)\n 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)\n 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)\n 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)\n 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)\n 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)\n 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)\n 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)\n 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)\n 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)" }, "metadata": {}, "execution_count": 54 @@ -1318,7 +1318,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "\"J1Olll9aGnR3hmXruM3WrYwxcXhSp5\"" + "text/plain": "\"ttub5SwnG2VXA0UMwjkc0XRvMxHKn5\"" }, "metadata": {}, "execution_count": 56 @@ -1345,7 +1345,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.4681745002816416" + "text/plain": "0.39534950422987486" }, "metadata": {}, "execution_count": 58 @@ -1364,7 +1364,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.6537960848124609" + "text/plain": "0.6192953665657467" }, "metadata": {}, "execution_count": 59 @@ -1410,7 +1410,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "Distributions.Gamma{Float64}(α=0.4807672826448797, θ=1.9596673764622425)" + "text/plain": "Distributions.Gamma{Float64}(α=0.5148824829610816, θ=2.0240393033364423)" }, "metadata": {}, "execution_count": 61 @@ -1428,7 +1428,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.9421439594695729" + "text/plain": "1.0421423821126854" }, "metadata": {}, "execution_count": 62 @@ -1446,7 +1446,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.4136232961457758" + "text/plain": "0.4863847498413582" }, "metadata": {}, "execution_count": 63 @@ -1464,7 +1464,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "0.2357930987090037" + "text/plain": "0.2464039067819249" }, "metadata": {}, "execution_count": 64 @@ -1525,7 +1525,10 @@ "output_type": "execute_result", "data": { "text/plain": "Figure()", - "image/png": "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5bZt204//fQHH3zwc5/73AMPPNDX1zfeSaekS06bv7Oz/5k93dUeBACYQspbwWpvbw8hHH1ie2tr6/79+/P5fCbzsp+qra3t8ccfv+OOOxYvXtzW1rZ8+fL777//rLPOOnqb559/fseOHUe/cujQoaampoGBgXK/jbErlUr5fL5UKpW1Vy6XGxgY4dfqDctbQgjferp9xaxl6cwHHGVgYCBJkgn9OwFIRbFYzOVy0/VPa6FQSJKkrF3KC6yDBw+GEJqbm4dfaW5uLpVKHR0dCxYsGH6xv79/9uzZV1xxxWc+85kkSZ577rl169ZdddVVx6x1PfTQQ1/60peOfmXOnDmnnXba0LtMkFKpNDAwkM/ny9qrs7PzYCb366/PS8KyWbXf2tp+xRnNv/5VYJw6OzvjOC4W3QwFprpisdjZ2dnY2FjtQSZEf39/ud9aeYE1b968EEJXV9fwK4cOHYqiaPbs2UdvVldXt3Xr1uF/Xbly5Uc/+tFrr722o6Njzpw5w6+/+93vfve73330jjfddFN4+QpZ6kqlUmPjzmy2vBWs+fPnL1ww8q/svz3jlA0/373glFPiKEpjQOCImpqaJEmm2R1eYFoqFouFQmFCP8GrqIJwLO8crNbW1vCrA4VD2tvbFyxYkM1mT7zjypUrQwj79k3D88HftGr+/p7clp1do28KAMwM5QXW8uXLV65cuXHjxuFXNm7cePHFFx+z2caNGxctWvToo48Ov7Jly5a6urpTTz11PLNOTetOmx9C+M62vdUeBACYKso7RBhF0dVXX/2Xf/mXl19++ete97ovfelLjzzyyHBv3X777d/97nfvuuuuiy66KJPJXHvttZ/5zGfWrFnz0EMPfeITn7juuuvKPUFs6mjv7I/j4x4BfOW8xge27vm91YuGX0misGJuw6SMBgBMOWXfaPTGG2/csWPH2rVrkySJ4/iWW2655JJLhr60efPme++9d/369U1NTRs2bHj729++du3aEEIcxx/60IeGzq86Sf3199raO497ZUTnwOAPtvdccdejw2dhzW2o+dY1r5uk4QCAKabswIrj+NZbb/3kJz+5ffv2s88+u7a2dvhL69evX79+/dCP16xZ8+STT7a1tXV1dZ155pnT9bKCIc21mb3duZ7BfFNNhc92BACmkwqDoKWlZc2aNSfeJo7j008/vbKf/+TSXJsJ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+7+25bP/8ly1xwGAmUtgTSsNNcmG9772917V+p/ve/IP/+fP8kXPhAaAKhBY001tJv7Hd53/X//d6bf+cMclX9i0rydX7YkAYMYRWCexYrGUyxd//Z/BQvFP1532lSvXPPrCodf97cNbdnYOf6naIwPAjOBO7iexv//JSzd965kTbPCKufXb9/W8+jPfXzmvYVZdNoTwrZZUQWoAABMySURBVGsunNuQnawBAWCGsoI1nTXWJGcubKrJxNv39e7pHqj2OAAwUwisaa4mic88pWlWfeaXB/t/sb+3c2Cw2hMBwPQnsKa/OIpeOa9x2ey6g32DF/3dpk07DlR7IgCY5gTWTHFKU+0ZpzRl43jtLZtuevCZYskdHABgogisGaSxJnnoDy/8D+cuvvlbz/672/51V2d/tScCgOlJYM0szbWZe97x6s///upHnjvwmv/+Lw9s3V3tiQBgGhJYM9EHXr/iR9ddNL+x5tL1m9/59z/Z72akAJAqgTVDnbOo5bE/vuiv/v1Z//DTnWd/8ntfefTFak8EANOHwJq5skn80UtWPfrHF6+YW/+ue37yljs2v3TIWVkAkAKBNdO9qrX5kT96w19fetZ3tu0759PfW/+jF1xgCADjJLAImTi68U2rnvjw2le1trz/az+94G8fdq8sABgPgcVhpy9o/P5/ev2G9752b/fAG/7ukSu+8tgLHX3VHgoATkoe9jyzbN/X216bnGCDV85v/Kd3/+Ydm1+440cv3P/U7qsvWP7Xbzm7LiPEAaAMAmtmufGfn+oa2+MIT5vf+OKhvs8+/It/3rr75t864z++ekkcRRM9HgBMD1YmGFltJn7lvMY3rZo/pz77zr//ybmf/v59T7Y7/R0AxkJgcSILm2t/fN3FG9772jiKLv/Sj1/32X+5/+du/g4AoxBYjCKKwlt+Y+Hj11985x+ct7tr4Hfv3LzuCz98qG1ftecCgKlLYDEmSRy957XLnvmTS/729161dU/3JV/44YWfffjrDhoCwEic5M6J5PLFux972VN05jZkP/E7Z/7r8x1ff7L997704yWz6i49e+GFr5iTxIdPgT97YfOrl86qxrAAMFUILE5koFD8mx/8YsQvLZ5VV59N2rv6b/vh81/e/MtTmmvmNdQkcfTO85cKLABmOIFFhaIQ5jZk5zZkD/UNtncN/PJg/0uH+uc11uzu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Z66ccp/R5dZVCKG862VaW1vDr44ADmlvb1+wYEE2m61gMwCAaam8wFq+fPnKlSs3btw4/MrGjRsvvvjiyjYDAJiWygusKIquvvrq22677eGHH87n81/84hcfeeSRD3zgA0Nfvf3226+88sqBgYETbwYAML2VfTLajTfeuGPHjrVr1yZJEsfxLbfccskllwx9afPmzffee+/69etra2tPsBkAwPRW9j2L4zi+9dZbOzo6fvSjHx06dOjodan169eXSqWmpqYTbwYAML1VeDllS0vLmjVr0toMAGA68dQtAICUCSwAgJQJLACAlAksAICUCSwAgJQJLACAlAksAICUCSwAgJQJLACAlAksAICUCSwAgJQJLACAlAksAICUCSwAgJQJLACAlAksAICUZao9wMvs2LFjx44dN91008S9RalU6urqamlpmbi3ANLS398fRVFtbW21BwFGMb0/Xr/3ve+tWLGirF2m1grWeeedV+43UK5isfjTn/50Qt8CSMtLL720d+/eak8BjK5YLG7ZsqXaU0yUFStWnHfeeWXtEpVKpQmaZmrq7u5ubW3t7u6u9iDA6D784Q8vXrz4wx/+cLUHAUbR2dm5dOnSzs7Oag8yVUytFSwAgGlAYAEApExgAQCkTGABAKQsmdB7IkxNSZJcdNFF1Z4CGF0URatWrVq2bFm1BwFGl8lkfLwOm3FXEQIATDSHCAEAUiawAABSJrAAAFImsAAAUja1HvY8CbZv375t27Y1a9YsXLiw2rMAx5XL5Q4cOHD0Kw0NDdP1ObJw8nr22Wd7e3uPeU6fj9owo1awBgYGLrvsslWrVl1++eWtra0f+9jHqj0RcFz33Xffope7/vrrqz0UcKwbbrjh7rvvHv5XH7XDZtAK1s033/zQQw9t2rTpggsuuOuuu6666qrzzz//sssuq/ZcwAja2tqWLVv2+c9/fviV5cuXV3Ee4Gi9vb1PPPHEPffcs2HDhqMfx+6jdthMuQ9WoVBYtmzZ29/+9k996lNDr7zxjW+cNWvW17/+9eoOBozove997969e++///5qDwKM4Ktf/eoHP/jBEEJHR8cf//Eff/rTnw4+al9uphwifP7553ft2rVu3brhV9atW7dp06YqjgScwLZt204//fQHH3zwc5/73AMPPNDX11ftiYAjrrzyyn379u3bt2/lypXDL/qoPdpMOUTY3t4eQjj6bLvW1tb9+/fn8/lMZqb8IsBJpK2t7fHHH7/jjjsWL17c1ta2fPny+++//6yzzqr2XMBx+ag92kxZwTp48GAIobm5efiV5ubmUqnU0dFRvaGAkfX398+ePft973vf/v37n3rqqWeeeaZYLF511VXVngs4ER+1R5spRTlv3rwQQldX1/Arhw4diqJo9uzZ1RsKGFldXd3WrVuH/3XlypUf/ehHr7322o6Ojjlz5lRxMOAEfNQebaasYLW2toZfrV4OaW9vX7BgQTabrd5QwFgNneexb9++ag8CHJeP2qPNlMBavnz5ypUrN27cOPzKxo0bL7744iqOBBzPxo0bFy1a9Oijjw6/smXLlrq6ulNPPbWKUwEn5qP2aDMlsKIouvrqq2+77baHH344n89/8YtffOSRRz7wgQ9Uey5gBBdddFEmk7n22mt/8IMfdHV1bdiw4ROf+MR1112XJEm1RwOOy0ft0WbKOVghhBtvvHHHjh1r165NkiSO41tuueWSSy6p9lDACGprazds2PD2t7997dq1IYQ4jj/0oQ/ddNNN1Z4LGIWP2mEz5Uajwzo7O7dv33722WfX1tZWexbgRIrFYltbW1dX15lnntnY2FjtcYCx8lEbZmBgAQBMtJlyDhYAwKQRWAAAKRNYAAApE1gAACkTWAAAKRNYAAApE1gAACkTWAAAKRNYAAApE1gAACkTWAAAKRNYAAApE1gAACkTWAAAKRNYAAApE1gAACkTWAAAKfs/73XhJWSJaogAAAAASUVORK5CYII=" + "image/png": "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EEJ3/9CWA8e55RUAAEiqKQzCbDZ7xx13hBC+973v3XfffZWvHzhw4HOf+1wIYfXq1R/4wAfG/iOf//znb7nllltuueXgwYPlryxYsKD8M3/6p3967733jv3hRx999DOf+UwI4corrzxuWHIEu0YBAIApfHYihHD77bd/97vfffrpp2+44Ya1a9deeeWVL7300r/8y79s310wFHUAACAASURBVL69UCjcddddR7ypcP/992/atCmEcOedd86ZM6f8xbvuuuvpp5/esWPHhz/84csvv/z8888fHh7euHHjI488UiqV5syZc9ddd03p3yKR1ixu+/Gv94YQNu7q/ODqRVGPAwAARGBqg7Cpqelf//Vfb7nllocffnjdunXr1q0rf/2EE0741re+ddwDhGVLliy57777PvnJT27YsOHxxx8feyJx7dq1d9111/Lly6dk+kRbvfjwax8uGgUAgNSa2iAMISxevPgnP/nJv/3bvz3wwAM7duxoa2s7//zzb7zxxsoC4Fh33313+d3C9vb2sV8/55xznnzyyfXr1z/11FNbtmxpaGh45zvfWX6fcKrnT6o1iw/fK+MpQgAASK0pD8IQQiaTufrqq6+++urj/uSFF144znevueaaa665pn5zpdqaJa2ZTCiVwot7uoeKpVw2E/VEAADAdJvCS2WYyVobcyvmzgoh9A8Vf/1mT9TjAAAAERCE6TVm12hntJMAAACREITptWbJ4Zcn3CsDAADpJAjTa3XlKUJBCAAAqSQI02uNIAQAgHQThOl15qLWhmwmhLB5b8+hweGoxwEAAKabIEyvplz21BOaQwjDxdKLe7qjHgcAAJhugjDV7BoFAIA0E4SpVglCF40CAEAKCcJUG71odKcgBACA1BGEqeZtegAASDNBmGqnLWhuzGVDCFs7DnX2DUU9DgAAMK0EYarlspl3LGgJIZRKjhECAEDqCMK0W7Nk5F6Z3YIQAADSRRCm3WoXjQIAQFoJwrTzFCEAAKSWIEy70YtGd7poFAAA0kUQpt3J7bNbG3MhhF1d/W92D0Q9DgAAMH0EYdplMuHMRS3lz+6VAQCAVBGE2DUKAAApJQgZc9GoFUIAAEgTQUg4e+Qpwme2WyEEAIAUEYSEC06cm81kQghPv3Hw0OBw1OMAAADTRBAS5s3Kn7GwJYQwOFx8+o2DUY8DAABME0FICCFc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", + "text/html": [ + "" + ] }, "metadata": {}, "execution_count": 68 @@ -1539,7 +1542,7 @@ "ys = f.(xs) # apply f element-wise to xs\n", "\n", "fig = lines(xs, ys)\n", - "hist!(samples, normalization=:pdf, bins=40, alpha=0.4)\n", + "hist!(samples, normalization=:pdf, bins=40, color=(:darkblue, 0.4))\n", "current_figure()" ], "metadata": {}, @@ -1687,11 +1690,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/01_first_steps/notebook.jl b/notebooks/01_first_steps/notebook.jl index 07a66b8..6c5a536 100644 --- a/notebooks/01_first_steps/notebook.jl +++ b/notebooks/01_first_steps/notebook.jl @@ -362,7 +362,7 @@ xs = 0:0.1:4 # floats from 0 to 4 in steps of 0.1 ys = f.(xs) # apply f element-wise to xs fig = lines(xs, ys) -hist!(samples, normalization=:pdf, bins=40, alpha=0.4) +hist!(samples, normalization=:pdf, bins=40, color=(:darkblue, 0.4)) current_figure() #- diff --git a/notebooks/01_first_steps/notebook.pluto.jl b/notebooks/01_first_steps/notebook.pluto.jl index 76fb558..6bfdffb 100644 --- a/notebooks/01_first_steps/notebook.pluto.jl +++ b/notebooks/01_first_steps/notebook.pluto.jl @@ -1,40 +1,9 @@ ### A Pluto.jl notebook ### -# v0.19.25 +# v0.16.0 using Markdown using InteractiveUtils -# ╔═╡ 4474fd86-9496-44c7-9e54-3f7b3ca87ecb -begin - using Pkg - Pkg.activate(joinpath(@__DIR__, "..", "..")) - Pkg.instantiate() -end - -# ╔═╡ cc2371a4-26be-4325-a38a-beb5c7157b57 -using Random - -# ╔═╡ 3a2fb476-5685-40aa-9b21-6d4eb642d87e -using Statistics - -# ╔═╡ c0df6812-9717-454b-a8b6-f7ff516dedc4 -begin - using Distributions - - N = 1000 - samples = rand(Normal(), N); # equivalent to Julia's built-in `randn(d)` - samples = (samples).^2; # square element-wise -end - -# ╔═╡ 4d822ecd-c6da-4bcb-b10e-562ce21caa04 -using PkgOnlineHelp - -# ╔═╡ 912dc07c-b98e-45fb-a02f-27b6c05e4d02 -begin - using CairoMakie - CairoMakie.activate!(type = "png") -end - # ╔═╡ 142b62e1-364e-45d6-9bca-7c69b794f8ce md"# Tutorial 1" @@ -62,6 +31,13 @@ The following block of code installs some third-party Julia packges. Beginners d to understand it. """ +# ╔═╡ 4474fd86-9496-44c7-9e54-3f7b3ca87ecb +begin + using Pkg + Pkg.activate(joinpath(@__DIR__, "..", "..")) + Pkg.instantiate() +end + # ╔═╡ 96774cd2-130c-4455-ba1f-6363f43ec697 md"## Julia is a calculator:" @@ -378,9 +354,15 @@ rand(['a', 'b', 'c'], 10) # 10 random elements from a vector # ╔═╡ b87a9e77-1e26-4a1f-8a60-2e0214c059f5 md"Some standard libraries are needed to do more, for example:" +# ╔═╡ cc2371a4-26be-4325-a38a-beb5c7157b57 +using Random + # ╔═╡ 9ac1f1af-bfdc-4499-81f5-507803ea9ed6 randstring(30) +# ╔═╡ 3a2fb476-5685-40aa-9b21-6d4eb642d87e +using Statistics + # ╔═╡ 974b70c1-2df2-40c6-b98c-3df1f31879bf begin y = rand(30) @@ -399,6 +381,15 @@ For sampling from more general distributions we need Distributions.jl package which is not part of the standard library. """ +# ╔═╡ c0df6812-9717-454b-a8b6-f7ff516dedc4 +begin + using Distributions + + N = 1000 + samples = rand(Normal(), N); # equivalent to Julia's built-in `randn(d)` + samples = (samples).^2; # square element-wise +end + # ╔═╡ f618c762-a936-433f-81e1-74ef03c2e79e g = fit(Gamma, samples) @@ -411,6 +402,9 @@ median(g) # ╔═╡ bcce5556-9e92-4dfa-97e3-6677afc6ca9f pdf(g, 1) +# ╔═╡ 4d822ecd-c6da-4bcb-b10e-562ce21caa04 +using PkgOnlineHelp + # ╔═╡ 60aef579-9404-4272-8f78-ab549ef1544e md"Uncomment and execute the next line to launch Distribution documentation in your browser:" @@ -420,7 +414,13 @@ md"Uncomment and execute the next line to launch Distribution documentation in y # ╔═╡ 2a96dfa7-cf5a-4e7f-8704-dbab8e09b4f1 md"## Plotting" -# ╔═╡ 6439f7a8-34f3-4a01-bea4-3d467d48781c +# ╔═╡ 912dc07c-b98e-45fb-a02f-27b6c05e4d02 +begin + using CairoMakie + CairoMakie.activate!(type = "png") +end + +# ╔═╡ 8c61ce1f-4ef7-47c9-bea4-3d467d48781c begin f(x) = pdf(g, x) @@ -428,7 +428,7 @@ begin ys = f.(xs) # apply f element-wise to xs fig = lines(xs, ys) - hist!(samples, normalization=:pdf, bins=40, alpha=0.4) + hist!(samples, normalization=:pdf, bins=40, color=(:darkblue, 0.4)) current_figure() end @@ -472,7 +472,7 @@ md"The following shows that named tuples share some behaviour with dictionaries: # ╔═╡ cb2c42bf-21b5-4e04-9727-ed822e4fd85d begin - t = (x = 1, y = "cat", z = 4.5) + t = (x = 1, y = "cat", z = 4.5 keys(t) end @@ -607,7 +607,7 @@ md""" # ╠═a35c0fe8-afc4-4eaf-a8a4-a53f5149481e # ╟─2a96dfa7-cf5a-4e7f-8704-dbab8e09b4f1 # ╠═912dc07c-b98e-45fb-a02f-27b6c05e4d02 -# ╠═6439f7a8-34f3-4a01-bea4-3d467d48781c +# ╠═8c61ce1f-4ef7-47c9-bea4-3d467d48781c # ╠═bf64e629-d0bc-4e89-97c5-2979af8a507d # ╟─a7f061b8-d1ed-4b1f-b639-63c76c72c513 # ╟─19dae74b-24bd-428f-8f5a-e1ee9eb5c15c diff --git a/notebooks/01_first_steps/notebook.unexecuted.ipynb b/notebooks/01_first_steps/notebook.unexecuted.ipynb index b20130e..1f5e51b 100644 --- a/notebooks/01_first_steps/notebook.unexecuted.ipynb +++ b/notebooks/01_first_steps/notebook.unexecuted.ipynb @@ -980,7 +980,7 @@ "ys = f.(xs) # apply f element-wise to xs\n", "\n", "fig = lines(xs, ys)\n", - "hist!(samples, normalization=:pdf, bins=40, alpha=0.4)\n", + "hist!(samples, normalization=:pdf, bins=40, color=(:darkblue, 0.4))\n", "current_figure()" ], "metadata": {}, @@ -1101,11 +1101,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/02_dataframes/notebook.ipynb b/notebooks/02_dataframes/notebook.ipynb index 1eace82..9581782 100644 --- a/notebooks/02_dataframes/notebook.ipynb +++ b/notebooks/02_dataframes/notebook.ipynb @@ -1357,11 +1357,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/02_dataframes/notebook.pluto.jl b/notebooks/02_dataframes/notebook.pluto.jl index ea502b1..f32fe0c 100644 --- a/notebooks/02_dataframes/notebook.pluto.jl +++ b/notebooks/02_dataframes/notebook.pluto.jl @@ -1,24 +1,9 @@ ### A Pluto.jl notebook ### -# v0.19.25 +# v0.16.0 using Markdown using InteractiveUtils -# ╔═╡ 4474fd86-9496-44c7-a6bf-47194d7e8e12 -begin - using Pkg - Pkg.activate(joinpath(@__DIR__, "..", "..")) - Pkg.instantiate() -end - -# ╔═╡ 231ecead-09a5-4ac7-9873-1b1430e635cc -begin - using OpenML - - table = OpenML.load(42638); # Titanic data set - typeof(table) -end - # ╔═╡ 7775b104-385d-4721-9bca-7c69b794f8ce md"# Tutorial 2" @@ -42,6 +27,13 @@ DataFrames.jl **cheatsheets**: # ╔═╡ 40956165-26d0-4d61-8af5-148d95ea2900 md"## Setup" +# ╔═╡ 4474fd86-9496-44c7-a6bf-47194d7e8e12 +begin + using Pkg + Pkg.activate(joinpath(@__DIR__, "..", "..")) + Pkg.instantiate() +end + # ╔═╡ e9994202-88fc-4bab-828a-4cc485149963 md"## A simple handmade data frame" @@ -61,12 +53,6 @@ columntable = ( married = [true, false, false], ) -# ╔═╡ aeb4f41d-2abe-4a3b-b1b3-dd47e367ba54 -begin - using DataFrames - dataframe = DataFrame(columntable) -end - # ╔═╡ 95df9fbb-9752-4500-95ea-2955abd45275 md""" One problem with such a table is that it's not a simple matter to grab a single row, or to @@ -74,6 +60,12 @@ filter rows (records) based on some criterion. For this we can convert our table `DataFrame` from the DataFrames.jl package: """ +# ╔═╡ aeb4f41d-2abe-4a3b-b1b3-dd47e367ba54 +begin + using DataFrames + dataframe = DataFrame(columntable) +end + # ╔═╡ 8f2fe8d6-1e0f-4e02-8d7e-8e449afd1c48 md"Now we can do things like this:" @@ -91,6 +83,14 @@ md"## Grabbing the Titanic dataset as a DataFrame" # ╔═╡ 368564ee-157f-44dc-bca8-7eec7950fd82 md"We'll be using [OpenML](https://www.openml.org/home) to grab datasets." +# ╔═╡ 231ecead-09a5-4ac7-9873-1b1430e635cc +begin + using OpenML + + table = OpenML.load(42638); # Titanic data set + typeof(table) +end + # ╔═╡ 7e19d8ea-14a4-4a2d-b43e-d0ebe87da176 md""" This is not a `DataFrame`. However, it can be converted to one in the same way we @@ -100,14 +100,6 @@ converted our named-tuple table: # ╔═╡ 943a5fd8-56fc-420e-9009-4cfb2012998f df = DataFrame(table); -# ╔═╡ ba1b1b96-46b0-4cf8-aa36-d2e8546da46a -begin - using Statistics # to get functions like `mean` and `std` - foo(v) = mean(abs.(v)) - d = describe(df, :mean, :median, foo => :mae) - first(d, 3) -end - # ╔═╡ 7fe10a23-640b-4bf5-abd3-cb77d7a79683 md"Lets' look the first few rows (observations) of `df`:" @@ -294,6 +286,14 @@ The following are all supported: # ╔═╡ ffaa27c3-5c5c-44d4-910b-f8a9a217eff2 md"You can also pass custom function, together with a name for the generated column by passing a pair `function => :name`, as in" +# ╔═╡ ba1b1b96-46b0-4cf8-aa36-d2e8546da46a +begin + using Statistics # to get functions like `mean` and `std` + foo(v) = mean(abs.(v)) + d = describe(df, :mean, :median, foo => :mae) + first(d, 3) +end + # ╔═╡ 3e50f94b-94c4-4fb3-88a1-a2bf91434413 md"Note that the object returned by `describe` is itself a `DataFrame`:" diff --git a/notebooks/02_dataframes/notebook.unexecuted.ipynb b/notebooks/02_dataframes/notebook.unexecuted.ipynb index 4f1e7c4..5b226c2 100644 --- a/notebooks/02_dataframes/notebook.unexecuted.ipynb +++ b/notebooks/02_dataframes/notebook.unexecuted.ipynb @@ -920,11 +920,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/03_machine_learning/notebook.ipynb b/notebooks/03_machine_learning/notebook.ipynb index 88e35eb..b172be3 100644 --- a/notebooks/03_machine_learning/notebook.ipynb +++ b/notebooks/03_machine_learning/notebook.ipynb @@ -28,9 +28,9 @@ "cell_type": "markdown", "source": [ "For other MLJ learning resources see the [Learning\n", - "MLJ](https://alan-turing-institute.github.io/MLJ.jl/dev/learning_mlj/)\n", + "MLJ](https://JuliaAI.github.io/MLJ.jl/dev/learning_mlj/)\n", "section of the\n", - "[manual](https://alan-turing-institute.github.io/MLJ.jl/dev/)." + "[manual](https://JuliaAI.github.io/MLJ.jl/dev/)." ], "metadata": {} }, @@ -68,15 +68,7 @@ "metadata": {} }, { - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ Info: Precompiling MLJ [add582a8-e3ab-11e8-2d5e-e98b27df1bc7]\n" - ] - } - ], + "outputs": [], "cell_type": "code", "source": [ "using MLJ\n", @@ -353,7 +345,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "Dict{Union{Missing, CategoricalArrays.CategoricalValue{String, UInt32}}, Int64} with 148 entries:\n \"C104\" => 1\n \"E50\" => 1\n \"D20\" => 2\n \"E58\" => 1\n \"C46\" => 1\n \"D37\" => 1\n \"B96 B98\" => 4\n \"C86\" => 1\n \"C106\" => 1\n \"A5\" => 1\n \"C52\" => 2\n \"B19\" => 1\n \"C65\" => 2\n \"C30\" => 1\n \"D48\" => 1\n missing => 687\n \"B42\" => 1\n \"C128\" => 1\n \"E38\" => 1\n ⋮ => ⋮" + "text/plain": "Dict{Union{Missing, CategoricalArrays.CategoricalValue{String, UInt32}}, Int64} with 148 entries:\n \"C104\" => 1\n \"E50\" => 1\n \"D20\" => 2\n \"E58\" => 1\n \"C46\" => 1\n \"D37\" => 1\n \"B96 B98\" => 4\n \"C86\" => 1\n \"C106\" => 1\n \"A5\" => 1\n \"C52\" => 2\n \"B19\" => 1\n \"C65\" => 2\n \"C30\" => 1\n \"D48\" => 1\n \"B42\" => 1\n \"C128\" => 1\n \"E38\" => 1\n \"E10\" => 1\n ⋮ => ⋮" }, "metadata": {}, "execution_count": 12 @@ -532,7 +524,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "untrained Machine; caches model-specific representations of data\n model: FillImputer(features = Symbol[], …)\n args: \n 1:\tSource @375 ⏎ ScientificTypesBase.Table{Union{AbstractVector{ScientificTypesBase.Continuous}, AbstractVector{ScientificTypesBase.Count}, AbstractVector{ScientificTypesBase.Multiclass{3}}, AbstractVector{ScientificTypesBase.Textual}, AbstractVector{Union{Missing, ScientificTypesBase.Multiclass{3}}}, AbstractVector{ScientificTypesBase.Multiclass{2}}}}\n" + "text/plain": "untrained Machine; caches model-specific representations of data\n model: FillImputer(features = Symbol[], …)\n args: \n 1:\tSource @296 ⏎ ScientificTypesBase.Table{Union{AbstractVector{ScientificTypesBase.Continuous}, AbstractVector{ScientificTypesBase.Count}, AbstractVector{ScientificTypesBase.Multiclass{3}}, AbstractVector{ScientificTypesBase.Textual}, AbstractVector{Union{Missing, ScientificTypesBase.Multiclass{3}}}, AbstractVector{ScientificTypesBase.Multiclass{2}}}}\n" }, "metadata": {}, "execution_count": 18 @@ -719,8 +711,8 @@ { "output_type": "execute_result", "data": { - "text/plain": "\u001b[36m mutable struct DecisionTreeClassifier <: MLJModelInterface.Probabilistic\u001b[39m\n\n A simple Decision Tree model for classification with support for Missing\n data, from the Beta Machine Learning Toolkit (BetaML).\n\n\u001b[1m Hyperparameters:\u001b[22m\n\u001b[1m ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\u001b[22m\n\n • \u001b[36mmax_depth::Int64\u001b[39m: The maximum depth the tree is allowed to reach.\n When this is reached the node is forced to become a leaf [def: \u001b[36m0\u001b[39m,\n i.e. no limits]\n\n • \u001b[36mmin_gain::Float64\u001b[39m: The minimum information gain to allow for a\n node's partition [def: \u001b[36m0\u001b[39m]\n\n • \u001b[36mmin_records::Int64\u001b[39m: The minimum number of records a node must\n holds to consider for a partition of it [def: \u001b[36m2\u001b[39m]\n\n • \u001b[36mmax_features::Int64\u001b[39m: The maximum number of (random) features to\n consider at each partitioning [def: \u001b[36m0\u001b[39m, i.e. look at all features]\n\n • \u001b[36msplitting_criterion::Function\u001b[39m: This is the name of the function to\n be used to compute the information gain of a specific partition.\n This is done by measuring the difference betwwen the \"impurity\" of\n the labels of the parent node with those of the two child nodes,\n weighted by the respective number of items. [def: \u001b[36mgini\u001b[39m]. Either\n \u001b[36mgini\u001b[39m, \u001b[36mentropy\u001b[39m or a custom function. It can also be an anonymous\n function.\n\n • \u001b[36mrng::Random.AbstractRNG\u001b[39m: A Random Number Generator to be used in\n stochastic parts of the code [deafult: \u001b[36mRandom.GLOBAL_RNG\u001b[39m]\n\n\u001b[1m Example:\u001b[22m\n\u001b[1m ≡≡≡≡≡≡≡≡≡≡\u001b[22m\n\n\u001b[36m \u001b[39m\n\u001b[36m julia> using MLJ\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> X, y = @load_iris;\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> modelType = @load DecisionTreeClassifier pkg = \"BetaML\" verbosity=0\u001b[39m\n\u001b[36m BetaML.Trees.DecisionTreeClassifier\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> model = modelType()\u001b[39m\n\u001b[36m DecisionTreeClassifier(\u001b[39m\n\u001b[36m max_depth = 0, \u001b[39m\n\u001b[36m min_gain = 0.0, \u001b[39m\n\u001b[36m min_records = 2, \u001b[39m\n\u001b[36m max_features = 0, \u001b[39m\n\u001b[36m splitting_criterion = BetaML.Utils.gini, \u001b[39m\n\u001b[36m rng = Random._GLOBAL_RNG())\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> (fitResults, cache, report) = MLJ.fit(model, 0, X, y);\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> class_est = predict(model, fitResults, X)\u001b[39m\n\u001b[36m 150-element CategoricalDistributions.UnivariateFiniteVector{Multiclass{3}, String, UInt32, Float64}:\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\u001b[39m\n\u001b[36m ⋮\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\u001b[39m", - "text/markdown": "```julia\nmutable struct DecisionTreeClassifier <: MLJModelInterface.Probabilistic\n```\n\nA simple Decision Tree model for classification with support for Missing data, from the Beta Machine Learning Toolkit (BetaML).\n\n# Hyperparameters:\n\n * `max_depth::Int64`: The maximum depth the tree is allowed to reach. When this is reached the node is forced to become a leaf [def: `0`, i.e. no limits]\n * `min_gain::Float64`: The minimum information gain to allow for a node's partition [def: `0`]\n * `min_records::Int64`: The minimum number of records a node must holds to consider for a partition of it [def: `2`]\n * `max_features::Int64`: The maximum number of (random) features to consider at each partitioning [def: `0`, i.e. look at all features]\n * `splitting_criterion::Function`: This is the name of the function to be used to compute the information gain of a specific partition. This is done by measuring the difference betwwen the \"impurity\" of the labels of the parent node with those of the two child nodes, weighted by the respective number of items. [def: `gini`]. Either `gini`, `entropy` or a custom function. It can also be an anonymous function.\n * `rng::Random.AbstractRNG`: A Random Number Generator to be used in stochastic parts of the code [deafult: `Random.GLOBAL_RNG`]\n\n# Example:\n\n```julia\n\njulia> using MLJ\n\njulia> X, y = @load_iris;\n\njulia> modelType = @load DecisionTreeClassifier pkg = \"BetaML\" verbosity=0\nBetaML.Trees.DecisionTreeClassifier\n\njulia> model = modelType()\nDecisionTreeClassifier(\n max_depth = 0, \n min_gain = 0.0, \n min_records = 2, \n max_features = 0, \n splitting_criterion = BetaML.Utils.gini, \n rng = Random._GLOBAL_RNG())\n\njulia> (fitResults, cache, report) = MLJ.fit(model, 0, X, y);\n\njulia> class_est = predict(model, fitResults, X)\n150-element CategoricalDistributions.UnivariateFiniteVector{Multiclass{3}, String, UInt32, Float64}:\n UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\n UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\n UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\n ⋮\n UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\n UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\n UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\n```\n" + "text/plain": "\u001b[36m mutable struct DecisionTreeClassifier <: MLJModelInterface.Probabilistic\u001b[39m\n\n A simple Decision Tree model for classification with support for Missing\n data, from the Beta Machine Learning Toolkit (BetaML).\n\n\u001b[1m Hyperparameters:\u001b[22m\n\u001b[1m ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\u001b[22m\n\n • \u001b[36mmax_depth::Int64\u001b[39m: The maximum depth the tree is allowed to reach.\n When this is reached the node is forced to become a leaf [def: \u001b[36m0\u001b[39m,\n i.e. no limits]\n\n • \u001b[36mmin_gain::Float64\u001b[39m: The minimum information gain to allow for a\n node's partition [def: \u001b[36m0\u001b[39m]\n\n • \u001b[36mmin_records::Int64\u001b[39m: The minimum number of records a node must\n holds to consider for a partition of it [def: \u001b[36m2\u001b[39m]\n\n • \u001b[36mmax_features::Int64\u001b[39m: The maximum number of (random) features to\n consider at each partitioning [def: \u001b[36m0\u001b[39m, i.e. look at all features]\n\n • \u001b[36msplitting_criterion::Function\u001b[39m: This is the name of the function to\n be used to compute the information gain of a specific partition.\n This is done by measuring the difference betwwen the \"impurity\" of\n the labels of the parent node with those of the two child nodes,\n weighted by the respective number of items. [def: \u001b[36mgini\u001b[39m]. Either\n \u001b[36mgini\u001b[39m, \u001b[36mentropy\u001b[39m or a custom function. It can also be an anonymous\n function.\n\n • \u001b[36mrng::Random.AbstractRNG\u001b[39m: A Random Number Generator to be used in\n stochastic parts of the code [deafult: \u001b[36mRandom.GLOBAL_RNG\u001b[39m]\n\n\u001b[1m Example:\u001b[22m\n\u001b[1m ≡≡≡≡≡≡≡≡\u001b[22m\n\n\u001b[36m julia> using MLJ\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> X, y = @load_iris;\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> modelType = @load DecisionTreeClassifier pkg = \"BetaML\" verbosity=0\u001b[39m\n\u001b[36m BetaML.Trees.DecisionTreeClassifier\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> model = modelType()\u001b[39m\n\u001b[36m DecisionTreeClassifier(\u001b[39m\n\u001b[36m max_depth = 0, \u001b[39m\n\u001b[36m min_gain = 0.0, \u001b[39m\n\u001b[36m min_records = 2, \u001b[39m\n\u001b[36m max_features = 0, \u001b[39m\n\u001b[36m splitting_criterion = BetaML.Utils.gini, \u001b[39m\n\u001b[36m rng = Random._GLOBAL_RNG())\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> mach = machine(model, X, y);\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> fit!(mach);\u001b[39m\n\u001b[36m [ Info: Training machine(DecisionTreeClassifier(max_depth = 0, …), …).\u001b[39m\n\u001b[36m \u001b[39m\n\u001b[36m julia> cat_est = predict(mach, X)\u001b[39m\n\u001b[36m 150-element CategoricalDistributions.UnivariateFiniteVector{Multiclass{3}, String, UInt32, Float64}:\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\u001b[39m\n\u001b[36m ⋮\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\u001b[39m\n\u001b[36m UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\u001b[39m", + "text/markdown": "```julia\nmutable struct DecisionTreeClassifier <: MLJModelInterface.Probabilistic\n```\n\nA simple Decision Tree model for classification with support for Missing data, from the Beta Machine Learning Toolkit (BetaML).\n\n# Hyperparameters:\n\n * `max_depth::Int64`: The maximum depth the tree is allowed to reach. When this is reached the node is forced to become a leaf [def: `0`, i.e. no limits]\n * `min_gain::Float64`: The minimum information gain to allow for a node's partition [def: `0`]\n * `min_records::Int64`: The minimum number of records a node must holds to consider for a partition of it [def: `2`]\n * `max_features::Int64`: The maximum number of (random) features to consider at each partitioning [def: `0`, i.e. look at all features]\n * `splitting_criterion::Function`: This is the name of the function to be used to compute the information gain of a specific partition. This is done by measuring the difference betwwen the \"impurity\" of the labels of the parent node with those of the two child nodes, weighted by the respective number of items. [def: `gini`]. Either `gini`, `entropy` or a custom function. It can also be an anonymous function.\n * `rng::Random.AbstractRNG`: A Random Number Generator to be used in stochastic parts of the code [deafult: `Random.GLOBAL_RNG`]\n\n# Example:\n\n```julia\njulia> using MLJ\n\njulia> X, y = @load_iris;\n\njulia> modelType = @load DecisionTreeClassifier pkg = \"BetaML\" verbosity=0\nBetaML.Trees.DecisionTreeClassifier\n\njulia> model = modelType()\nDecisionTreeClassifier(\n max_depth = 0, \n min_gain = 0.0, \n min_records = 2, \n max_features = 0, \n splitting_criterion = BetaML.Utils.gini, \n rng = Random._GLOBAL_RNG())\n\njulia> mach = machine(model, X, y);\n\njulia> fit!(mach);\n[ Info: Training machine(DecisionTreeClassifier(max_depth = 0, …), …).\n\njulia> cat_est = predict(mach, X)\n150-element CategoricalDistributions.UnivariateFiniteVector{Multiclass{3}, String, UInt32, Float64}:\n UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\n UnivariateFinite{Multiclass{3}}(setosa=>1.0, versicolor=>0.0, virginica=>0.0)\n ⋮\n UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\n UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\n UnivariateFinite{Multiclass{3}}(setosa=>0.0, versicolor=>0.0, virginica=>1.0)\n```\n" }, "metadata": {}, "execution_count": 25 @@ -740,9 +732,7 @@ "output_type": "stream", "text": [ "[ Info: For silent loading, specify `verbosity=0`. \n", - "import BetaML[ Info: Precompiling BetaML [024491cd-cc6b-443e-8034-08ea7eb7db2b]\n", - "[ Info: Precompiling ZygoteColorsExt [e68c091a-8ea5-5ca7-be4f-380657d4ad79]\n", - " ✔\n" + "import BetaML ✔\n" ] }, { @@ -848,7 +838,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "untrained Machine; caches model-specific representations of data\n model: DecisionTreeClassifier(max_depth = 0, …)\n args: \n 1:\tSource @807 ⏎ ScientificTypesBase.Table{Union{AbstractVector{ScientificTypesBase.Continuous}, AbstractVector{ScientificTypesBase.Count}, AbstractVector{ScientificTypesBase.Multiclass{2}}, AbstractVector{ScientificTypesBase.Multiclass{3}}, AbstractVector{ScientificTypesBase.Textual}}}\n 2:\tSource @909 ⏎ AbstractVector{ScientificTypesBase.Multiclass{2}}\n" + "text/plain": "untrained Machine; caches model-specific representations of data\n model: DecisionTreeClassifier(max_depth = 0, …)\n args: \n 1:\tSource @201 ⏎ ScientificTypesBase.Table{Union{AbstractVector{ScientificTypesBase.Continuous}, AbstractVector{ScientificTypesBase.Count}, AbstractVector{ScientificTypesBase.Multiclass{2}}, AbstractVector{ScientificTypesBase.Multiclass{3}}, AbstractVector{ScientificTypesBase.Textual}}}\n 2:\tSource @746 ⏎ AbstractVector{ScientificTypesBase.Multiclass{2}}\n" }, "metadata": {}, "execution_count": 29 @@ -880,7 +870,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "trained Machine; caches model-specific representations of data\n model: DecisionTreeClassifier(max_depth = 0, …)\n args: \n 1:\tSource @807 ⏎ ScientificTypesBase.Table{Union{AbstractVector{ScientificTypesBase.Continuous}, AbstractVector{ScientificTypesBase.Count}, AbstractVector{ScientificTypesBase.Multiclass{2}}, AbstractVector{ScientificTypesBase.Multiclass{3}}, AbstractVector{ScientificTypesBase.Textual}}}\n 2:\tSource @909 ⏎ AbstractVector{ScientificTypesBase.Multiclass{2}}\n" + "text/plain": "trained Machine; caches model-specific representations of data\n model: DecisionTreeClassifier(max_depth = 0, …)\n args: \n 1:\tSource @201 ⏎ ScientificTypesBase.Table{Union{AbstractVector{ScientificTypesBase.Continuous}, AbstractVector{ScientificTypesBase.Count}, AbstractVector{ScientificTypesBase.Multiclass{2}}, AbstractVector{ScientificTypesBase.Multiclass{3}}, AbstractVector{ScientificTypesBase.Textual}}}\n 2:\tSource @746 ⏎ AbstractVector{ScientificTypesBase.Multiclass{2}}\n" }, "metadata": {}, "execution_count": 30 @@ -1033,7 +1023,7 @@ "List all performance measures with `measures()`. Naturally, MLJ\n", "includes functions to automate this kind of performance evaluation,\n", "but this is beyond the scope of this tutorial. See, eg,\n", - "[here](https://alan-turing-institute.github.io/MLJ.jl/dev/getting_started/#Getting-Started)." + "[here](https://JuliaAI.github.io/MLJ.jl/dev/getting_started/#Getting-Started)." ], "metadata": {} }, @@ -1048,7 +1038,7 @@ "cell_type": "markdown", "source": [ "Some suggestions for next steps are\n", - "[here](https://alan-turing-institute.github.io/MLJ.jl/dev/getting_started/#Getting-Started)." + "[here](https://JuliaAI.github.io/MLJ.jl/dev/getting_started/#Getting-Started)." ], "metadata": {} }, @@ -1068,11 +1058,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/03_machine_learning/notebook.jl b/notebooks/03_machine_learning/notebook.jl index 0828024..ca9642d 100644 --- a/notebooks/03_machine_learning/notebook.jl +++ b/notebooks/03_machine_learning/notebook.jl @@ -8,9 +8,9 @@ # deep-learning). # For other MLJ learning resources see the [Learning -# MLJ](https://alan-turing-institute.github.io/MLJ.jl/dev/learning_mlj/) +# MLJ](https://JuliaAI.github.io/MLJ.jl/dev/learning_mlj/) # section of the -# [manual](https://alan-turing-institute.github.io/MLJ.jl/dev/). +# [manual](https://JuliaAI.github.io/MLJ.jl/dev/). # ## Activate package environment @@ -239,9 +239,9 @@ accuracy(yhat, y_test) # List all performance measures with `measures()`. Naturally, MLJ # includes functions to automate this kind of performance evaluation, # but this is beyond the scope of this tutorial. See, eg, -# [here](https://alan-turing-institute.github.io/MLJ.jl/dev/getting_started/#Getting-Started). +# [here](https://JuliaAI.github.io/MLJ.jl/dev/getting_started/#Getting-Started). # ## Learning more # Some suggestions for next steps are -# [here](https://alan-turing-institute.github.io/MLJ.jl/dev/getting_started/#Getting-Started). +# [here](https://JuliaAI.github.io/MLJ.jl/dev/getting_started/#Getting-Started). diff --git a/notebooks/03_machine_learning/notebook.pluto.jl b/notebooks/03_machine_learning/notebook.pluto.jl index 41da394..2f7505f 100644 --- a/notebooks/03_machine_learning/notebook.pluto.jl +++ b/notebooks/03_machine_learning/notebook.pluto.jl @@ -1,22 +1,9 @@ ### A Pluto.jl notebook ### -# v0.19.25 +# v0.16.0 using Markdown using InteractiveUtils -# ╔═╡ 4474fd86-9496-44c7-a6bf-47194d7e8e12 -begin - using Pkg - Pkg.activate(joinpath(@__DIR__, "..", "..")) - Pkg.instantiate() -end - -# ╔═╡ 86f5ae82-8207-416e-9e54-3f7b3ca87ecb -begin - using MLJ - import DataFrames -end - # ╔═╡ 5dad6a5d-e6e9-4ea0-9bca-7c69b794f8ce md"# Tutorial 3" @@ -33,20 +20,33 @@ MLJ is a *multi-paradigm* machine learning toolbox (i.e., not just deep-learning). """ -# ╔═╡ b04c4790-59e0-42a3-af2a-25235e544a31 +# ╔═╡ 8aee3b0f-128f-444f-af2a-25235e544a31 md""" For other MLJ learning resources see the [Learning -MLJ](https://alan-turing-institute.github.io/MLJ.jl/dev/learning_mlj/) +MLJ](https://JuliaAI.github.io/MLJ.jl/dev/learning_mlj/) section of the -[manual](https://alan-turing-institute.github.io/MLJ.jl/dev/). +[manual](https://JuliaAI.github.io/MLJ.jl/dev/). """ # ╔═╡ 1734e972-19e8-4d40-8af5-148d95ea2900 md"## Activate package environment" +# ╔═╡ 4474fd86-9496-44c7-a6bf-47194d7e8e12 +begin + using Pkg + Pkg.activate(joinpath(@__DIR__, "..", "..")) + Pkg.instantiate() +end + # ╔═╡ 6f4d110c-7f0b-4e70-828a-4cc485149963 md"## Establishing correct data representation" +# ╔═╡ 86f5ae82-8207-416e-9e54-3f7b3ca87ecb +begin + using MLJ + import DataFrames +end + # ╔═╡ e5885e24-b17b-471b-ba1f-6363f43ec697 md""" A ["scientific @@ -367,21 +367,21 @@ md"Or using a deterministic measure:" # ╔═╡ e5134375-cde5-41de-9625-01172c4a0081 accuracy(yhat, y_test) -# ╔═╡ 9fbdd706-c10a-4634-af4f-11c7de9e21dd +# ╔═╡ a27faca1-5a03-41f5-af4f-11c7de9e21dd md""" List all performance measures with `measures()`. Naturally, MLJ includes functions to automate this kind of performance evaluation, but this is beyond the scope of this tutorial. See, eg, -[here](https://alan-turing-institute.github.io/MLJ.jl/dev/getting_started/#Getting-Started). +[here](https://JuliaAI.github.io/MLJ.jl/dev/getting_started/#Getting-Started). """ # ╔═╡ 3e2e6de9-bfd4-4629-8dba-241d9b744683 md"## Learning more" -# ╔═╡ 72066eb3-9b46-4fa8-a6e5-2f0b4dca5c59 +# ╔═╡ 33aff020-66e0-4fa7-a6e5-2f0b4dca5c59 md""" Some suggestions for next steps are -[here](https://alan-turing-institute.github.io/MLJ.jl/dev/getting_started/#Getting-Started). +[here](https://JuliaAI.github.io/MLJ.jl/dev/getting_started/#Getting-Started). """ # ╔═╡ 135dac9b-0bd9-4e1d-8550-20498aa03ed0 @@ -395,7 +395,7 @@ md""" # ╟─5dad6a5d-e6e9-4ea0-9bca-7c69b794f8ce # ╟─33691746-74ed-425d-b795-033f6f2a0674 # ╟─aa49e638-95dc-4249-935f-ddf6a6bfbbdd -# ╟─b04c4790-59e0-42a3-af2a-25235e544a31 +# ╟─8aee3b0f-128f-444f-af2a-25235e544a31 # ╟─1734e972-19e8-4d40-8af5-148d95ea2900 # ╠═4474fd86-9496-44c7-a6bf-47194d7e8e12 # ╟─6f4d110c-7f0b-4e70-828a-4cc485149963 @@ -408,7 +408,7 @@ md""" # ╠═5c2ec910-6444-4c53-8514-99938a2932db # ╟─ddaf1934-1aba-4ede-a0de-1721c1bc2df2 # ╟─ca482134-299b-459a-bca8-7eec7950fd82 -# ╟─2d0de272-ed0a-4c6b-9873-1b1430e635cc +# ╠═2d0de272-ed0a-4c6b-9873-1b1430e635cc # ╟─96c58ce9-9b29-4c5e-b43e-d0ebe87da176 # ╠═9d2f0b19-2942-47ac-9009-4cfb2012998f # ╟─b90f3b7b-4de2-4a5c-abd3-cb77d7a79683 @@ -471,7 +471,7 @@ md""" # ╠═4fd67e05-c4d0-4858-9e90-09023d201062 # ╟─7f127360-5da1-4bee-b7bb-2f33ef765cc0 # ╠═e5134375-cde5-41de-9625-01172c4a0081 -# ╟─9fbdd706-c10a-4634-af4f-11c7de9e21dd +# ╟─a27faca1-5a03-41f5-af4f-11c7de9e21dd # ╟─3e2e6de9-bfd4-4629-8dba-241d9b744683 -# ╟─72066eb3-9b46-4fa8-a6e5-2f0b4dca5c59 +# ╟─33aff020-66e0-4fa7-a6e5-2f0b4dca5c59 # ╟─135dac9b-0bd9-4e1d-8550-20498aa03ed0 diff --git a/notebooks/03_machine_learning/notebook.unexecuted.ipynb b/notebooks/03_machine_learning/notebook.unexecuted.ipynb index 3e6eed2..e2f25bc 100644 --- a/notebooks/03_machine_learning/notebook.unexecuted.ipynb +++ b/notebooks/03_machine_learning/notebook.unexecuted.ipynb @@ -28,9 +28,9 @@ "cell_type": "markdown", "source": [ "For other MLJ learning resources see the [Learning\n", - "MLJ](https://alan-turing-institute.github.io/MLJ.jl/dev/learning_mlj/)\n", + "MLJ](https://JuliaAI.github.io/MLJ.jl/dev/learning_mlj/)\n", "section of the\n", - "[manual](https://alan-turing-institute.github.io/MLJ.jl/dev/)." + "[manual](https://JuliaAI.github.io/MLJ.jl/dev/)." ], "metadata": {} }, @@ -699,7 +699,7 @@ "List all performance measures with `measures()`. Naturally, MLJ\n", "includes functions to automate this kind of performance evaluation,\n", "but this is beyond the scope of this tutorial. See, eg,\n", - "[here](https://alan-turing-institute.github.io/MLJ.jl/dev/getting_started/#Getting-Started)." + "[here](https://JuliaAI.github.io/MLJ.jl/dev/getting_started/#Getting-Started)." ], "metadata": {} }, @@ -714,7 +714,7 @@ "cell_type": "markdown", "source": [ "Some suggestions for next steps are\n", - "[here](https://alan-turing-institute.github.io/MLJ.jl/dev/getting_started/#Getting-Started)." + "[here](https://JuliaAI.github.io/MLJ.jl/dev/getting_started/#Getting-Started)." ], "metadata": {} }, @@ -734,11 +734,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/99_solutions_to_exercises/notebook.ipynb b/notebooks/99_solutions_to_exercises/notebook.ipynb index 28f8dda..18a1962 100644 --- a/notebooks/99_solutions_to_exercises/notebook.ipynb +++ b/notebooks/99_solutions_to_exercises/notebook.ipynb @@ -142,14 +142,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "mu = -0.03877735367596183\n", - "var = 1.8393888194699048\n" + "mu = 0.04613526193186938\n", + "var = 1.8731469207202927\n" ] }, { "output_type": "execute_result", "data": { - "text/plain": "1.8393888194699048" + "text/plain": "1.8731469207202927" }, "metadata": {}, "execution_count": 4 @@ -178,154 +178,111 @@ "output_type": "execute_result", "data": { "text/plain": "Figure()", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd4BU5aH38XPO9LazfRd2F3bpIoJUARVU0l8T9cYQFdFojESjqa++Jrnm6k28SbwplmtiQaMBLIl61VgSJVZAQClSpMMubO+7s1NPe//AECQIzHJmninfz19h9uzMD7M78+N5nvM8smmaEgAAAKyjiA4AAACQayhYAAAAFqNgAQAAWIyCBQAAYDEKFgAAgMUoWAAAABajYAEAAFiMggUAAGAxChYAAIDFKFgAAAAWo2ABAABYjIIFAABgMQoWAACAxShYAAAAFrOLDvAxd91118aNG2tra0UHAQAA+Eh9ff3pp5/+3e9+98S/JbNGsDZu3FhfXy86BdInFAoZhiE6BXJHNBpNJBKiUyB3qKoaiUREp4B49fX1GzduTOpbMmsEq7a2tra29rbbbhMdBGnS3NxcXl5ut2fWzyGyV3d3t9Pp9Pv9ooMgR0QikUgkUlpaKjoIBBtEM8msESwAAIAcQMECAACwGAULAADAYhQsAAAAi1GwAAAALEbBAgAAsBgFCwAAwGIULAAAAItRsAAAACxGwQIAALAYBQsAAMBiFCwAAACLUbAAAAAsRsECAACwGAULAADAYhQsAAAAi1GwAAAALEbBAgAAsBgFCwAAwGIULAAAAItRsAAAACxGwQIAALCYXXQAADnumU0taXutgYEBu93udocO/rEi4Dqrrjhtrw4Ah1CwAKSQaUo///uutL2cpmmKoijKR2PzM4cXUbAACMEUIQAAgMUoWAAAABajYAEAAFiMggUAAGAxChYAAIDFKFgAAAAWo2ABAABYjIIFAABgMQoWAACAxShYAAAAFqNgAQAAWIyCBQAAYDEKFgAAgMUoWAAAABajYAEAAFiMggUAAGAxChYAAIDFKFgAAAAWo2ABAABYjIIFAABgMQoWAACAxShYAAAAFqNgAQAAWIyCBQAAYDEKFgAAgMXsg/u2PXv27Nq1a/LkyRUVFZ90TTQa/eCDDzo7O8eMGTNmzJjBJgQAAMgySY9gxePxCy64YNSoURdddFFlZeWtt9561MvWrl07bty4s846a+HChWPHjr3wwgsTicRJpwUAAMgCSRes22+//Y033li1alU4HH7kkUfuuOOO559//ohrTNO88sorR44c2dnZ2dPT89prr7388st33323RZkBAAAyWnIFS9f1Rx99dNGiRbNmzVIU5aqrrpozZ84jjzxyxGX79+/fvn37LbfcUlhYKEnSpz71qTPPPHPVqlWWpQYAAMhgyRWshoaGlpaWefPmHXpk3rx5/9qcAoHAn//855kzZx78o2EYHR0dI0aMOMmsAAAAWSG5Re6tra2SJB2+sL2ysrKrq0vTNLv9n09VXFx88cUXS5K0evXqF1988fXXX3e73d/+9rePeDbTNA3DOOIRWZaT/TsAAABklOQKVm9vryRJgUDg0COBQMA0zZ6enrKysn+9fv/+/StWrNixY8eoUaPC4fARX/3pT396++23H/7InDlzTj/99P379yeVCtmrra0tFosd3s6RY0xTSucNLrquy7KsKB+NzYdCId5PcDKi0Wg0Go1EIqKDQLC+vr5gMJjUtyT3wVZSUiJJUigUOvwlZVk+uNbqX82fP3/+/PnhcPjzn//8okWL3nnnncO/+pOf/OQnP/nJ4Y/cdtttkiQNGzYsqVTIXna7vby8nIKVw0xTcjrr0/ZymqYpinKoYAUCAd5PcDIikUgkEiktLRUdBIIl266kZNdgVVZWSv+YKDyotbW1rKzM4XAcftmGDRsefPDBQ3/0+XyXX3756tWrY7FYsvkAAACyTnIFa9iwYXV1dcuXLz/0yPLly+fMmXPEZQ0NDYsWLWpubj70SHNzs8/nc7vdJ5MVAAAgKyRXsGRZvvbaax944IEVK1ZomvbQQw+tXLnyuuuuO/jVBx988JJLLonH4+ecc055efk111yzb9++SCTy4osv3n333QsWLEhBfgAAgIyT9NqXm2++ub6+fu7cuTabTVGU++6777zzzjv4pbVr1z711FOLFy8uLCx88sknr7rqqoNbM8iyfPXVV995550WZwcAAMhISRcsRVHuv//+O++8c8+ePePHj3e5XIe+tHjx4sWLFx/83+eee+7u3bv37t0bCoVGjx5dUFBgWWQAAIDMNsi7twoKCiZPnnycp7bbOeMZAADkoaTPIgQAAMCxUbAAAAAsRsECAACwGAULAADAYhQsAAAAi1GwAAAALEbBAgAAsBgFCwAAwGIULAAAAItRsAAAACxGwQIAALAYBQsAAMBiFCwAAACLUbAAAAAsRsECAACwGAULAADAYhQsAAAAi1GwAAAA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", + "image/png": "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NicAmDLHkUx9H32cffTwnEtX9bqB8K61fd++eGVI52cWANBgzc1R/f3955133tatW03TPP/8888444yNGzfec88927Zt+9znPtfb2/vBD35wMl/n7//+7x988EEROe20084///yenp4XXnjhBz/4wc6dO7/0pS85jvOlL32pqf8hANCWRsqj/aK61hnmIQJ4zqlLU72J6I5ssT9XfuS1gTOWc0kIAA3W3ED49a9/fevWrSJyyy23fPjDH3Y/eN1115144onbt2//7Gc/e8kll0Sj0QN/kZ/97GduGvzUpz514403appW/zrnn3/+I4888rWvfe2CCy44/vjjm/mfAgBtaKxfNG7SL4pWKlSskVJ1Mp95/pFzb3n8dRH592e2v2Vhssl17UXXtTiLWAC0uyYGwnK5/N3vfldELr/88noaFJH58+d///vfP+ecc/r6+u66664JLwlvvvlmEenp6fnKV75ST4Mi0t3dfdttty1btsyyrPvvv59ACABT5Iz1i8bYR4+WuvL2NUOjP484sHpu/NFftj6zbUhr4Q8uZsTNBz96cut+PwBQoYkNQn/84x+Hh4dF5Morr3zDL5111lnd3d0i8qtf/WrCr7N69WoROeecc+Lx+Bt+adGiRYcddpiIPP300w2pGQCCY7hkVaxav2gH80XhVZ0RwzR0EalYzkjZUl0OALSbJgbCp556SkQMwzj55Df+dM00zXe9610i8uSTTx74iwwNDeXzeRE54ogj9vkJbkqsVCb1U0YAQF29XzQZN1t56wJMkZaM1Rqa0oWy2lIAoP00sWV048aNIjJ//vy/vtkTkSOPPFJENm/eXK1WDzAjNJFIuNeM+3zUcNeuXevWrRORww8/vFFlA0AwjO8XZb4oPC0VC+8ZKYtIJl9Z2B3j5xcA0EBNDIQ7d+4UkZ6enn3+am9vr4hUq9U9e/bs73NERNO0zs7Off6S4zjXXHNNsVjUdf3qq68+cDHpdHrCgm3bnvBzAN+xx1FdC1rqwP+Pj/WLGlpnWOnmHsdR+btPnl/K9Mn/nlOqsyuim4ZeseyK7eTK1c5Ii/7EOo7Dd07v42UOOEhN/Jaay+VktKXzr8VisfGfNlX9/f0f+chH7rnnHhH55Cc/OeEN4YwZMyb8mtu2bZtGJYDHZbPZkZGRfD6fzWZV14KWGixUy+X99tcN5Gr9oomIUamo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GFFfX5+fn79o0aIxY8b069dv//7969atS36eunjx4lWrVqW7TMg8iURi4sSJX3/9dY8ePV555ZVp06Y1NDRs3bp11apVra2t8+bN+/jjj9NdI3QfhjNILYEQIvL5558vXLjwyJEj7dpzcnIWLVr09ttv33TTTWkpDDLdsWPHHnnkkeQfoxebMmXKZ5991rY9PZAShjNIIYEQ4lJXV/f+++9XVVVVV1efOXOmpKRk2LBhTz31VGlpabpLg8x2/vz51atXf/LJJzU1NTk5OUOHDp03b96TTz5pS3roDIYzSBWBEAAAIFIWlQEAAIiUQAgAABApgRAAACBSAiEAAECkBEIAAIBICYQAAACREggBAAAiJRACAABESiAEAACIlEAIAAAQKYEQAAAgUgIhAABApARCAACASAmEAAAAkRIIAQAAIiUQAgAAREogBAAAiJRACAAAECmBEAAAIFICIQAAQKQEQgAAgEgJhAAAAJESCAEAACIlEAIAAERKIAQAAIiUQAgAABApgRAAACBSAiEAAECkBEIAAIBICYQAAACREggBAAAiJRACAABESiAEAACIlEAIAAAQqf8CBMch9pIj6fQAAAAASUVORK5CYII=", "image/svg+xml": [ "\n", - "\n", + "\n", "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - " \n", + "\n", + "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n" ] }, @@ -500,11 +457,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/99_solutions_to_exercises/notebook.pluto.jl b/notebooks/99_solutions_to_exercises/notebook.pluto.jl index 2183b07..a4c01b0 100644 --- a/notebooks/99_solutions_to_exercises/notebook.pluto.jl +++ b/notebooks/99_solutions_to_exercises/notebook.pluto.jl @@ -1,47 +1,9 @@ ### A Pluto.jl notebook ### -# v0.19.25 +# v0.16.0 using Markdown using InteractiveUtils -# ╔═╡ 4474fd86-9496-44c7-af2a-25235e544a31 -begin - using Pkg - Pkg.activate(joinpath(@__DIR__, "..", "..")) - Pkg.instantiate() -end - -# ╔═╡ 2da628f3-c301-4e4d-8514-99938a2932db -begin - using Distributions, Statistics - - samples1 = randn(1000); # or rand(Normal(), 1000) - samples2 = randn(1000); - - samples = samples1 .+ samples2; - - mu = mean(samples) - var = std(samples)^2 - - @show mu var -end - -# ╔═╡ f5122507-66bb-49ea-a0de-1721c1bc2df2 -begin - d = Normal(0, sqrt(2)) - f(x) = pdf(d, x) - - xs = -5:(0.1):5 - ys = f.(xs); - - using CairoMakie - CairoMakie.activate!(type = "svg") - - fig = hist(samples, normalization=:pdf) - lines!(xs, ys) - current_figure() -end - # ╔═╡ a2a09c0b-d3ec-4b46-9bca-7c69b794f8ce md"# Solutions to exercises" @@ -51,6 +13,13 @@ md"## Setup" # ╔═╡ 45740c4d-b789-45dc-935f-ddf6a6bfbbdd md"The following instantiates a package environment." +# ╔═╡ 4474fd86-9496-44c7-af2a-25235e544a31 +begin + using Pkg + Pkg.activate(joinpath(@__DIR__, "..", "..")) + Pkg.instantiate() +end + # ╔═╡ 19dae74b-24bd-428f-8af5-148d95ea2900 md"## Exercise 1" @@ -91,6 +60,37 @@ with zero mean and variance `2`. # ╔═╡ cd6e9fce-e54a-48c3-a949-7f3bd292fe31 md"### Solution" +# ╔═╡ 2da628f3-c301-4e4d-8514-99938a2932db +begin + using Distributions, Statistics + + samples1 = randn(1000); # or rand(Normal(), 1000) + samples2 = randn(1000); + + samples = samples1 .+ samples2; + + mu = mean(samples) + var = std(samples)^2 + + @show mu var +end + +# ╔═╡ f5122507-66bb-49ea-a0de-1721c1bc2df2 +begin + d = Normal(0, sqrt(2)) + f(x) = pdf(d, x) + + xs = -5:(0.1):5 + ys = f.(xs); + + using CairoMakie + CairoMakie.activate!(type = "svg") + + fig = hist(samples, normalization=:pdf) + lines!(xs, ys) + current_figure() +end + # ╔═╡ 4f939d4a-e802-4b7d-bca8-7eec7950fd82 md"## Exercise 3" diff --git a/notebooks/99_solutions_to_exercises/notebook.unexecuted.ipynb b/notebooks/99_solutions_to_exercises/notebook.unexecuted.ipynb index 32acd6b..8f0be67 100644 --- a/notebooks/99_solutions_to_exercises/notebook.unexecuted.ipynb +++ b/notebooks/99_solutions_to_exercises/notebook.unexecuted.ipynb @@ -253,11 +253,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/blank_notebook/notebook.pluto.jl b/notebooks/blank_notebook/notebook.pluto.jl index 8e8e691..8a295b1 100644 --- a/notebooks/blank_notebook/notebook.pluto.jl +++ b/notebooks/blank_notebook/notebook.pluto.jl @@ -1,15 +1,9 @@ ### A Pluto.jl notebook ### -# v0.16.0 +# v0.19.42 using Markdown using InteractiveUtils -# ╔═╡ e8d62020-dcf8-4e6f-9bca-7c69b794f8ce -md""" -The following block makes some third party packages available for loading, and ensurese -the *same* versions are loaded every time. Beginners do not need to understand it. -""" - # ╔═╡ 4474fd86-9496-44c7-b795-033f6f2a0674 begin using Pkg @@ -17,6 +11,12 @@ begin Pkg.instantiate() end +# ╔═╡ e8d62020-dcf8-4e6f-9bca-7c69b794f8ce +md""" +The following block makes some third party packages available for loading, and ensurese +the *same* versions are loaded every time. Beginners do not need to understand it. +""" + # ╔═╡ 135dac9b-0bd9-4e1d-935f-ddf6a6bfbbdd md""" --- diff --git a/notebooks/mandelbrot/mandelbrot.png b/notebooks/mandelbrot/mandelbrot.png index f643f00..6c2c2eb 100644 Binary files a/notebooks/mandelbrot/mandelbrot.png and b/notebooks/mandelbrot/mandelbrot.png differ diff --git a/notebooks/mandelbrot/notebook.ipynb b/notebooks/mandelbrot/notebook.ipynb index f9ea20f..ea68f24 100644 --- a/notebooks/mandelbrot/notebook.ipynb +++ b/notebooks/mandelbrot/notebook.ipynb @@ -106,7 +106,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.009532 seconds (5.33 k allocations: 343.746 KiB, 98.56% compilation time)\n" + " 0.009891 seconds (5.28 k allocations: 332.234 KiB, 98.28% compilation time)\n" ] }, { @@ -149,7 +149,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.000104 seconds (44 allocations: 2.141 KiB)\n" + " 0.000145 seconds (43 allocations: 2.109 KiB)\n" ] }, { @@ -190,7 +190,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.007159 seconds (5.85 k allocations: 385.504 KiB, 97.64% compilation time)\n" + " 0.035204 seconds (26.63 k allocations: 1.729 MiB, 99.02% compilation time)\n" ] }, { @@ -215,7 +215,10 @@ "output_type": "execute_result", "data": { "text/plain": "FigureAxisPlot()", - "image/png": "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0+rVq91FSPoVCoViseguQjKhUChs3rzZXYQsiLsIAQAis0UIABCZgAUAEJmABQAQmYAFABCZgJU3ly9fPnz48Mcff/z1119PTU0lvRyo79ixY4cPH056FVDd0NDQJ5988sMPPyS9EDJGwMqV77777r777uvo6HjmmWfuvvvuzs7OhT79Gxpv586d7733XtKrgEoTExOPP/74xo0be3p62tvbd+/enfSKyBIBK1defPHF0dHRwcHBs2fPfvPNNyMjI08//XTSi4LqLly4MDAw8NJLL+3fvz/ptUAVr7766ueffz4wMDA+Pt7b2/vaa6999NFHSS+KzBCw8uPixYuffvrpzp07b7/99hDCnXfeuXv37gMHDpw+fTrppUEV+/fv37Zt2/vvv18s+kFE6ly+fPndd9994YUXOjs7i8Xis88+29XV1dvbm/S6yAw/1/Lj/Pnzzz33XHd3d/nK+Ph4CGFycjK5RcGcnnjiiZGRkZGRkQ0bNiS9Fqj0/fffnzx5cvZP1O7u7oGBgQSXRLasSHoBRLNu3bq33367/OHx48ffeOONBx98cN26dQmuCiCLTp06FUKY/fOzvb399OnTk5OTK1Z466Q+DVY+ffDBB1u2bJmcnDQ7DLAIo6OjIYS2trbylba2tunp6bNnzya3KLJEwMqwzz77bMWMV155pXRxaGho69atO3bsePLJJ7/66qvbbrst2UVCmON7FdJszZo1IYSxsbHylXPnzhUKhdWrVye3KLJEz5lh999/f/n0oLVr14YQDh06tHXr1s7OziNHjphrIT2u/16FlGtvbw8zG4Ulp06dWrt27Q033JDcosgSASvDWltbN23aVP5wampq+/bt3d3dH374YaFQSHBhUKHiexXS79Zbb92wYUNfX9+jjz5autLX19fV1ZXsqsgQASs/Dhw4MDg4uG3btn379s2+/tRTT61atSqpVQFkUaFQeP755/fu3dvT0/PAAw+88847X375ZV9fX9LrIjMErPw4evRoCOH111+vuP7YY48JWAALtWvXruHh4YceeqilpaVYLL711lsPP/xw0osiMwrT09NJrwEAUur8+fNDQ0N33XXXypUrk14LWSJgAQBE5pgGAIDIBCwAgMgELACAyAQsAIDIBCwAgMgELACAyAQsAIDIBCwAgMgELACAyAQsAIDIBCwAgMgELACAyAQsAIDIBCwAgMgELACAyAQsAIDIBCwAgMj+D91Z03Yb81agAAAAAElFTkSuQmCC" + "image/png": "iVBORw0KGgoAAAANSUhEUgAABLAAAAOECAIAAAA+D1+tAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdf2wc533v+2dpUSLXXDmRZOVyRcfOiUBLkBKwsewggdokMArBsRPTRaSgrS6aCyEHVQSk7h8nLq4S9I9EB00KXDhFFfU2FeAi9jFiB0ds49QQkoOrExv+KdeCbUHSQg2imFqmtkRHWnpJkRR5/5hnvvOQ82g4uzu7MzvP+/WPH8/sj9kltcvZ72e/38Li4qICAAAAALinJ+0DAAAAAACkgxNCAAAAAHAUJ4QAAAAA4ChOCAEAAADAUZwQAgAAAICjOCEEAAAAAEdxQggAAAAAjuKEEAAAAAAcxQkhAAAAADiKE0IAAAAAcBQnhAAAAADgKE4IAQAAAMBRnBACAAAAgKM4IQQAAAAAR3FCCAAAAACO4oQQAAAAABzFCSEAAAAAOIoTQgAAAABwFCeEAAAAAOAoTggBAAAAwFGcEAIAAACAozghBAAAAABHcUIIAAAAAI7ihBAAAAAAHMUJIQAAAAA4ihNCAAAAAHAUJ4QAAAAA4ChOCAEAAADAUZwQAgAAAICjOCEEAAAAAEetSvsAUlAoFNI+BAAAAACIZXFxsX03ToUQAAAAABzlYoXQs6W8Pe1DAIAl+orr0j4EAACQIafO/7Ldd0GFEAAAAAAc5W6FEAAygsIgAABICxVCAAAAAHAUFUIASAFVQQAAkAVUCAEAAADAUZwQAgAAAICjiIwCQOeQFAUAAJlChRAAAAAAHEWFEADajsIgAADIJiqEAAAAAOAoTggBAAAAwFFERgGgLYiJAgCA7KNCCAAAAACO4oQQAAAAABxFZBQAkkRSFAAAdBEqhAAAAADgKCqEAJAACoMAAKAbUSEEAAAAAEdxQggAAAAAjiIyCgBNIiYKAAC6HRVCAAAAAHAUJ4QAAAAA4CgiowDQGJKiAAAgN6gQAgAAAICjqBACQCwUBgEAQP5QIQQAAAAAR3FCCAAAAACOIjIKADdETBQAAOQbFUIAAAAAcBQVQgBYjsIgAABwBBVCAAAAAHAUJ4QAAAAA4CgiowCgkRQFAACuoUIIAAAAAI7ihBAAAAAAHEVkFIDTiIkCAACXUSEEAAAAAEdRIQTgIgqDAAAAigohAAAAADiLE0IAAAAAcBSRUQAOISkKAABgokIIAAAAAI7ihBAAAAAAHEVkFEDOERMFAAC4ESqEAAAAAOAoKoQA8onCIJCuvv71aR9CwmamL6d9CACQPCqEAAAAAOAoTggBAAAAwFFERgHkCklR4Ebyl+HssA4/gSRUAXQGFUIAAAAAcBQVQgAAso7inoMS+aFTZgSwIiqEAAAAAOAoTggBAAAAwFFERgF0PRrJoLuQ/0THNPHLRsoUcA0VQgAAAABwFCeEAAAAAOAoIqMAuhVJUWQEEVDkSaO/z0RMgW5HhRAAAAAAHEWFEECXoTCIzqDuB8QR/18KtUQgm6gQAgAAAICjOCEEAAAAAEcRGQXQBYiJIkFkQYFUxPynR7IU6DAqhAAAAADgKE4IAQAAAMBRREYBZBdJUTSHUCjQvaL//RIoBRJHhRAAAAAAHEWFEADQNSj9AY6jMw2QOCqEAAAAAOAoTggBAAAAwFFERgFkDr1kXEYoFEDr6EwDxEeFEAAAAAAcRYUQQCZQFXQQxUAAqbC++FA2hLOoEAIAAACAozghBAAAAABHERkFkCaSovlGKBRAt6APDZxFhRAAAAAAHMUJIQAAAAA4isgogBSQFM0NQqEAXECgFDlGhRAAAAAAHEWFEAAQC8VAALAKvzxSM0QXoUIIAAAAAI7ihBAAAAAAHEVkFECH0EimuxAQBbrX6v5b230Xs9Pvtvsuupr1JZQcKbKJCiEAAAAAOIoTQgAAAABwFJFRAO1FUjT7SIcC6epAwjNxiRyza7lTcqTIJiqEAAAAAOAoKoQAkH/UAIFUdGPpr5OaeH7yV1SMfn2mfogOoEIIAAAAAI7ihBAAAAAAHEVkFEBb0EsmLaRDgXbLTRD0pmLDD+R6PeXEZvST70KglBApEkeFEAAAAAAcRYUQQGKoCnYe9UCgHbq9BthE6S/ZW06rkOhC/ZDZFUgcFUIAAAAAcBQnhAAAAADgKCKjAFpFUrTDiIkCrev2UKiwZjgXSx9s+gYLtfdaOBzNelQZbEiTjxCpMt4XyI6iCVQIAQAAAMBRnBACAAAAgKOIjAJAphEQBVqXj4BodIdPMya6sKnoLXpK+qP/hdpCcNHavN57dTbidhLJjprCx5/BEKmpGwOl9CBFE6gQAgAAAICjqBACaBK9ZBJHMRBoXT6KgaaYhcGFtavDe9fddbO3mHztfdm4UFPLr1IK/iCUouL1qt5rFhKTLRvKQ0u9VGhl/V2ibIj8oUIIAAAAAI7ihBAAAAAAHEVkFEADiIkmhXQo0LT8hUJFdDq0AX7bGEmKfvcbg7Lzr3+ks4IzE5amMqXhfm9xxe9DY7SjUT2qLS1nsjm30CrHOVJCpM6iQggAAAAAjuKEEAAAAAAcVVhcXEz7GDqtUCgopbaUt6d9IED3ITLaIpKiQENynA41NZEUNacOhoU7jvaUgy2rSjd5i/1fKXmL0aHNsvfeR07qG5HRhX4AVdlGFyY+rjAsm9lRq27MjloRH82OU+d/qZRq6ykbFUIAAAAAcBRNZQCsjMJgEygGAo1ypB4oEmshE0NQ7lNK6n2PHb/mLX5Ye6PpW46uVSZSPzSfqIxXC2k5g25EhRAAAAAAHMUJIQAAAAA4isgoACSAgCjQHGKi7SCtX8LdZax6/TYzSqmZiahLyg2Gu8tYJR4olScw49lRk/ySd2N2VFjf5siR5gMVQgAAAABwFBVCADdEL5loVAWBRrlWDxSd7B8T31zturcolntlowylkN4zC+afi8YIitZZ64cxy4ZdXSo05aNsSKmwq1EhBAAAAABHcUIIAAAAAI4iMgpgOZKiVgREgYY4mw41ZTMpKqSXzIZyQTbO1fw+NIOy5brsrVdmvIWMNYzZXSa+cI40kWGGmUXLGaSOCiEAAAAAOIoTQgAAAABwFJFRALghYqJAHKRDu4DZHbSkQ6HTEzrtuW90o+zcsXOTtzh5+aK3+OsfBcG/npKuJUjrUcmOmhrNkUbPS+xRUc1IzVxuF3UcDaMHKdLSBRXCer3+29/+dn4+yTbHAAAAAIAuqBD++Z//+Y9+9KNXX311x44daR8LkFs0klHUA4EGURi0yngjGVP/oK7LHXv7qmzcsV5XCMenp8NXkSmFszW/NFiy/DFpLRs2qqesD2/dF4IK4aWf6sKglA3NljPdOJwwGi1n0AFZrxBOTU2NjY2lfRQAAAAAkEOZPiGcn5/ft29frVZL+0AAAAAAIIeyGBm9cOHCqVOnTp48+dhjj42Pj6d9OECekRQlJgrEQTp0RR1IioYH9LVo8E6d/7wwEWw8eZvuJXP817p9w4d3BB1fjuzc4i12fed1bzFbnbPctORIa/F6QNhyp31+onXytfdj3YiB7Gj20XImO7J4QvjII4/8+Mc/TvsoAAAAACDnsnhC+JnPfKavr89b//a3vz1+/Hi6xwMAAAAAuVRYXFxM+xiinDhx4nOf+5xSKsEuo4VCQSm1pbw9kVsDupqzkVGSokAcJEVX1Mmeok1ERu3z/fx85upyb3jnqgGdI+31G4puuytoOVGp6MXVyoy3mK9dt9xvrbE+ozLeUBmNTHc8oMsDp04EqdS6f789F+vh2zE7joblJj4qchMfFcRHw06d/6VSqq2nbJluKgMAAAAAaJ8sRkZb993vfjftQwAyzanCIMVAIA6KgfF10aTBaNbiXtjk1E2yXlPSi1vv6vcW774WjCuUGzQrfkJKf1KEtPrgnbqq+dBt+s5OqaBq9P/94B5vce+DJ8LXlSKqtVRIp5nsC79lUzPsgHyeEP7VX/1V2ocAAAAAAFmXzxPCRx55JGIv9UMAAAAAUHk9Ifybv/mbiL2cEAIuICkKxEFSNJfsvWTikdinBDvXDQTdLI7s3Oot9j9/1lu8F5n/NPX7cwV/8MdD3uJwpeotDgyX5WLl4i3e4v5H3/AWMxOzsvdzX3vFW9AGw5S/7Kgw382Jj7YJ/5oAAAAAwFH5rBACCHOkkQyFQeBGKAa2KK1eMjGnTaxQFSxZ/uST4RDWHjDzU7pUODkV3PLhii4MHtm5xVvsrp6RvXO15dXCXuOW15QKy/ZemNBbjhUnZOPPnxu/0XEqpVRtPnyoYa51lxHmP/McVwspFSaLCiEAAAAAOIoTQgAAAABwFJFRAF2PmCgQgaRoi3IzdbBpE+eCcYWXqrqWcGBYb/n+A0E/mG/87wm11OP3bQnf4O6ndMp0zs+C/ptxF9JCJkiKxouJNsH84eY4Pkp2FNGoEAIAAACAozghBAAAAABHZT0y+oEPfOAzn/mMUqpUKqV9LEBXyl9zUQKiQBwkRVvRRTHRVkYOxjRXux7euPdZ3W704XuCv9BkvWP9Jm8h4wqVUpeqep5hvTrnLaSR6bztLjrMhdajOc6OmsiRNirrJ4QjIyMnTpxI+ygAAAAAIIeyfkIIAIqqIBCJYmBSMlUYjB4/2IHCYLRrNV3uO/b2Vdl4aGSrt5DCoFQFldFCRgqDVjF7ycgz0HN1NuJi5tNonUkY5kKpUOWxWihoOdMovkMIAAAAAI7ihBAAAAAAHEVkFMinfPSSISkKRCApmj/RMdFmlBr+S29V6aY4F1tTKniLcjHYWK1f8Ra1mt4iMVFla06zQi8ZOfi2zSGMxpTCbmf+FUF8NAIVQgAAAABwFCeEAAAAAOAoIqNAfuQjJqpIigI3Rky0HTLVXDRChzuLrhqwZEd7S7qW8KmP6i0HhreEL/b4fbd4i9Gjp9tycB3nQuvRHGdHFa1HI1EhBAAAAABHUSEEkAlUBYEIFAYTl6mqYPIjB+P1kunxy31mIxkpDPaWZBHUD6SXzKZirLswrytNZcK1xxW6y0Qyn5/omYSJcKFUqHJdLaRUGEaFEAAAAAAcxQkhAAAAADiKyCjQ9bq6lwxJUWAZ0qFtleekaGRMtKdkqQFIUtTMcBbLvd7i6T1bvcXeZ88Gd1KKdSwHT50Jb5RbluGE81PxkqLmQ2thJqE84YXae03fiGBKYbdjSqGgQggAAAAAjqJCCCAFFAaBZSgMtlV2CoPRVcEGhOqB1hqglRQGD+3f6C1evlyLuLxMmFA3GDIRdmC47C2+PTUhG9cNLOr7HdnmLe5/9A1v0UBTGXngtlKhlFU70F3GFP4Fy03N0IVSoXK+0wwVQgAAAABwFCeEAAAAAOAoIqNAt+q6XjLERIEwkqLtk52YqIqdFLU3krF1i1ntN2gR1tSlOWAw2Oi3kPnO2O+8xba7ggrB3RuW33LMmKipXLzFW+y6I8gZjg5t9hb7n9ddamTU4fxUcJySBF3we8/YRWZHU5fvljM55mZ2lAohAAAAADiKE0IAAAAAcFRhcXEx7WPotEKhoJTaUt6e9oEALemWyChJUWAZYqJtleOkqNlHtDTc7y0G79Rhy9+cDPpqhuf7mZMGhSQ2B8rB3tsH9V+G0ilU8p8tqtavLLvBsfHz3uLIY5Y2p9YQ7Ao50lB8NLrdaCIDCePLTXY03x1Hw9KNj546/0ulVFtP2agQAgAAAICjaCoDdJNuqQoqCoOAj3pgZ2SnMBh/0qClMGjrHyOFQbNDTK+/8chOv+PLzuAqo0dPe4s5W5FNCoO9ttGF5WLBXyRTGBTHxvVMwrfe0YuJc/rwzAKmlDfl8ZqlwvC4RfNp6R+82VtcOXElqcNOkPW3tBvLho4MJxS57zRDhRAAAAAAHMUJIQAAAAA4isgogMQQEwU8xEQ7IzsxUdVIUtTCT4qGpwsqI07ZaxsqeLiiZ/p9cn1JNkoW1BoKXVPSodDH79Nx04OnzsjeTUXLMSRiU1E/zBf91i9yeGa0Ndz/xtwiT4JcpWg8afLQrvhPqdmCJtxgxvypdbjBjJBfY7Kj2ZfX7CgVQgAAAABwFCeEAAAAAOAoIqNAF8h4c1GSooCHpGhnpJ4UbSUduqSzqB9rLA73eYuRzwbpx0pFL4aH9eLQyNaY97KhrMf61fzxfqUgT2o0JvU9dNtaWe9YvynmvTRNRh3e/TH9eB87HkQ7w51Rzazstrt0MaNc1BsPDAcP5/5H30j6YDsnNz1IXWD+5ZOD+CgVQgAAAABwVKGtY++zqVAoKKW2lLenfSBAXNmsEFIYBDwUBtsn9WKgarFbjM8yclBZKoQfvDO4mHR8EfufPyvr7Rv1QupjJy9flL0vX66ppar14O+9A8Nlb5H4pMGYqvUrEQew+6kzy7Y8vcdSGpVGOKdfC6qLtcq0t1ioLYSvovxmNuHuMqa0ustE66JSoSMNZsLaVCo8df6XSqm2nrJRIQQAAAAAR3FCCAAAAACOoqkMgAYQEwU8xETbKq2kaCLpUJM9KRoyM6ETjGZUca/SAdGpqm6yMlAOequ8JSu/5YzZDKbcH5XJTF34qMxBiDJLUMisRbW0hYzHnLW4ym8/M+9vsWZH5edizY7Kr0GmsqNd1HLGteGEonunFFIhBAAAAABHUSEEsis7vWQoDMJx1AM7o5OFwcSLgWKFqmAp6k8vKRWqpdVCz1TVuJk7bwrtD2SzMBhhydyLEV3qlMLgpqLlSZOryOWVUqNHT3uLuQFdVq3XZpo+KvOXJFPVQiH/ZCgVZkrXDaWgQggAAAAAjuKEEAAAAAAcRWQUwA2RFIXLiIl2Rmdiou0LiCZCGp/0GP1R5qd06HHVgE6HztWuy95dd6zp1NF1gtkRR4T7x5iOntGzFo8NBA1pxvZt8xb3P/pGnPs1873RwwkzrotazrimKzrNUCEEAAAAAEdxQggAAAAAjiIyCmRLFjqLkhSFy0iKtlUHAqJppUNjjhxsgmRH+weDu/jJmzJp77z3n9GhzW06gEwZG9ePt6YTo2riXDBpcNczr3uLeSNem4jw71U2+46astOD1Hxdda3jqMhydpQKIQAAAAA4igohAAAUBtuofVXBLLSKaV9hMKZXL815i3vWXZGNXTeHMD4phD523B85mFAxUH6UMbvLZH9KoaDlDKJRIQQAAAAAR3FCCAAAAACOIjIKZELqvWRoJAMHERNthxwHRNNKh0ovma/sCmYPDvX3e4uXL+vmKjmOiZr2Pnu23XfRaHZUGb+cGc+OmtJqOSMvvHSXUZlpMEOFEAAAAAAcxQkhAAAAADiKyCjgNJKicBBJ0cQlHhNNPR1qSiYpWkr4L64d6zf5i2RvOIsOV4KYaKmkF9dKuqphdhldYfyg/BRq81EX85k/+iZaj4qM50jJjqYoI8MJqRACAAAAgKOoEAIuojAIR1AMbIdk64GZKgaK1KcLKqVWDdzkLbbdpT++lxF8rnloaFDWB4ajeufc+8hJb7FQW2jvMTUi/EuezZoh4wpTlG6pkAohAAAAADiKE0IAAAAAcBSRUSBNnRw/SEwU7iApmpR8d4sRbQyIxusl01OK9QH9wVNnZH1oZGuTh9SFrCMWx8bPe4vHjl+TjatKOmcrTWPs2dEGu8uopoYTRoj+h5CpQGkHWs6Yr9guN5jxpDKlkAohAAAAADiKCiEAICcoDCYlkcKgc8VAEXvCRLgwKAUu0+nXdI2r17j8/ik9ieFbn9ANV6xltPyRwqC02Plh7Y3mb878YTU4iyKRUqFV/H87nawlmi8LdJrJGSqEAAAAAOAoTggBAAAAwFFERoFO62QjGUUvGeQdMdEW5a9tTGojBBPtH2Oaq133FmZkdN/WkrdwISl68vJFWf/kTR3sfOz46YTvpsFOM+ZvWvvio9Fa+efWSty0fZ1m5CWd7jKqg3/CUSEEAAAAAEdxQggAAAAAjiIyCuQTSVHkG0nRJqSVDk0tw9kZkUnRmAFRa3PRsDljpN6xt696ix3rN8W5blczH2OppNurTvlb5qeuR1zX/BHYZxKGWX+mkTnSDrQeTVwisxDJjuYDFUIAAAAAcBQVQiA/qAoi9ygMxpd4PVBEFxaSqQfGHuVnEa8jSAPa1i0mZmEw2uGKrpgdGN7S+q1l36XqoreQXjurBoKnUaqF8tzO14L6YfhnFLdmqGy/BrbfNOvvf8bLhvZ/s2s/5P3XevDh+iFTCrsaFUIAAAAAcBQnhAAAAADgKCKjQId0ePwg0O1Ih8bXvnSosMZEm0mHNhi//O43BmXjX//osreYmdAZNnver5W4aTxNpENFEzHRXttVLkwUvMVkyd803PRBZdTY+HlvcfzXzceAzSfcjI96mvhRBr91sXvPZKfljP3frP9A/uL/Dv5QkXmPF//HpLcwD15eEKy9Z5LtNGO+F9Bgpk2oEAIAAACAozghBAAAAABHERkFuh7NRZEnJEWjdSAdaopOivaULfEzSej1D+q9tcp0cN1QyNOa2evzr/vy5Zps/OF/vd1blIu3eItd33ld9s5W5270KJpgPapEmoJGMxtmhpOivcZRXast+kudHT15+aLszcdwwlcv6Z9prVYI75XnZ84IgppPoMecUmhtPRqTXPf4d3d4C/PXT25wQf60jt2DVCQSKG2lze+Rx4J/bmuH+7yF/DNfMCKyPRfr3qKT2VG0DxVCAAAAAHAUFUKgvdrXS4bCIHKDquCNdLIe2MB0Qb9QsO6um73F03u2hq8yevS0t1hSWPPXUn945N61slPaxkjxp1qXOph6ZVIXGZ54phq+u+juIFKZbKKJSGm431uM7dvmLeShmWTv7qfOyMZ6vLqltW2MsddyzGtKumhW8pvKHHv7quwdn9ZV2dGhzXEOIFNksmI069PSPuHa4/Fv/p6spVooZcEF69/YkUMyk5nhGV+89kvy+z9QDp6Bi/9DPxCpapovINZqYSLkzYLuMsmiQggAAAAAjuKEEAAAAAAcRWQUAJAOkqKq401iwqKTotEmX3vfW5y8N2hnIm1gtt2lP3SuVPpk75wf3ZTEo9n+pFjWoUfJkVqbozxW88OooRSfukG/kJhJ0ei2MdK1RdKhVvLQlFJzkTcot7P/eR2SPLJzi+zd+2xUclKSousGdKq2XLR0XqnWr/h7b4m4tdTJcVrJg1VKlfyntxY0QIn64Zo/LEnz1i2hYwszyisJ1YOn9I2YT7hEoIX861BNjS5sF9sBWP91yD/VH/zxkLf46j9eiHkn4U4z5gsdDWYyiAohAAAAADiKCiHQTWgkgxxwtjCYejHQFLMwGN3lQuoeB4+8Ixtl2kRQmRkJrmJUVyw3+NmR5WVDc5TC0TM1y3VCmhgtEC4MLh3/0LPsqKI9fp+lyidTIsz64dj4eW9hFgbFpz6qF9JZ59CIpXmP3IjZP6ZbCoPCPM5Prp/SK/8dT3rkKKUu1nU97YD/pFl/SbZvtNyLdD+Sn8tUNeqXRKrc6gZPvjgwrJYdzMHKjOwNOs2Exq4oZavaJV4zjNc/xmyTI6SFkjnAQwRDaGLPzEhkFgXdZZJFhRAAAAAAHMUJIQAAAAA4isgokLzEZw+SFEWXIh2aKa30j1lC8mx+Ds0MZ04rnRyTBh7Dw8FVV8rdLU9OmrP1ajUdtrQOoJP+H3Oxk6JhkhT94J1BVtaMgMZh9ke5fVCnPSf9pOi3PjEoe6PznA8NDca5mHXSYLckRa3C0dwd8S+/9eKNbsQkP1Ozc4/Eeq1ipnAl3WqmjuUfiLRvsWdHRbyEZxOs/WP6/Ji3NDdSRoxZxg/WKsa/LDnCFtKtiWRHkQgqhAAAAADgKE4IAQAAAMBRREYBAAlzISmazVCoVWJJ0XgkKSdzzC5MBNm5sQ2Wlphh0qrRHPU2GQyj0xuHh4PPtSen9MYjO3V3U+mOqGLnSCV3Gp0ejGZGCg+N6LX0Aq1OT1kvGX07iClmJ1ghmV5lxHqtTV9jCn6xv3ReNh55TP/6hbOjphVypPHEHLmpjOa6H96hI6PWBx7diFWYHYml42h4IGHizLcbOo42jQohAAAAADiKCiGQXfSSQRfJd1Wwi+qBopXCYPT4wWhmOxZPo01ZlFHn2WG+CvrNaWSY4YHhsuwM19MG7wwqk7WaXku5w6wZ9obmEJqk00YyhSNkidnlSKq4TZCWM8fGJ7zFiVNB7dFsMOOxDsmMLu6Fp2VaWW/Zel05qolz+ip7a0FTmS99TJ8jSFOZaaPUPyvFTFv/Gyl0xhxOaL7A0mAmFVQIAQAAAMBRnBACAAAAgKOIjAKJSXz8IJB9uUmKdmMoNKzD/WOEzDFTRkBUGsOYwqm8JrKU0cMMhZnwPFzRWbgTtaiPwmXC4ZpS0Mxm3UDzDWbQRVqJ9Upi+a13dGR0LrJDTMz8p+n4N38vvFE6J43ti+qlND+lF+Hw6o3Is/HEC2cs1/XD2pJQNR/RbNVfxYuMJkXej+gu0ygqhAAAAADgKE4IAQAAAMBRREaBbKGzKDKLdGhmpZUUlaaIP3v44+G90ilUmoIqY1qg5DBHh9p1eNL4USlVreu7kyzoGiPhVvInHO66Y5V/VEF6sJXmk3BWb2TLUMlwrkiCmruf0v+Ont5jdEb1k6LWLXKVuZpMB7U015VD/dRHLQcQxKfLvbLxTz9d9BZPvDDnLT47EqSs//UpvZi3xMZXIK/PtBvtJCqEAAAAAOAoKoRAJlAYRGZ1Y2EwfzVAq7QKgzJ5bMFvm7HrO6/LTilohOsPSqk1fi1u3UCbD3LpZMJDI3p9UOmaidQq1UoDBhkhiBVJOTpoQVQ2f8F01S5cslNLq3Zh8u9IKnVmyT3cYMls5rQhOIabQgtVq4UfhaV/kgwkNP8hyL1sKM97i3/7t6B/zGxVlw2VP9G0RwUvVoXae+F7QbqoEAIAAACAozghBAAAAABHERkFWsX4QeRSxpOijoRCw9oXE11Yu3rlC93AfGTmbSn/k+jBpu+tJXdv0I0xLhbnZaPk/cyUKRCf/OYcGF6+xST9YCQ7uqKBsg55Rk/4FNLMSSmltupLjk9Pewtr/lnaJmH07GkAACAASURBVFn3ysb9z5+VjRPn9D/56QmdFA1iokqpmv7H1dPCHMJWusswkLBRVAgBAAAAwFFUCIE00UsGWUAxMPtS6x/TuOhqofTEl6KcORyiAwW6e9bpX6fyEMVAJC/m77DR7kVdqi4vzwwPB+tDI8s7Hi2pAUaSS+6IvFh02ySpH5q9lw5v1NVCmTCBrkaFEAAAAAAcxQkhAAAAADiKyCgAOCo7SVFCoTfSgaRo3F4ypeb/YJBBasoYoRaen9YZtI1BFuy6I/gHdVzNh/Zb5gF2gJnfPlypeosLEzrd+uoly/zDnw+eDt/O7LnwI2qe+QbRaIMZ822OBjMRqBACAAAAgKM4IQQAAAAARxEZBZrRyuxBOoui87KTDlUERFeSrYaikUnRnlLDHyunlRQFMsVs7DnUr6cFvny55i0ODKcfqL57gw5YVip6wODp6oLsPah0fFT6Bt/7yMlOHCLagwohAAAAADiKCiEA5FbqhUGKgfFlqzCYqF6jkJh6Uxkga2RaYLn/SvQlO+mJF3RhsF7Vi/mpYMToS0/q9b1P6sLgQi2oH/Zcne3EITZI3hDpLhNGhRAAAAAAHMUJIQAAAAA4isgo0CH0kkFbpZUOJRTaorSSoiuMH2xh6uAqY+qgZ87IklUq+pPow8Wz3uKT60uyV7JzgINSH5K599mzsjb/2UYIkqK1JGcPosOoEAIAAACAozghBAAAAABHERkFgC5DOrTbdXtMNDx+MBwTVUqtGtAb52rXw3tf/A+9t1q/KhuJjAKdV63r7qa3Dy7KxgtK/wudquotMxNB79C0kqLyNnS9TqfQJFEhBAAAAABHFRYXF1e+VL4UCgWl1Jby9rQPBN2nr7iu4avQSwYJ6XBhkHpg4lKfNGivEMYrDIarguoGhcFg74Blb7Hc6y3WlAr6/oOeMmr7Rr14aGjQW6TeZgOA595HTso6ukIYcw5hofZe0weTSIWwWwYSvvTmMaVUW0/ZqBACAAAAgKM4IQQAAAAAR9FUBgAyh3RonuQjKRqdDjWFk6K9tutKUnTdQJCD2lTUgVKSokBG7PrO695iId5kQnQjKoQAAAAA4CgqhEDyaCSDhnSgHkgNsMNSrwqqFYdMhJhtY6Qe2D+ob2SgHFT5PvVRvfj5c3qehHWwhBQGzetKX/tDI1u8xdj4edk7OrS5oWMG0DSZNnG4oidLHBguy96vPTnuLeZt/7o7PG0C7UaFEAAAAAAcxQkhAAAAADiKyCgAdA7p0FzKQkDUs0JM1GgkE54raLaNkcYwkvZ8/L4tsldCngN+vuxaLerz5YfvCUYN7li/adleYqJAKqR1U8WPjH71xAXZOz9lS4omSl45mxhIKO90rQwkNN+Ru2UmYZtQIQQAAAAAR3FCCAAAAACOIjIKrKyvuC7WxWguCkNnZgkSEE1LdmKiKnZSdHW5V7ZJKNQ6JHBs3zZvcfDUmagbDqKghci9ANJ08vJFb3H0TE02Xqrqlr/16py3MGOi9uaiyCkqhAAAAADgKCqEAJAAusXkW3bqgQ1MF/QLg9I/Zu1wn+x8es9Wb3G4ctZbHBjeokIOjWwNbxzq7/cW+/ydZquY6KIigI6RwuCxt696i1otKObP1RbadL/yMtVzdbZNd5E4eRN3s7sMFUIAAAAAcBQnhAAAAADgKCKjABBLZ5rEhEUnRTsZZWxiVFQ3yk461BQ3KVqKelu/WpmR9e6ndLDzTz/de4OL31B4lqBJUqYSV4u+PIA2kX96L1/WvWQmjVZPU5HXlcGk9u4y8lJTm2/pEJVSS191HXmjyRoqhAAAAADgKE4IAQAAAMBRREaBVjF+MH9Ih7Z4AN2S+Un9KbVqoI9oC6TLaPuQFAUyIughPBxs3F1d3hDYnEo6PZFAg9BubDfqJiqEAAAAAOAoKoSAXV9xXdqHgDZKqwYo4hcDg09Yy3qxUI36qDULH8TGrLy1r5CYzdKfSL4GGNlLxio8LdA6chBAXm0oy0xCXRg8sjMYRjp69LS3qNWmo24lXncZ80UvC29SEdwcSEiFEAAAAAAcxQkhAAAAADiKyCjQDBrJZF/qoVBTdEBUxAw6SnZUKbVQW1i21/z/jCdzMh7sbEVnGsM0kRQVp07MeYti2Z9DOBLsZYQgkHtmQDRsoKxzpNMT/kBCY2/4rcf+cmTLkUZ3mpH3hW5pTpYPVAgBAAAAwFFUCAF0q0zVAMNiVgVV7EJZ36D+VNXaGXy+dl1vKhm1qVAfmozXDLOvQ6W/CLGrgj2lWJ/51qu6VLj32bPBnZT0YsfOBg4NQG48fI9+FTj4mm4qs8p465HCn6VUaIosGyYylMJ8q71ed6gNTLKoEAIAAACAozghBAAAAABHERkFkF0ZD4Wa4gdEm1avzHiL1dIFRKl+P0c6cJcO80xVr8veOT9HWvdTPZHhnq4PlKaf52yfFvrHxHSttmj8X+GGlwPggEdfqXmLVQN+U5mp6+GLxYymm/7XDz7tLT73tVf0pi5/68kBKoQAAAAA4ChOCAEAAADAUURGgQYwfjBxXRQKDWslJtrKCL6goahS00onbQbK/ZZLhhM+ZvIwNCEqz5HLLpVEUtTsDRjWG7n34Kkz3uLAcFk2lou3tH5UALLmcCVoNSwZ8uiXCPP9KIL5KiRjTuXrD7O14K1HvrmQ+kBC8++T2emc9y+lQggAAAAAjqJCCCzRV1yX9iHkTVfXAE0daBsT05K5T/7HrvJp7jdHPyA7Dx55J+qGpPoUKhWmKVQTM5sWDH9hwFtUfjrlLVaYgpWphxZTC1XB+A0e5FP/Xv8qa0pBIxmZQyioCgK5d2B4i6xf/A+pFuqXiN4lLy+6uCeDTK0tZ4T0P1NKHT2j29Xs/4p+ofn+f58LLkqDmTRQIQQAAAAAR3FCCAAAAACOIjIKoFW5CYWGJR4TbaWXjJVMiHp6z1bb3sveYlbNhfcGrBnFToYtI0OSZjeCb31i0Ft8ozbhLSZOTMleS3w09YcWX9KTBsO9ZMzU1ti+bcv2Sv8Y06ERy+8VgNy7fVB/DeGCP5VUtijbK8Po0dMRt/aHv2/pTPOTNy0vxdLbrNvn4nYXKoQAAAAA4ChOCAEAAADAUURGgZUxfjDHoVBTdvqIRrN2khwbP+8tnnjBkg6Vq6zQk9PUvh6k8bKRMqLK9BfPVL2FRGTvP/eG7J3xpzKu8DAz1V41iaSo9VdC4sTSUDQcEzU9dNva1o8EQD7cvUG/Ah8a2Rzn8oN3BqHQS1UdLt1Q1nFTs3/p3md1/1Iz8J9x8ldQXgcSUiEEAAAAAEdRIQSwnCP1QE9nqoKJ9JKRKpDZLKQYKqPN2YpjcpXoipi9sBZdwrIW2ZKYpPdfPtvvLXbdEdza6JD+rFo+YzaHX4UfZtxSoal9ZcOk28aEC4Pm78YP/+vt3uKVyVgfae9YvympAwPQ7eTFNibp+KWUOjygoxzlouWSMjXX+sa0UGvobpEMKoQAAAAA4ChOCAEAAADAUURGARc5FQq16pb+MaY+f4jc5z8fTJP7+XM6MHnPOv2Ijt85IXt/czKIU3rMSOF8bflea2+SaAuNv49E34sc4cQ5fXijO4NuBPuf10nRqareK61T1NL4aJz7aiYimzZ7/xj/STOfjXADHgBok3LxFlkfGtHrav1K+JJ/+mn9TYdR6Q32aNAbrF5l/GAKqBACAAAAgKMy/Tko0DF9xXXLt+Rl1ATFQFM3FgbFzIT+3PRfn1peB1NKHa7octC3PlGWjX9R1Rvr1Vh3Ea4ZqqVFRbHjgT5vcfKZmYjrxmS9i6/sWhNxld54xczoo2qmfthZTdRshbQXOlzRZVWz8zsAtJtZNhSvXtKzkX74E10YrFdmIm7E7MpWqL2X3NEhQIUQAAAAABzFCSEAAAAAOIrIKJAfpENNqadDW5k9uLB2tWWjnwA0RzZJ2PL0a3pv9bYp2buhXPAWEzVLJlPIMENzhuFcKGxpzjy8MKFv2exiImLGR61JUbnBJ17QsaLRPcFeGXVV3mlJIo0ePe0tev1bnlaW/gRyeNYDCI5kMPgpSLuamA/NGjdtJf9pFX384sQpPfWrWj8jGw8M62ixNdMFAK0bGz/vLcyphg/dtlYv/k+95b89fEH29lzNdFMZ+UNrdjrWfNduQYUQAAAAABzFCSEAAAAAOIrIKNCtCIhapZ4U7QAzjijx0W/u/4C3ePSVmuz90sf0i/zFjXrLQ0ODsrc6rcOl49PT3uL4r4M46pGd27zF7qd0znBNqSB7H79P96vcXdN7zUamEvsMDwa0suZOJb+699mzsvFTH9WLA8OWoOPgnTf5B68PT0KkygjBWg9PNkrcdGzfNtlrjsnS122hf2krYsZErSangp/gK5M67zRKZBRAomRg7KWqzqubyf+DR97xFrPVuc4eF26ICiEAAAAAOIoKIdBNqApa5aYqaO0ls8JV/DKafOZqVtteHdSfzh4a2eotzGqbVPnK9SveYnQoKBbJ8LrhYb3lodtK4QMIyoZGyxmD3liP/UmwFOiskwbf0o9SnVx/0VvsWL9J9kphUGy7K7iR06/phZQK+422MQNlfb/ytJikoc7ViqUhTSszGGNqpTAoP8FDI8FDO3n5YouHBABW8lIs2Yp7Hzkpe4OQS21eIRuoEAIAAACAozghBAAAAABHERkFlujrX5/2IQQIiEbLTVI0EdbU4sln9Mb7T+jcTq+RPJRuMUakMIiMHhi2JCdF1U+Z3u6nUieNljOSF5KE6pwt8SjRTfOorElRsW5gMWJvmGRllVJ7J/TBXKtZ7uJ7n9HtduShHa5UwxezN6QJPbqkQqQxk6LhjjjKCMGaSVFhRm0BYEVmzvzY21e9hbSqkv4xSqmrlRlvIa+E1tGsyA4qhAAAAADgKE4IAQAAAMBRREaBbCEmuqKMJ0UXSx9s9CpNNBeNYIYVw4HDOWOvhDMlVylpSVPZNqdONh7w46Yy185U8vuSXrMFQSXTGE3CnOa9NJF4lPahEmQtGW1Tg7l8Q5u9hRmglbipNfsqJEdqjXpac6SttA8Nz280ZycCQILMV92jZ/TA24lz+mXNfHNZITMfai7ac3U24uKF2nuNHGaHmH+tzU5b3v66CxVCAAAAAHBUYXGxsS/o50ChUFBKbSlvT/tAkLK+4jrLxs42laEeGFPGq4KmNlYIS1GZjh5bCU6qT+FSkjIakEilTjrEKKXu3qAn70nFrBX7nz8b3rjrDssjOv5r/eGx9I85MFyWvdZyZUxj4+e9xauXLEMRy0XdGuGT63Xd0FqElAcin4tbLfmwfCrJKYUxf5TqBgMVAaB18nL6xAv65VQayShbhXBJU5m2VQiv19Op1LW7QvjSm8eUUm09ZaNCCAAAAACO4oQQAAAAABxFZBTuSisySkw0vi5KioqYkdGWGsnYsqPWyKiwZkclZyjdZTaULbMEE2G2qzk2PuEtNhX1A4lOpZrDr5KdntfKLUtnGpOkNCVPpZR67Pg1bzGX0HBC0RtqSGNGRiUALJnbVgK3ABAm82zNyKiwzyEkMtogIqMAAAAAgHZh7ASgFIXBjMlxYTDj9m0trXyhppi1qYeGGrtuslXBpG75Ux8N1geGl1dTpTWOSQp6rZQKw1XBG5G2QBQGAbSbGT8Jd9IyMywLcvYRKhUiLVQIAQAAAMBRnBACAAAAgKOIjALtRVI0pm6MiTahpV4yNtG9ZMKK5V5ZrynpFjIlPyjavnCmKR8JRhlXaLV9Y7C+VI36GcWMj0YnRaUtUMk4qEQGSAJA2MFTupeMvI/M2V6jJEc68tngreeFf6y1+ejQMCqEAAAAAOAoTggBAAAAwFFERoHkERONj6RoA2zjB2OS3I7Ee5QxNM8cEoiYouO1Zt/Rt97REwtrfk5qjZGtmqo2fwySFJUfa7LTIwHA6tDIVr0aseyV4YRz/vjBcjF461ntf3Nh9lxOuozKX33tHkjYPlQIAQAAAMBRVAiBxFAYjC8fhcHo2YOJ949pwqrQt/ynqkELk73P6srV7YOL3qJcnJC94dl6aI5Md7QWFeWncK222Pp9Ha6clTU/QQCpGB7Wi0Mj27yFmUP5V/WrODdSqL2X9HHhhqgQAgAAAICjOCEEAAAAAEcRGQVaRVI0pnzERNVKSdEOsM4eDKdDldFLxkoyipN+S5JyseWDQ0g4KXry8kVZy+TAa42P5gpPkgSA1B0YLi/b8rUnx2U9H2/4KjqJCiEAAAAAOIoTQgAAAABwFJFRuKuvf33T1yUmGl9ukqIxJd9c1B8/KElRazpURMdEe21xUyuJNUYP3EMTzKf05Y26L2h1QG+5MFEIXyXaugGd/j0wvDX6kgDQbuXiLcu2jO3bJuvPfe2Vzh4OVkaFEAAAAAAcRYUQaACFwfjyVxjs6NTBkuXFuTTcH3GNuciv6RfLvd5C2pAooxPJrjv03Q31B3dBYbAzwtMC90+dtV4SADJrbPy8rEeHNnuLg6fOeIuTz8wEF63Nd/C4EAsVQgAAAABwFCeEAAAAAOAoIqNwTl9xXdqHkFvERJtkC4gK6SUjodCfPfxx2SuBnErF8gGfBEQfv2/LsssrpcpFvVfiPciC7RuD9VvvRF1SesnIjxIAOuBwRSfb5TVq4lzwtYUf1t7wFjMTs95iobYQvpGeq7PtO0I0hAohAAAAADiKCiGwMnrJRKMwqNQKVb5G9RjDIWTIxPyUpW3MoRE9ZuCgOhPeWy7e8PLILLPNzGHlD6WoL4YvKYXBT64vhfcCQJvIy9Toc6e9xfREUO6b9/MsQWEwdiOZQu29RI4wFfLn4uz0u+keSaOoEAIAAACAozghBAAAAABHERkF7IiJrigfSdEG0qGJhkJNZkA0jtGjp2U9UNaB0tsH9RZCoXkiWdCXVS28d1ORN3EAKdj//PJxqasGbpL1fORcXGQQFUIAAAAAcBQnhAAAAADgKNImABrQ7THR6ICokKRoTzlq0qB1sFK0RtOhJgnkzBlpnGs1fYMXlG44ebgYJHnMfpXoRjvWb/KXF73/jE9Py96h/v7QxQCg7Y7s1G8uu6u6wbV8f0EpNTERNWCQ8YMZRIUQAAAAABxFhRDO6etfH7GXXjJWGS8Mxqz7WcUfKrjurpu9xZxfGPzD3w8+EP2fR6eaPoZWzAVVSv0B3yfXr5W91foVb1Eu3tLRw0LSpAZY9n+mAJC6p/dY2pjteu11bzFbpRjYHagQAgAAAICjOCEEAAAAAEcRGQVwQ2klRVuJgMZkT4pGqlfnvMXnP6+v+/PnguYuq0o3Lbt8K4OYzFszhzuF9fpdataUdFOZo2eCgXW77tANSEaJjOYF6V8AGbT7qTOybvTtr1B7L+nDQWOoEAIAAACAozghBAAAAABHERkFlKK56FLJJkU7kP+M1kA6NNRc1Jw0WLyr11s8NDToLV4sT8jeuZoOds5P6ahMOERqMhM14UuuFBMN9kpStFTSW7ZvDC45OrQ54nYAAEiEfKtC2Yb0Mnsw46gQAgAAAICjqBACUKq1qmDqNUCrJtrGRJOPP7/25Li3GNu3Tfburunv00upcC7yW/VmDbBY7vWvsvxTVStpJKOUevy+LXGuAgBAK8y2MfKGKKGYWaNCqGrzHTwuJIAKIQAAAAA4ihNCAAAAAHAUkVG4i0YyKnZSNJuhUNFSOjTUSMbUY4QzJRgj9j57VtbDw3pRqVg+aAvHR83GME/v2eotDp46499I1CFLIxml1P7n9TFIL5kDw4RIAQAJ21AO3np+U9WL6JGD9JLpFlQIAQAAAMBRVAgBF0UXBvNcD0yClAqnqsEno5N+xe/pPbpAJ7U7pVTN7zRzrbYYvkEpDJaL+vPXyXKwt1ZbfnmZMGHaVOT1HADQLkd2BvGTXSde9xbBhAkayXQzKoQAAAAA4ChOCAEAAADAUUSMgJzr6nSo6HBM1OwlEyYjBM1WMZeq+ionL1/0Fma6RuKjJaMfjCgX9UL6wRxWQdy0OqBTpodGlveeUUbKdHRoc8QxAwCQlOheMjEVau+1fiNIBBVCAAAAAHAUJ4QAAAAA4Cgio0ADYk7ta8L1+rut30g+0qGmNiZFbeMHo5Oi0WQ2YLl/ILx331bdGHTH+k3eYmz8vOy9Z93yH5w5S1AyqNX6FW9x94be8F3I3nLxlgaPHQCAJeSbDr85qWcJzkwEQwWjm4syfrDrUCEEAAAAAEcVFhctQ7HyrVAoKKW2lLenfSBIx8ahT8e5WPuKge1jrQFai2wZ/PSuQ21jQoXB+FXBVf6kQWkq0+tvUUoNlPX6Ux/VW8wqHwAA3WjXd/TIwdnqnGV3CxXCxJvKJBK2StzsdKtH9dKbx5RSbT1lo0IIAAAAAI7ihBAAAAAAHEVTGUCpzgZEk2ruEmQs/Rjkpi+slb0Xf3pVr2xxjkbzme2LmHYiKdpC/5hVRig0nBTtNW7kWk1nOap15S+uyF4avQAAskmanB3/dfAHw69OTHsL+8hB258W6F5UCAEAAADAUZwQAgAAAICjiIzCXZ2JiSYSEI2Zq3z3tWlZSyRyQf6ZtxDwiD6AmIHSFR6FLdiZiOJwn6znp2zRlxvrHwyOeWzfNm+x99mz4UvePqgjow/dpoO7xEQBANk3OrTZWxx57HXZKEnRYORgpAx2L0d8VAgBAAAAwFFUCIHEJNUtRsQsDEoxULqeKOOzvaBUWEvimGx1vIW2FfdisnaIkX4wxXKvsVmv69Z5SpGkMPilj+nHa37/vlwseIsd6zc1essAAKTl/kff8BZm/xhLYZBGMvlFhRAAAAAAHJXdCmG9Xv+Xf/mX06dP1+v1D3/4ww888MDmzZvTPigAAAAAyI+MnhCOjY3t27dvcnJStvzlX/7lV7/61b/7u7/r6+uLuCKwosR7ySSbFE1qLl9puN9bTE/o73nPmsHOcPCjhdinNbEpB1CrTIf3irjfVo83NlAtnRwY9vSerd5i9OhpbzFnm7BknTQYdmTnlphHBQBA6symaO+d038ezEzQD8Z1WYyMHj9+/Etf+tLk5GRPT88999zzxS9+ce3atUqpH/7wh3/2Z3+W9tEBAAAAQE5krkJ47dq1ffv2Xb9+/QMf+MALL7ywdetWpdTc3Nwf/dEfPfPMM0899dSf/MmfPPjgg2kfJlx3fdOHYl6y4ZEMsSt1q/1eKdJLxuyeIqWw3U+d8RZ1s+WMP31h3lYfC44qsnwXrtqZ1bkf/PGQt/jak+PeYtr2GWQiX1E379fsrBM2Nn7eW0jpz6wBDg/rxYUJ3SHmWm1R9spgCQAAukjwl4DRUC08hylmZgf5k7kK4RNPPHHx4kVv4Z0NKqV6e3uffPLJj3zkI0qpv/3bv03z+AAAAAAgLzJ3Qjg2NqaU2rJly+c//3lz+8DAwO7du5VSL7744rvvvpvOwQEAAABAjmQuMvrcc88ppe69997wri9+8Yvf+973FhYWnn/++Yceeqjjh4acsPaAiW7lctPF//QW17f4I+aip/EYsU+Z0RdMCyxZpgUqW04jOpMpfvbwxyOOJZwdVUpdrVxfdoNmdjS4F39hzWGG0ybmxb797xPeYqCsN87VLJnVvkH9zPfaHpp0fDHvS+5FriJ3oYyQ55qSjn2aUc/RId2seHSP3rL/+eAb9ndvkB+cDtWUP1qQvQeGaSEDAMg0803tUlW//UlSNPzGDaisVQj/8z//83e/+51Savv27eG9d999d6FQUEpVKpVOHxkAAAAA5E62TgjffvttbzE0NBTeu3r16ltvvVUp9Zvf/KajhwUAAAAAeZStyOjU1JS3GBgYsF5gYGDgnXfeqdVq0bfjFRIB0+nxx9I+hJRJdjQ196V8/1bWWYKjlo+kAADIlmr9irc4XKl6i1ot+Bt4LrJraHSb8UD0d2SQC9mqEE5P6wHWa9assV7A216v1zt3TAAAAACQU9mqEPb19XmL2Vn76LZr164ppVavjur/oZRaXIwaF0b90E3bhr7iLf6Pu74S3tu+pjIiuqmMdfhPzKYyx7/5e1EH41vaVGZm2V57UxnZ0nhTmQ/v0E+pVPTfOxf8u5brhjvEmBJvKnNoZHmZ1Pz+/a479A/u1Ut+U5kiTWUAABlVLt7iLQ6N6MX+qeBN7Zr/V8ScrRho7SpnIX/SUCrMr2xVCG+++WZv8f7771sv4NUGbxQoBQAAAADEl60Twk2bdPmlWq2G987Pz7/zzjtKqXK53NHDAgAAAIA8ylZkdNOmTQMDA1NTU+fOnQvvPX/+/MLCglJq69a0e2OgmxVq74U33rRCoyL/Ymcveovrmz4UdTkjVtFzdXn+2R65kMyqOcMwlCOdNbasLvd6i/sffcNbFP0tyjZ+UMYQLTkYW1AkHGSdVZbrhhOtpm99YtBbfO3JcX2ztvFHMxOz/iLixuyHJ1eZnggioxIola8aX6sFT8vYhvPe4okXLI/o1QG98cKETopWakHctFrXz+TdG/QNylRDAACywNopzfhLINjITEKIbFUIlVKf/vSnlT+efhnZ6F0GAAAAANCKzJ0QPvjgg0qpl19++cyZM8t2/fM//7NSaseOHbfddlsKRwYAAAAA+VKIbsjZee+///5HPvKRd9999w/+4A+OHz8ufUf/4R/+Yf/+/UqpH//4x3v27GnlLrwuo1vK21s/WnSjweEHk73BxdIHE7y16H6nVj1lfZW+weC60oFz2s9kzpqR0XCvMFtn1LgHYMuOlob79V1VpiOua22vGvMurMItUtcO98lakrSjR097C2vvNXn2eo37lbalX/qYfq6IjAIAusjeZ4MepNL6W767YbK8O0d2GQ1/QWZF1q/wtOJ6/d1kbzARs9OtHtVLbx5TK81QaFG2vkOolLr55pv//u///stf/vIvf/nLj33sY6Ojo7feeusvfvGLX/ziF0qpL3zhC7t37077GAEAAAAgDzJXIfQcPXr061//+rIB9F/+8pf/6Z/+qfWZE1QIHbdxFjcywgAAIABJREFUSH8H9abircnecrKlQhW7WmitEIY/8FuoNvzpnUULhcT2sdYPpVRoVgiFtcVOmDkdUaYdSoXw+K+Dj0u3b9QLxhUCALqItKYz/3KgQpgUKoTN27dv3wMPPPDjH//49OnT09PTH/7whx988MG777477eMCAAAAgPzI6AmhUupDH/rQ17/+9bSPAgAAAAByK7snhEDXsYYfWsmRSgAjOjsquY75kqU/SsyuLXHZEiMxgyIrJGBbCKNaH6PMbKwPBLHPRscumZHRx+/TWVDzS/miOqCzHCcv62GVO9Zvaui+AADovJ89/HFvses7r8tGebMP3mHNt+nI+Ci6TubGTgAAAAAAOoMKIdxlfvk48QYzIlw2bKJmaC3BhQtut97VL+uLP72qV0l8jNfEl8Vj3kjwKNr2cWO9MmM5mHhzLKZVcMzytXvrUIpKTS+OKf3Ml/uDDljl4i3xDxgAgI4ZGz/vLf7LZ4O/In51Qo+MspQKbcy/SRL5mwGdRIUQAAAAABzFCSEAAAAAOIrIKKCUbXZNJ0OkzbmptnzLxMVgdKd82GNt5ZKdOEfMxjktMcOo/nfiJfoSnR2dr8VtQiNTCstF5S+IiQIAsm50aLO/MLbu1P+VTjOzZmRUGszQXSYXqBACAAAAgKM4IQQAAAAARxEZhXNmp3U6dHV/VCg0HCJV7cyRWu+uUTdZN/rJ0lYmInZAzE6qrZJwSyg7qmK3HhVzSwKl+ul/aGgwfMnwcELp6qaUumed/r2ypkzlutK29JVJy29L9I0AABDf/uf1xN1V/ixfc9ZxwiOOc0f+1OwWVAgBAAAAwFFUCIEGJFLHa5/oqqa1mU23lA07UCpUsTvNWF2rLXqL6vSUtzArdUfP6ELtUXU2fN2L9QlvcWBYX+VwJbhYta5v+dCIri6+WqnK3nKxoBdDFAYBAMk4snOLXu207L33kZPeYkFZusvIW3Z2OtghGhVCAAAAAHAUJ4QAAAAA4Cgio0DO5SNHasZO2jixUO4iMjs6P6W/WN8/GBzJhrKObkrbGPlGvlKq5rf2kWSpqaqbxQRJ0bfeCfbWavqW907ovaVSQfZO6oCqGivqLjUyUQoAgHZYVdKdZmZb6C4jf2wkNZ8ZTaNCCAAAAACO4oQQAAAAABxFZBRwkeRIrZMVw+GNTIVIw13LOhAiNclQpoFyMPpx3YDOgu5+6oy3mDOCNEsnFiqlVG8puO6hkW3e4uApfd1LVRUpiIyWSnpxsT5vvywAAC0zvwcRHk64YJ5T1Hg/6jJUCAEAAADAUVQI4a7Z6aDbyup+S6HMBdGlQhH9he/U64fWSUdxy4bmB5ml5S+JC0aVb5XfQkaKe4/ft0X2hguD4aqgydxrLSpGCj7Le/y+rfGuAgBA8y5VLU3RorvLMJCwW1AhBAAAAABHcUIIAAAAAI4iMgpAqaXjCqPjo2HZDJRKQCWpljPFcq+3+P4DZW+x99ngG/b16py3kCmF0eaNyGj4KvJ9/RXJMUh3me0bg70HhreErgEAQMOe3hP1DYX7H31D1vXKjF7RXaZLUCEEAAAAAEdRIQSUMhrMONtdxhSz00xM0fVDq2SLig20nJHPMv3uMj2l4FMzqQEeG5/wFlPVqCrffGRTmfiXDFcLzYY012pyhHoWxVvGJceK573F6NDmmAcDAECjJESjlJqZ8BM6Nb3FfM+lwUwGUSEEAAAAAEdxQggAAAAAjiIyCuCGks2OxtdoyrSJiGkTLWckD/Pz53Ri8w9/Pwhz/s+jcQOicVhDpNZOM8boQv0B38P3rJW95f6BBI8KWVCtXwlvLBdv6fyRAIAwW87sqrzuLWJmQ8038Sa+ZoLWUSEEAAAAAEdxQggAAAAAjiIyCufMTF/2Fn3968N7aTdqlVZ2NKb4CZNwuNTeg1RWpSBQOvna+8su9pPXFlSDzLaliej1b3BNSXcZfflyTfYeGN6U7N0hLScvX/QW49PTsnGov99bEBkFkIrdT53xFvIepMxvPfgtuxlImHFUCAEAAADAUVQIATRASoUqq9XCaOFaorUhTdByxtxaSuAFc6FmKSrGLBvKqMP+waBuKR/K3j646C0ODG9VyAspDJqFX4NfLfQvtmM9NWEAbbf/+bPeQhqb1atxO6tJLzcGEmYHFUIAAAAAcBQnhAAAAADgKCKjgJ10l1E0mLmBjHeaicnakEZypEsCLdGjC1sIlIZzpNEh0rF928IbD546s2yhlCoXdaD0wPCWpg8PKZKkaLW+aNuv+zQM9XfqgABAqSM79XvK6LnT3kK+1IBuRIUQAAAAABzFCSEAAAAAOIrIKLAyhhNGy0d21CQ50hV6kJrZ0VaGLIXipmaIVG63b9ASVZWAaKViueELJb04MLz88opAaVYdrpyV9VvvyLJgu6zOkb6sdLJ0h2W6KgAkTF6mBu+8yVtMqOAdam5Ax0dnlLTsNt7mIt8u5W03/oTh7DC/bdRdqBACAAAAgKOoEMI5M/VJb9HXz2fpCev2KYVh5ieU4Wqh2XLG3mkmpvDHpUbNUKqFvcP6g9jRo6fDtzFXs3yhv+4vdtd0YVDmFiqlJv364VjxvLcY6g+akzDRLi1GVXAFk1Py07S2nAGAtghyJX78ZOyO87J3dGizt5BMyslnZmTv7Dn9lsdAwuygQggAAAAAjuKEEAAAAAAcRWQUaADdZeKj00xLzBCpHx+tVaa9xarSTRFXXTVg2VuvzulVuVc2XtONSNRxv3PN9o0140oXvf+QHW0r6c0gkwZrNWv/mCjrBpI8JABolMRETYdGturVSLDxc197Ra9aacaGRFEhBAAAAABHUSGEu2amL8u60QYzZmdhqoXR8lcqjJZwqVAFn6FK227rZ6pSNpyfCrrLhKuFc8ZAi95S1GeCFAbb5+Tli7KWFjKXqrItbocYaREk3WXMkRVMEwGQimr9ircoF2/xFmYvtB7/rWehppARVAgBAAAAwFGcEAIAAACAo4iMAq2i00xMuZlSGN1dpgMWjNinZG/mbXMIhbXTjAQO1w1IRrHhdiZYkQREJYVrxnEfrZ21XCeea7XQD25j0zcGAMk4XNEJ+EMjOjL6gz8ekr3/1//zK2/B8MHsoEIIAAAAAI7ihBAAAAAAHEVkFEgM2dH48tF6VLKjyhYflXajKsGOow2SHKlERgfKQXb08ft0F8pwRzgk6OgZ3UrPmg6dqkZlfaOF+8TSWRRA6ioVvRh9TTcX/cPfjxqfayXvquZbLdqECiEAAAAAOIoKIZA8phTGl49S4YqSGU7oDyRUpYZfumU4odGGRO19VhesSiW95chOKoRxmbMEwzMbzXmAl6rL5wqa0yDnIrsBid6S5fN143b0x7v7nw/u98hOqoUA2uLgqTPe4sKE7mhlhh3CL2vVelCCmq3OtfnoOs38q69LUSEEAAAAAEdxQggAAAAAjiIyCrQXnWZiys2UwmjJZEcNMpOwJ9RfxKpuZHXm/BTiNf+60THIpEgPG9GNzWxevlyT9Y71y/e+9U6wNgOi/paGG8nIVaKzo7VasHds/Ly3GB3a3OjdAUCEQyNbvcXuis6Omi9r8iUFaWz20pMMHcw0KoQAAAAA4ChOCAEAAADAUURGAaWUmpm+7C36+kPZr4SQHY2vG1uPyqCk8EDCLiIT85RSO3YmectmTPTY+IS32FTU70GjkZHR9gVZW7nlF//DXOvenjLacdcdwdvrY+d0aKqJpGiYeSPW+Kh49ZKOB9+zjjmTANpLYqJWC2ZyXjpmIzOoEAIAAACAo6gQAp3GlML4urFUGJN0l1HxG8w0Pn5wlV9BWjUQVUpaU9KDpNYNBBPzkm1J8u1/nwhv3HTH8vtSSh3/9fyygzkwXG79AMx7kdKZSZrEfHK9HstorRnKoD9z6JYYPXraW1j7KyTC/FFGd5qRrg8AkCzzRTtsPok0BDqJCiEAAAAAOIoTQgAAAABwFJFRuGumPinrvuK6VI7BjI96CJFaOTKlsMN6/fGD0golPCFwRXKVVyaDn5GkTCVgeam6qEJ+EtlaoFbTQVY1HGxsJcgqV/nJm/qoSqVg790b9BuiNSm699nlSVFrh5jodKg1RrUqsjFM9F1IfFQO5vH7tjV0awDQBMn2yxBUM81OZLTrUCEEAAAAAEdRIQSyhZYzK8p4p5km5k9Ig5m43WUiRVecrN1HDp464y3ityGRwuDhStVbTE4VZO/okF7U/DEWc2bPcV+9aumJInVL8Y3/HTSkuX1QVxqH+vXEiPjjIqTKd6226C+Cvfd8Qv86hR+aeUmpxTVRDGziktE/TTkG+WxeutoopQbKeqNUgAGgaeacnqAD2Z36deZSNXjplpcm++ubNEjzQyLme5/Zcc1jvpnKO2zqwgmvrkaFEAAAAAAcxQkhAAAAADiKyCiwxMz0ZW/R178+3SNRtJxZScazox1mHTk48tlebyFZUIlNqpV6yRyunPX36mjQQ7etlb0S1LwwofOcksNUSu1+6syyW7O2YIneG86OqqXB1DgkDauUmqouLLs7M6oqwVR5Wg6N3CJ7d1f07ViTou3roCC3HDM7apryE6/WSLCkv+JnbgG4zHytiPm6cf+jb3iLGWWM3rV9gwDpokIIAAAAAI7ihBAAAAAAHEVkFOgm9CC1ys2Uwibajfb4ucpD+zd6i0dfCVpnymw9yX9+7zODsldCg+PT097i+L8H/TyP7NTJScl/PjoR3PLj9+mFJEXr1bnw4UW34hRmzDUcH11jpCW360dpDyzJ2EM5+NOvBdmk8C1PT8wae/1GnVXdqHNsXzDTL/zoOjxoK2Z21KpS0Yv9U0FgeNcd/tzFVg8NAJaQl+JiWX9t4WcPf1z27vrO695iVho5R86kRQdQIQQAAAAARxUWFxdXvlS+FAoFpdSW8va0DwQZ0ldct3xLBprKNIqaoSn1UmH8OYRh9gqhP7upx+i2IvWi/kF9lW+OfkD2Hj2ja3oT5yzlLKmYyYe45rTAcD1NLqaUWlPSzV3eO6eLbGYxMGb1zFrskmqh3N3Te4JWKNL/ply8RYWYU/g8Zg0wfHjR1TazbrnCWK0Qa9eEHlubnFaEj988ZmmZI+15hoeDSx4YLnsL6zMJAK0bGz/vLUaHNstGc56h5789fEHW4TmEpug5hGZcqN06OYfwpTePKaXaespGhRAAAAAAHMUJIQAAAAA4iqYyQH5YAwzO5kit0ZFO5kjNZEuj8VEzMyPxUQkcWoOO2+7Se8v9A7LxUvWqt7AO+pMY5NVKVB5S7k4uppTa8UCft3j3tcaylEsOwBbdlKP6008Xw1f5tt/25lJVtyOwxlxjJjyj987a2uS0oonpW9Ep05jZ18+O6HzvgeEtjR4AADTNTIqKY2/rN6ZTJ/zX2FJwPiKvktHZ0bR0MinaSVQIAQAAAMBRnBACAAAAgKOIjAJKKTVTn/QW0m50Zvqy7O3GjqOCHKlJcqSp9yBtQp/fR/Tznw96kP78OR0alKaR3zZmCcr0POs8wJghT+vFXnryfW+RSAzSvAtJPz52/Jq3GN1nuRFJippp2ER6gWZK+AjjtyqV5qIkRQGkwtoX+u4NuoP0oYd1B+n7H31D9tZfm1p2I9GdRZEIKoQAAAAA4CgqhICLor8V7UL9sBtLhTP+SL1/fSoof60d1s1dXpnUj8g6clBEl86aqZjV5i0bS1FvLtH3Ijc3+FldKpRJVkqpIzt1sWtv7ay3ePe1qMYDiT2iREQ+LTGZj0iqhdYf6/cfuN1bWEeBAUCCpBiolDpc0U2/ykXpaBVUCJ94QUdXjlRe9xZN9CRDsqgQAgAAAICjOCEEAAAAAEcRGQWwXDhQmuMQqTmusH3xUflOfKMDCU2SFTQTjfVgVp7+mn6v0XQkmMvnLzoUoYy+SrxA6a9OTHuLI8beJ4bPeIun9/jdCM4F3QgkVRv3YbYvHRr/7lrIkcrDtGZHv/qPF7xFr9+nx9qeR5y8fDG8ccf6TU0fHoDu1WjU3OxndkknRtVk2d80HFxyTUnnSFt6Y0KiqBACAAAAgKOoEAIrkxEUXT1/ohWONKExq4WebLacWfJh6qD+r3yIO7on2Cm9vLPVWyV8y7Yq2axf/Fxd7pWN339Af+C891ndVEaqgiqzhcFocjCJlgqVOYTDX4wePS17x/ZtW3Yjx96+Gr5lKoSAm169pF+Bf/KmfrG9fXBR9h4a2brs8tZ+ZhPn9OLwxrOy8VMf1YsX1YC3uPhTy4tPpkT/FZQDVAgBAAAAwFGcEAIAAACAowqLi4srXypfCoWCUmpLeXvaB4Is6iuui9rramS0FbkJlCYbH43fXWZh7Wq9skUKJU4pAwkfuXet7D145B1vMRv0nrHJVIQy9DDNGOTwF3TEqPLTKW+xQkw0Uw8tphayo+ZzJVb5TWVM/YP690q6EEmnB6VUqaQX6wb0HwnhhBiAHJNY/rVa1JmCNDaTaLqVvOAopQbv1K9Iu+7Qr3Xf/++TsrfnYn3ZdaUr24rC3/tISrqR0ZfePKaUauspGxVCAAAAAHAUJ4QAAAAA4Ci6jAJLzNR1biE6O4r4ctOhNDs9SK2xQMn7fWfsd3FvKJtxytBRLdSC9dn/d1LlnvkMNBgfNQO01t8TMVcL57vMy+tfp3U6oquq9Suyr1y8paGjAtAVDleCXqCSFJ3zX1XMF42gibHllcRiWgXtoPf9/+3df5BdZX0/8LNJFpKYBQw/apZgWsENCMVEkFaNFbQDBdoapsKMI3aqWEsMM9LakXYQtRas2HbKd1rEqaZlCtYWnYEWOpYBO3wLxQJhCEgKpGDBJrvAN4mQGzc/NmS/f9xzn3vYe3L27u6999x7n9frHx/vuT+eXXY3+9zPez+ftcdVF+GPGrr0H6OYqBACAABESoUQZsBAwpbr6fphtmY402ph9q/km28wU5XtEZL9S/2cey5J77k/qTWVKXwjdt6u/QVXu1+9AU/faMWUwvAWfm53mfCu/2BeRVEvGYjH+pGTw/oHz6XVwvHRqRNNk6YLg7n3D9NN949uqy5y/+lpvpdMm/T97MEsFUIAAIBIORACAABESmQU6F49FCjtQMuZxbVJg4OZ4N+esTRpU9lSGOCpJQ97PRRarAMfXWmp1FZkR4vlziEE4nTlWelPgasffbngbtNMgs1zzkcfnOWeaBsVQgAAgEg5EAIAAERKZBToVV0eKG2+B2nopVbcbnRvLR26d6x+Y05cJ9NHNEQovfnXKk2mUtuYLG16SmH42igeSLh4eLC6uPX8eoPBjTu2zXqDQB+44eHKlFuynUKbTYq2v691499rMAt+SQAAAIiUCiHMRhhImJhJ2K26qn7YZMuZJkuFB0eL3lXtobYx7RszNdPRji1X/F+hZfXDOXSaWXX2YMHVMCgM6FfrHnh6yi03ranHBHaH8YO1wuA0VcHCYmBW8Y/H0scPxkmFEAAAIFIOhAAAAJESGYV8e8d3hvXCxUtL3AntUHqgNPfv4EOONJuZmV/7w/7JXWkMsvvfySs989PkBspKlrY+UDrz7Oh1q06Z8asAfWT76GR1MVHLgq59ZnO4GobcTqO5pGgP/S1D8a8H/ar7f68AAACgLVQIYa5CgxndZfpG7huEXVU2DDpZ4yq97tdypX9Kc+W+ld7yORYX3/ZUdfGRd6fdZdYuP6m1LxFmV2hRA+W6cUvaP+bJl+s3hsLgRK1tzIHdryUt1UOFwcipEAIAAETKgRAAACBSIqMATSmrD03IkRaPLqRVujxHOk12NNvgoaHBzBEjC8P6O5ekTWVClqx5IQsaZEOhV296quCx4qPQMeFbdXQ87R9TqQw0+dgwfjBf01MHm+EfstKpEAIAAETKgRAAACBSIqMALdAYKG15iLS4Bylt1Zho6qoZhvk50lqm62Dt3/pdW/aGixfe8ER1MTg0v7q45/76CLI7Lju1ugj5z+zcwq179lQXdz+fvsQNlWzuNM2kDQ1N87EAbdWY0N6wuxLW+4bSstBEcTp05nqxuWic4wcDFUIAAIBIqRDC9PaO76wuFi5eWnQ3AwnJ6Mwww8ayoZphZ2Rrht3ecqZWKtw/Wr/twFBaE9g7lt6yoFYqTDL1wzeurD3hqrwnrhUb9lUmG6/uC6WIUxovAp0TSoVnrsm5GqaSjo/mXJ2muwx9QYUQAAAgUg6EAAAAkRIZBeicDuRI9Z7pvO5sOZMTH82MDjvY8AtA7lix3aNpWuzS79XbxrzrxKlXc5tShHY1Nzxc72OxYtnULjV3bH02XF27/KS8XQCtNzr+anUxMpLesv5XV4Srn/r21uqiUtnTpg3MZfxg7r90MxV5I5ksFUIAAIBIORACAABEamByMqczWH8bGBhIkuTk4dPK3gi9p7jLaP5DdBxl5lrejLSYQGlbld6DNL/16FBTfzMyrzapLNuDtNiCJVPvOZh57GDtCY8ZTscVLl1S/z3knccMVheyo9Alzrv2sepi/+hEzuVKTti8yTmEIqNN+s8f3p4kSVuPbCqEAAAAkdJUBqDrdGaGYaAPTVuFd8FL7zTzulJheF+/sFR4sHKwushtOZNbNjywO20wE0qF2ZYzoUJYqTeaGQirbYvT1wntLoYXH1mwPaDd7v7c6uriA1dtDDeGnwz0BxVCAACASDkQAgAAREpkFGZg7/jO6qL57jJ79+xIH6K7DHMTcqSdaTnTmCMVIp2j0rOj+WaYHU0ynWYO1LKgzbecmag9z+G1h2SbyqwfOaXJ5wFaJSS0b9wyGm58YSzNcodxo60yl14yLdErvWQ6SYUQAAAgUiqEAD2mwy1nAr1nWiX7Bnknq4XZXvA5syiy7eObqxY2lgqTTLUwdJdZtKz+WqGpzLtOTG/5haOPaGr3QHuE1k0vjI2FG0NhcCIvCBB+WBwMR4m8+RMt15JpEzRSIQQAAIiUAyEAAECkREahQ3SXoa26KkcaCJROq6xOM/nDCYPmOs3kauw0E2KiSZKMjKSL9SMnz/SZob+VPn7z1vPr35UX3/ZUdZGdI9oo5MYPZs8UmXQ6PUGFEAAAIFIOhAAAAJESGQXoWx0eXdhIY9LmdemUwlaYyMwwvG7VqSXuBLrQxh3bqouHdlSqi/Uj5URGsz7y7sHq4lsPprdMVOpdRk/91bSkdN2qdHboB67aGK6GIPq8bsqOGj9YQIUQAAAgUiqEMBt7x3eG9cLFS2f22Fp3mUSDGTqlrJYzuRrLhmqGWWVNKcxX2F2mcSDhtK7elHaqCIUFiNAdW58N67ufnzrB7+rxp8K6k98poatNkiSPbJ+oLg4fGqguRkbq3+ZhV2s3bK4uslMKu6gsSHNUCAEAACLlQAgAABApkVGASJXeciYwzPBQOtBpZpqBhEElk2qb4XDC7Byz0FQmG04LOjB+rfRRb5C8Pia6fXRyytWlI0kpst8U161K13cck6Zb1y4/KVy9ccvT1cWesfQHyP7RiTbtqvgfiGIayTRJhRAAACBSDoQAAACREhmFMoWOo9qNUqKu6kHayDDDpKemFIZmgwuWpIvBTPvBi29L2yeO1EJxHW43+vDO9Mtp29axcONFy5dVF3KkzFGTmeRsTDQ7qLNq86P19aVjaTjz1vNPri7C3MIkSc48+viCVwn33LpnT3WRjX0GoeVp7tVw47oHng43jj3zWuM96V0qhAAAAJFSIYS5CjMJZzqQELpZ97ScyRVtH5r2TSkM3WWSaRvMNMiOIGssDA5mphSGmWZJMrWRRmeE6Wo7d4edJOtHFAaZk1AYvHHLaHWxc3e9BH3TmrS4Fyrk2apgtutSo93p8yWXfi8t0K1YVv/eaawQZuuHG56qTLl69/P1Kl9l6sXkke058w9D/TB8FEmSbDxl25SX+PHG+g+B8S17q4vwQWZ/vDRJL5lOUiEEAACIlAMhAABApERGoSvoLkPX6vLsaK5IAqWldZqpzSScN5wmS+/+3OqCu1+9qZ5D27m7fduaKjvqMAT5XhgbaLxn6JZx3s+mvxdlu2sUt9yAJNNCJiRFs21j1m7YXF2EdOiB3TNuyrKvklZxrju/qA9TNkR6/ejUhGo2ntoY6h4+Mee747s/TL/fv/Vg/Rv5I+8erC7Ch3nBBfWc+T/XProDj4xXF9msO11IhRAAACBSKoTQXUKpMFEtpMt0+XSK5vXfHIuySoUHa2WHC294Itz4L1eeXl2E5hbZwRKh2tYB2b7/w4vTus2WSlrQyHb1CGXLb9XKHd8dqvfeCD081i5v007pQ7ltY2ZRGAwP+c4lpzdeDbXHOy47dcotua8bej4lec1sfvBc/er62mCYfbVvmfHRiXD1ppvTtjEHak/yz1vqj91fu+cs6k5z6SXDrKkQAgAARMqBEAAAIFIio9AyBhISoV5sOZOrP/rQtG9KYbG9Y/UhY2FaWnDr+fV1S/qyhC4160eGw43ZgGhVaBWTZEauFXfXyMT86u+Y7xzK6bRB/5lL96DQwei049Jbto/Wv4Qaw5kHCmcP5jrv2seauZr7zGFSaDazmo2PNgqfjTA7dFfmsfsz8dH0lkxENvSd6jDjB2dNhRAAACBSDoQAAACREhmF7mU4IT0km9Xp9fhoo8ZAafeHSOfSenTerjQCevCIw4rv2egnz6SPDTnMbIj0Qz+fM+ivUehQ+tCOSrjxyZfTRaWSZthuTEbD1TD/7aY1J1cXY8/UE26Nmb2scDXsOSs84VyEAN7yRYvCjdmRcZTi9UMy06+rWbSTDYnl9SPp4vjF9Ya6jT05cx3Mpi4b7C+8Gswbyin2FL/um89Mv81zv9Rvvntz0ZPkpUPDD5Am6SxaOhVCAACASKkQAtBifdNppkAPNaHp8JTC0LVi8fBgdRHm+CVNt+sIpbPb/7dewAmFwTAYbfNoTs3kwo1PTNnJLCwZLuq3USz0F0mS5MYtaQ0zVJ+ueceSmT5PY78cDiXUlpusvr4wVu8YFL6uLr4t/aobGal61v+NAAAgAElEQVTfM3QwKv7PEUrB3/jueLixsbZWXAyci+JnztYPw65+vDEt6K1L6sX8UC0M3wuVLUWvm1sVzLa5ahONZFpChRAAACBSDoQAAACREhmF1gsDCZMWzSTUXYYelRvm6eMcaZAbKC09R9qyKYVDU395WJDpxbJoWdqg4juXnNL40NDDY3hxGtVbP1LvY3Hjlqen3HjRCUeEqxt2pw1mdo/mzBJsDIg2P+qtcUpbaI2TJMnFlXTPuR9Ro2yk8IWxtNVNiCN+tjIWrn7o59Ovk9wk7e1b03uOjqe50+tW5Wwgd3peT8dNQ+wz2LpnT1hvG0+7mIQvkuz9NzyVfpE8dNzUr6Ws0Oho92jxF0m9cNLkZzI0DTqwu9J4tdmkaMvn+NW+Z3M3sDdJv9pvWnN649XwKcp+m+8fnVnbmFx6yXQPFUIAAIBIORACAABEamBycnL6e/WXgYGBJElOHj6t7I0QhZZERvOfWXyUHhdDdnRapedIm8yOvm4gYS1+FjoWXv/ZZeFimBw4Op7+grEl05xwopZYC60Lbz2/nugL3R2v+kCaFM3tFbl2w+bas+VERptPijZakDeHMIRgP7f2qIJdBdm5i8WJxDsuO7W6WPdA+pDsILjs8zQaGkoXS5ekn+eQwk2S5PjF6X+js5YeW7va1dnRbGvWTFY2/dBCj9asSi2SGeK4ubJB3/AFNj460cyusnMpB2tf7aH1aPYTft+mqXvY+ehPw3qapGjLA6IFGvLeSeYbOTf7/bUPp2MZf/uvXwhXxx/dnT62cORgbpfRliRFo2ou+p8/vD1JkrYe2VQIAQAAIqWpDADliGFc4bRKn2c4lymFS894Q3WRrZidWcsuhDrenrGcGsLg0MLqItsRJNRtrr3jleri1DN2havvPGaw9th5jc9cXBgMJZrsHLZG+U9SK3+GDzN8aFmh3JctWE0U7urCG9KRiaEStfaZnGcezN/zQMOi/rrHL04XXV4YDF6/z7EpVyuZ/iyN9cCJwvpb+CRnNTmjMnu3iUr63+i6S3I6r/zzbY+lD6n9F8+vCnayGJgru4HGTjN5FdFPfXtrdfHGlfWYwPijRS/SWBjUP6bLqRACAABEyoEQAAAgUprKQIfoLgPNiDk+2owON6HJzZGGBjPzhg9rvBr6UoSmFJUt9SFyjTm63AznwtpjL7ig/hIXLU+zmyFeeN61j4Wr+5trE9Kk3F3ltpxprQVLspm9qS+Xmx09fCiNjF551lC4sbjtTa8IUytfGKu3bwmR0ZAULc7l5qZDZ9F5KPzXv/tzq6uL7JdfTlJ05unQ4gYtTXpd/6cm1bKjhw0PhtuOGElD3aE7Tvabd9628SnPkds/JmhVZDSqXjKBpjIAAAC0i6Yy0PP27tlRXSgV0gd0mimW+0Z7+8qGuS1nQh0jt5VHqHHsf2ZPzuWGrve5vTf21p7mF46u/1gLXe/31nrJTNPNfw5yn3l/c51pihWXGXPLWaFUmO2eEuZ2hPkT/VEVzApthHburlfb9tUazOQWBou7xcxlJEl47DmferjofoWFwZbUAIsVv0Rx/XDdb9WLzN/9YfqBHBzdX/DMnSkM0m4qhAAAAJFyIAQAAIiUpjLQabrLwKzJkTavfTnS4omFs+lp0aghWToDLR/11txmZpEjLY6PZhvMVGXbzJx6Rvpyw4vThivrR06e6QZ60cW3pZ1mxvPaCDVGRpscUDkbTX+ldSApOhfF37OlJ0XjbCSTpakMAAAA7eJACAAAECldRqF/hHajifgofUoP0uY1prZaFSLNbT0aNAbMZhMibXnscy6KN1MLlOaGD4tzpCHNOJcJh5EkRYNjhtOI7Fgl/aTtGcvJNOYmRTsQEO3ydGiuWYRCG2ko2tNUCAEAACKlQgj9yXBC+ptS4Sy0fIZhbg2hsWzY4ZpJa7raNC8UjvJ6zzSWpHJrhk2WCgczj73ohCNmssvetnHHtrCuVKZezXbfaWwqM5uq4MwL1L1YGJxpDTBX+wqDesl0kgohAABApBwIAQAAImUOIZSpfTMJc15LdpR+Jz7aKi1pP1M8rrAsnQiUNj1EsTE+mo2MhiRkGD+YjYyG3irXvGNZdTG8+MiZ77X33LH12epi7fKTqosLb3giXA2R0ZDCnUFkdIZJ0W6IibYk9jkLkqKdUf3zn03P/ntiDiEAAADt4EAIAAAQKV1GAegTWo+2SsiDdaAHaYflxvxanCPNJg8L46MhzRiyo9npeSEyeuoZOW/fX7cqrvGDQUiKhuzo4FBRl9FpdGVD0bKCoMVMGuxjKoQAAACR0lQGukInu8skGswQDaXCdmhJy5mg9Jphrtb3nmmu00y2zczCZekeVp09WF1ct+qUFu+qR4yOvxrWxb1zPnDVxupiml4yZRcGu7MGmKsDhUGNZLLCHOlAUxkAAADaxYEQAAAgUprKQIxCIEF2lP6Wm0SSI52jxghZf/ee6cTowjyhP8rmR9OmKXcc82y4GnqrxOD2rWNh/eTL6Xr7aJqgGx+daHxICN/OYA5h2/RKQFTbmBI1JkU7SYUQAAAgUiqEEDWlQiJkOkXLZQsLLWk501Vlw1AtnFOpMHQxaa67zLQ27thWXTy0o1JdrB/p20EU2Q/t0ueeri4m8kp/C2ojKLIDPOpm2EtmFo1keqUYmFVWYVAvmaTswmCgQggAABApB0IAAIBImUMI3aXDAwnz9yA+SnzER9untXMLs0rvPZPMIkdaGBnNziEM6cdg0bL6ay0ZTq+uWJb+Ird+ZDhcLR7W1x/WbthcXUxk0qGhE0+IjL6uqUxzkVFJ0baSFJ1pTNQcQgAAANrFgRAAACBSuowCgNajbdTyHqRBNzQjbU0P0jl45zGD1UUMMdEkSe7Ymg5jDKHZ3aP1qyEyOgszTYr2UEzUgEGKqRACAABESoUQusve8Z1hXVaDGcMJiZlSYVs1Vipa3nKmrLJh+0qFC5akpbBs95QP/fzh1cXa5Se19uW6XPh4734+HUi44ox6eeO6VauriwtveKK6GK/sbcnr9lA9MOiewqBGMknXjBzMpUIIAAAQKQdCAACASImMAockO0rMshkn8dH2aV/LmazGvF83zDAMsuMHg5AUDQYzkwnvfj4dqbd2efv21Tkbd2wL6zOPPr66uHFLGgo9fnH999UQGb3slKEp908ywwmbNIuRg92pe9KhTNHNSdFAhRAAACBSDoQAAACREhmF7hU6jpbVbrS+E9lR4tbYIk+ItB1C7K192dGgfc1IsynEnI6jlQP19dDUX8MWLqvf/40r0/Xu0bS5aJi8N63R8Veri14ZTnj7/+4K6xserky5+q4TDyQNwkOu/379sXvG0k/+gcrsBxIG3d9ZtMuTotE2F+2JmGiWCiEAAECkVAiBGci+6aVaSMy0nGmrTpYKs1peNmxyOGEoDIaqYJIkt55/8pS7rXvg6bA+7bipT5Lty/LQjlBkG6v+z+j4ZLi6fmS4uiirfthYwLxu1Snh6sVbnppy//UjpySHNlE5GNahMHgwc2Oj4l4y3VkY7PJiYJbCYM9RIQQAAIiUAyEAAECkBiYnJ6e/V38ZGBhIkuTk4dPK3gg0q/SmMsVkR6FKdrQzOpwjbTSXEOnrsqO1pjKLRxZWF6vOHgwXt2xJFyMj6SKbqywWwqWVWnR0aKh+9aY1U8OouWMAW+6Orc9WF49sn6gu3nlM+vHefPe+cLeJhn4w2QGMp56RFjOGFw9UF+tH6h/OhTc8UV2Mb9mb3pTp4iMp2j7RxkST9idFNz3770mStPXIpkIIAAAQKRVC6CVKhdATlAo7o/RSYdYsyob1amGtVHjY8GDj3RYsSetj2ULZ4FD6nv7Zq9JC2S8cXS8CZicxNDp8KH1I6Ftz9aZ6H5dQtVu7/KQmPogZCBXC7/4wrdrtq6S/hY6PTjT5JOGTEAqJizOftPChbbuz9hnonQphrxQDc8VWIexk/xgVQgAAANrFgRAAACBS5hACLWNKIVSZUtgZ2Yhd6fHREDicTcuZWqxx/2jOxQNDaTbywO5sZDTtQ5NtqRJMVF6pLaY2aEmSZKKWurz4tjQpGpKWSZIMLz7Q+JCW2DaePnPocLN7NGda4IHdU/d8IPNR7B0ruv+i2kTH8Cnt8phoIinaU3p30mAxFUIAAIBIORACAABESpdR6FVd3nE0kB2FKYRI26r07GhWk/HR1w0nDIam/l3PvKH6+/hDI4uqi2Ur0/znjzfWs5GNqcvQqjQrdOxcMly/umJZ+pvh+pHh6mJ48ZHF+2/S6PirU54w9B296eZK4/0P5OVdD1ZyUqZ1lal5166KjPZ0OjRLUrSTdBkFAACgXTSVAdorvK+mVAhVWs60VSjCdEOpsMlOM6GK9bpSYSh21UqF2eLYnrH0IT+qNVnJractqNUAszXDxmphqAommTmELSkMhhpgkhlsuO6Bp6uLsWdy9hw+kGmKgUFDVTBRGGwDVcE+pkIIAAAQKQdCAACASImMQq/aO76zuuiV7jKmFEKjkMKSHW25XpxSmA061uOjeZHIxomF2ZYzQW6ONPijj6Y/ih/aUe/pEqYFBjdueTqsc8ceNgr9Y+5+vv5sj2xPxx7etOaU6uLCjU807nMuSdHu0R8x0QhFlRQNVAgBAAAi5UAIAAAQKZFRoARaj8IUsqNt1T2tR7P9LZucUpivITB5sPCXumygNOQzr77p5eoi23d08XDaZXT9SHrLD56rP8+TL6fx0fN+Nn250Ds068YtaaR1eybaur22WPvo5nQnDfMSp1eYFC1uLto+fRwQjaS5aJxJ0UCFEAAAIFIqhNDzeq67TJZSIUyR+368smGrdE+pMJmu00z+cMIC2dLZ0NRf8HI7teTW2sZrNb21G9I63uDr2tUMNLOX61albWMu3vJU5pknmnlsjhb1j2nt+ME+rgomcRQGI68KZqkQAgAARMqBEAAAIFIio0BXMKUQCmg503I9NKVwxtnRJJOxbMiOZoUcaXEicyI7zLDWcqZxXOEhHpsXVa31kikek9ikDjeS6eOkaAwx0URSNI8KIQAAQKRUCKF/hO4ySW82mAl0moFDyb6Fr1rYKl3VaaZAthQ2g2rhbIU6XnYoRaj4/eC5cOPT4epFy5dVF5/9v2Pt3l6HKQz2OoXBAiqEAAAAkXIgBAAAiJTIKPSnnh5OGMiOQgGdZvpPdlBeboOZGWuuu0xWaPSyYGh+wd32VSari9Hx+o3Di49MX20ojYzuG8qpPdTDqLWXyO8u06Lxg7PWxzHRJI6kqJhok1QIAQAAIuVACAAAECmRUaAHmFIIBXKjX3Kks9BV7UZbP5ywpQ4fGqguLjphKNy4cce26uKmNSdXF+seqPcg3T6a1iEmKrWk6O6cpOi8Wsr0YPg1NS872uT4wWwKt0l9nBSNISaaSIrOXA9UCMfHx1988cUDB0rOkQMAAPSZHqgQXn755bfccssjjzxy5plnlr0X6D390V0mq/GdPzVDaKTlzFxka0TdUC0s0IFS4WCmu8xgrXx36/lpDXB0/NVwNTN+8Okpd8u6+LanqotQKpxYUi8V7h1rqvTXcgqDvUgxsCW6vUK4e/fuO+64o+xdAAAA9KGuPhAeOHDgsssuq1QqZW8EAACgD3VjZPSFF17YtGnTxo0bb7755q1bt5a9HaDbaTkDBWRH56irOs2UYtnKemT0tOOmXv30XaNhPVE5OOVqSIcmmT40/+dXh6uLEDF914n1l7jn/lqOtDaccHzL3voztnQ4YR/HRBNJUZrWjQfCq6666h//8R/L3gUAAECf68YD4fve976FCxdW1y+++OLdd99d7n4AAAD6UjceCNetW7du3brq+r777nMghJYI7UaTPuo42ijESGRHYQrjCueorOxo8UDCIDuXL6fjaDZpOZT++hcm/uVasCSNbi5dMhluXD9ySnURBgyOj06Eq41zBfeM1deLlk3d1Ypl6TNftHy4/hKXHVldXHjDE437rA8nLJxDWDx+sI+Ton0cE00kRdumq5vKAAAA0D7dWCGcuz/4gz8oewtAyZQKoRlazvSluQwnXJCZOli1c/dAWF/6vaenXM1WBQ9UplYIs/Yk6a5++69fmHLpt++r3/LGleme/+ij6U/vL9xSrwv9y/WnVxcf+OB9Ba8Vmz4uDKoKdkB/Hgivv/76srcAAADQ7frzQPiVr3yl4Kr6IQAAQNLuA+HExMTmzZunvdvxxx9/7LGtTKpcddVVBVcdCCE0mOnj7jJBbtpEjhSm0HKmedmWJD09nLAxHZpkeskMDuU0ldleGzq4qzYbMDcmerBhIGGSJPtrN+5PJqZcyraN+X+1DOrtyyaTBud86uH0IY3X4usl039JUQHRUrT3QPjSSy+tXr162rv9xV/8xZVXXtnWnQAAADBFew+EixYtuvDCC6e921ve8pa2bgNgCi1noBlazkyrrFkUcxHKcW85e1F1UanUr1551lB1seGp9Nadu+tXv3PJydXFedc+Vl3kFgPrsuMuDu1g5jfSUEjcdF9aotw7lpkw0fCEqoK9TlWwdO09EB599NF33XVXW18CAACA2TGHEAAAIFL92WUUaFJU3WVyZZMq4qNwKFrOTKsD2dFsNnJy6I1zf8KxZ9L2LaeeUa8QnHn08dXF1p99trr4xnfHw9Xz7kuTovtHpzaGeZ3mkqLF9w9J0aVnvCHcuH10f+M9G0mKdj9J0e6hQggAABApB0IAAIBIdXtk9Kijjnrf+96XJMnQ0FDZe4F+FrKjifhohhApFNCDNFcPTSncU8tkXnTCcY1Xly9aVFvWI6M5Uwfz0p7zdjUV7AwOHnFYzo21dOjOp+t9TkMpI7e5qKRod5IO7XLdfiBctWrVfffdV/YuAAAA+lC3HwgBSqTlDDRDy5keMJTzK9+iZWldLowcTJLk2mc2FzxNfepgrTA402JgruIniWTSYH8UA7MUBnuFvyEEAACIlAMhAABApERGgakMJ8yl5QzMiBxp0pHhhHMxUesQs320XiEInWZC/5h6TDRpcVI0V3FAtP/0R1JUOrSnqRACAABEyoEQAAAgUiKjwCHJjhbTgxRmqjEdF0mItDuzo4ND86uLiUwoNCcpmjdpsCXmkg7txeai/ZEOzZIU7Q8qhAAAAJFSIQRoAS1nYHayNZMYqoXZulb7qoUHjzhsRvcP3WWmNdNeMi3vEKMwWBbFwD6mQggAABApB0IAAIBIiYwC09NdZhZy0zVypFAgtpYznew0M2+oXgNYUOsl81vnHV5drF1+Urj6gas2zuiZOzA2sIdiov2RDk0ERCOjQggAABCpgcnJybL30GkDAwNJkpw8fFrZG4Heo0LYKkqFMGt9XDacRalwcuiN1UVuI5l5w+mN1392WbjxC7ekxZ+9YzkdYoZGFlUXrz760/SmzNiJ0FRGYTCrPwqDqoLdadOz/54kSVuPbCqEAAAAkXIgBAAAiJTIKDBL4qMtJ0cKc9d/gdLiHGl+ZHQo7Rp4zNlD1cXOkP9MkoOjDUnRoXqXwdB+JtwtO3uwTUlR6dDOExDtFSKjAAAAtIsDIQAAQKTMIQRmyXDCljO6EOYuN9HX0znS4nGFIcM5L3ljuPFgLQIakqIHKwcbH1vPgu7KaTc6P/o+otKhREKFEAAAIFIqhABdrfGdXTVDmKnGUk8v1gxz62mhbJht9zJv29S7NV8BaN+AwS6sB/ZNDTBQDGQWVAgBAAAi5UAIAAAQKZFRYK50l+mwbCJIfBRmpzgr2EOB0vwcaef38XpdmA5N+jEgGkiKMhcqhAAAAJFyIAQAAIiUyCjQMiE7moiPdooepNAOvR4obTKxmTvYsCXPXJY+DoUG0qG0nAohAABApFQIgbbQaaYsuW8eKxtCCzVfhuryWmKXl/tyxVADzFIPpANUCAEAACLlQAgAABApkVGA/lccOhIohTZpMt/Y5cnS9okt/5lLKJTSqRACAABESoUQaC/dZbqfPjRQrpYXyjpQclTcmwXFQLqTCiEAAECkHAgBAAAiJTIKdEjIjibio72gMdokRAq9Qp6zdNKh9BAVQgAAgEg5EAIAAERKZBSApmhGCpBLQJSepkIIAAAQKRVCoASGE/aN4vfF1Q+B/qAGSB9TIQQAAIiUAyEAAECkREaBMsmO9jeBUqBXCIUSLRVCAACASDkQAgAAREpkFOgKITuaiI9Gw2BDoBTSoZClQggAABApFUKg6+g0EzN9aIC5UwOE5qkQAgAARMqBEAAAIFIiowD0jCZjYJKl0K9kQaHlVAgBAAAipUIIdC/dZZgdnWmgd6kBQoepEAIAAETKgRAAACBSIqNADwjZ0UR8lDnTmQZKIQsK3UmFEAAAIFIOhAAAAJESGQV6jNajdEbz8TbhUmImCAq9ToUQAAAgUiqEQK9SKqRLzLRCoqJIN1Pxg9ioEAIAAETKgRAAACBSIqNAzzOlkN4yi0ielCmzI/8JTEuFEAAAIFIOhAAAAJESGQWAbteS4J/caW+R9gQ6Q4UQAAAgUiqEQF8xnBAOpcMVp/4rSCrZAX1JhRAAACBSDoQAAACREhkF+pPsKJRLwBKgJ6gQAgAAREqFEOhzoVSYqBYCALyeCiEAAECkHAgBAAAiJTIKRESnGQCALBVCAACASDkQAgAAREpkFIiR7CgAQKJCCAAAEC0VQiBqphQCADFTIQQAAIiUAyEAAECkREYBUjrNAACxUSEEAACIlAMhAABApERGAaaSHQUAIqFCCAAAECkVQoBDMqUQAOhvKoQAAACRciAEAACIlMgoQFN0mgEA+o8KIQAAQKRUCAFmRqkQAOgbKoQAAACRciAEAACIlMgowCyZUggA9DoVQgAAgEg5EAIAAERKZBSgBbQeBQB6kQohAABApFQIAVpJqRAA6CEqhAAAAJFyIAQAAIiUyChAW5hSCAB0PxVCAACASDkQAgAAREpkFKDttB4FALqTCiEAAECkVAgBOkepEADoKiqEAAAAkXIgBAAAiJTIKEAJTCkEALqBCiEAAECkVAgBSqbTDABQFhVCAACASA1MTk6WvYdOGxgYKHsLAAAATWnrkU2FEAAAIFIxVgiJ05o1a/7jP/7jgQceeM973lP2XoC2+OhHP3rrrbfecsstl156adl7Adri85///B//8R9/6Utfuuaaa8reC/QJFUIAAIBIORACAABEyoEQAAAgUg6EAAAAkXIgBAAAiJQDIQAAQKQcCAEAACLlQAgAABApB0IAAIBIDUxOTpa9BwAAAEqgQggAABApB0IAAIBIORACAABEyoEQAAAgUg6EAAAAkXIgBAAAiJQDIQAAQKQcCAEAACLlQAgAABApB0IAAIBILSh7A1CmXbt2bdmyZWxs7KSTTnrrW9+6YIHvCOhP27dvv/fee1evXr1y5cqy9wLM0q5dux5//PEdO3Ycd9xxq1evXrRoUdk7gn6gQkikHn300V/8xV888sgj3/nOd/76r//62972tje84Q2f+MQntm/fXvbWgNb75je/+eEPf/jOO+8seyPAbIyPj69fv/5Nb3rTL/3SL1100UXvec973vSmN1199dUTExNlbw16ngMhMdqwYcNZZ5310EMPJUmyZMmSE088cf78+fv379+wYcPKlSsff/zxsjcItNK+fftuvvnmsncBzNK+ffve//73f+1rX9uzZ0+SJMcee2ySJLt27fryl7/8G7/xGwcPHix7g9DbHAiJzksvvfSZz3zm4MGDJ5xwwj333LNr165nn322Uql85StfWbhw4c6dOz/ykY/s3bu37G0CrbF9+/aPfexjzzzzTNkbAWbp85//fPU93Msvv3zr1q0vv/zyf//3f1900UVJktx5551/9Vd/VfYGobcNTE5Olr0H6KgrrrjixhtvTJLkoYceOuuss7KXvv71r69bty5Jkm984xuf+MQnytkf0AqbN2/+9re//fjjj997773hLZ4//dM//f3f//1yNwbMyI4dO9785jePj49fcMEFd95557x5aTFjz549733vex999NHh4eHnn39+cHCw3H1C71IhJDr/+q//miTJL//yL085DSZJcvnlly9dujRJkkceeaSEnQGtc//991933XV33XWXgj/0tLvuumt8fDxJkj/5kz8Jp8EkSRYtWnTllVcmSTI6OvrAAw+Utj/ofXoqEpeJiYkf/ehHSZKcccYZuXd429ve9sADD0iXQa8755xz/vZv/zb834997GMlbgaYtXvuuSdJkhNOOOH000+fcumCCy6YP3/+a6+9du+9955zzjll7A76gQMhcdm3b9/v/d7vJUmydu3a3Dv8+Mc/TpJk+fLlHd0W0GorV67MTphwIIQe9V//9V9Jkqxevbrx0tKlS08//fTHHnvs6aef7vi+oH84EBKXJUuW/Nmf/dmhrt5+++3VA+HZZ5/duT0BAIdQzfWsWLEi9+qKFSsee+yx5557rrObgr7ibwgh9fDDD3/84x9PkmTFihW/+Zu/WfZ2AICkUqkkSXLUUUflXq3e/uqrr3Z0T9BfHAghGR8f/8IXvrBmzZpXXnnlqKOO+qd/+qfDDjus7E0BQOz27t1bHTO4cOHC3DssWrQoSZKf/vSnHd0W9BcHQqI2OTl5yy23jIyMfOlLX5qYmDjllFO+//3vv/3tby97XwBAsmBB+sdNr732Wu4dJiYmkiQZGBjo3J6g7/gbQnrezTff/MorrxTf58QTT/y1X/u1KTc++eSTv/M7v/Pggw8mSbJ48eLPfOYzV1999eGHH96ujQKzde+99z755JPF9zn88MOrc0SBvrFgwYLDDjts//79h5ofU719yZIlnd0X9BUHQnretddeO+1fk3/wgx+cciD85je/ecUVV+zbt2/+/Pkf//jHv/jFLw4PD7dzm8Ds/cM//MOGDRuK73PkkUc6EEL/OfbYY7dt2/bSSy/lXn3xxReTJDnmmGM6uynoKw6E9Lw//OrEoiEAAALYSURBVMM//MlPflJ8n7e+9a3Z//t3f/d3n/zkJycnJ1etWvU3f/M3uc2sge5xySWXnHzyycX3OdSfGAE9beXKldu2bav2Gm30P//zP0mSTPvzASjgQEjPu+yyy2Z0/x/84AeXXXbZ5OTkxRdffOutt+ofA93v3HPPPffcc8veBVCCM84449/+7d82btz42muvzZ8/P3tp+/bt1YjQO97xjpJ2B/1AUxmi89WvfvXAgQNvf/vb//7v/95pEAC62YUXXpgkSaVS+d73vjfl0ne+853qorFNANA8B0Lism3btjvvvDNJkk9/+tOhdxkA0J3e+973nnrqqUmSXHPNNfv27Qu3v/LKK1/+8peTJPmVX/mVt7zlLaXtD3qfAyFx2bRpU7V19e/+7u8ec2if/OQny94pAJDMmzfvz//8z+fNm7dp06b3v//9t9xyyxNPPPH1r399zZo1W7duXbRo0fXXX1/2HqG3qZAQl/BX6a+++mrB3Xbt2tWR7QAA0zjvvPP+8i//8sorr3zwwQerw6KqlixZ8q1vfev0008vcW/QBwYmJyfL3gN0zve///37779/2ruddtppH/rQhzqwH6AzvvjFLyZJcu6557773e8uey/AbDz++ONf+9rXHnzwwZ07d/7Mz/zMOeecc8UVV/zcz/1c2fuCnudACAAAECl/QwgAABApB0IAAIBIORACAABEyoEQAAAgUg6EAAAAkXIgBAAAiJQDIQAAQKQcCAEAACLlQAgAABApB0IAAIBIORACAABEyoEQAAAgUg6EAAAAkXIgBAAAiJQDIQAAQKQcCAEAACLlQAgAABApB0IAAIBIORACAABEyoEQAAAgUg6EAAAAkXIgBAAAiJQDIQAAQKQcCAEAACLlQAgAABApB0IAAIBIORACAABEyoEQAAAgUg6EAAAAkXIgBAAAiJQDIQAAQKQcCAEAACLlQAgAABApB0IAAIBI/X86+94mxyCgEwAAAABJRU5ErkJggg==", + "text/html": [ + "" + ] }, "metadata": {}, "execution_count": 7 @@ -264,11 +267,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/mandelbrot/notebook.pluto.jl b/notebooks/mandelbrot/notebook.pluto.jl index 7245cc1..857ad4a 100644 --- a/notebooks/mandelbrot/notebook.pluto.jl +++ b/notebooks/mandelbrot/notebook.pluto.jl @@ -1,9 +1,18 @@ ### A Pluto.jl notebook ### -# v0.19.25 +# v0.16.0 using Markdown using InteractiveUtils +# ╔═╡ eb79ecc5-d91f-45d2-9bca-7c69b794f8ce +md"# Fractals using Julia" + +# ╔═╡ eb23f2c6-61f4-4a82-b795-033f6f2a0674 +md"Notebook from [HelloJulia.jl](https://github.com/ablaom/HelloJulia.jl)" + +# ╔═╡ ec6ad8e5-c854-41db-935f-ddf6a6bfbbdd +md"Instantiate package environment:" + # ╔═╡ 4474fd86-9496-44c7-af2a-25235e544a31 begin using Pkg @@ -11,24 +20,15 @@ begin Pkg.instantiate() end +# ╔═╡ e2dd3622-41bb-4ec7-8af5-148d95ea2900 +md"Load plotting package and set in-line display type:" + # ╔═╡ 912dc07c-b98e-45fb-a6bf-47194d7e8e12 begin using CairoMakie CairoMakie.activate!(type = "png") end -# ╔═╡ eb79ecc5-d91f-45d2-9bca-7c69b794f8ce -md"# Fractals using Julia" - -# ╔═╡ eb23f2c6-61f4-4a82-b795-033f6f2a0674 -md"Notebook from [HelloJulia.jl](https://github.com/ablaom/HelloJulia.jl)" - -# ╔═╡ ec6ad8e5-c854-41db-935f-ddf6a6bfbbdd -md"Instantiate package environment:" - -# ╔═╡ e2dd3622-41bb-4ec7-8af5-148d95ea2900 -md"Load plotting package and set in-line display type:" - # ╔═╡ 442d865d-b88e-467d-828a-4cc485149963 md""" To plot the famous Mandelbrot set, we need to apply the following function millions of diff --git a/notebooks/mandelbrot/notebook.unexecuted.ipynb b/notebooks/mandelbrot/notebook.unexecuted.ipynb index bd4b9f2..37035ed 100644 --- a/notebooks/mandelbrot/notebook.unexecuted.ipynb +++ b/notebooks/mandelbrot/notebook.unexecuted.ipynb @@ -189,11 +189,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/pkg_composability/notebook.ipynb b/notebooks/pkg_composability/notebook.ipynb index 2bc67c0..a8b416b 100644 --- a/notebooks/pkg_composability/notebook.ipynb +++ b/notebooks/pkg_composability/notebook.ipynb @@ -208,11 +208,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/pkg_composability/notebook.pluto.jl b/notebooks/pkg_composability/notebook.pluto.jl index d6cdb0c..4999ed6 100644 --- a/notebooks/pkg_composability/notebook.pluto.jl +++ b/notebooks/pkg_composability/notebook.pluto.jl @@ -1,22 +1,9 @@ ### A Pluto.jl notebook ### -# v0.19.25 +# v0.16.0 using Markdown using InteractiveUtils -# ╔═╡ 4474fd86-9496-44c7-af2a-25235e544a31 -begin - using Pkg - Pkg.activate(joinpath(@__DIR__, "..", "..")) - Pkg.instantiate() -end - -# ╔═╡ 0256dc40-e8b0-40a8-a6bf-47194d7e8e12 -using Unitful - -# ╔═╡ 0f76a79f-8675-4ec1-95ea-2955abd45275 -using Measurements - # ╔═╡ 4dbb0300-d546-48dd-9bca-7c69b794f8ce md"# Basic demonstration of Julia package composability" @@ -26,9 +13,19 @@ md"Notebook from [HelloJulia.jl](https://github.com/ablaom/HelloJulia.jl)" # ╔═╡ ec6ad8e5-c854-41db-935f-ddf6a6bfbbdd md"Instantiate package environment:" +# ╔═╡ 4474fd86-9496-44c7-af2a-25235e544a31 +begin + using Pkg + Pkg.activate(joinpath(@__DIR__, "..", "..")) + Pkg.instantiate() +end + # ╔═╡ b35b6a58-0335-4dab-8af5-148d95ea2900 md"The Unitiful package allows you to **bind physical units** to numerical data:" +# ╔═╡ 0256dc40-e8b0-40a8-a6bf-47194d7e8e12 +using Unitful + # ╔═╡ 9f8b2438-cea9-4870-828a-4cc485149963 A = 5.0u"m^2/s^2" @@ -41,6 +38,9 @@ The using Measurements package allows you to **propogate uncertainties** in numerical computations: """ +# ╔═╡ 0f76a79f-8675-4ec1-95ea-2955abd45275 +using Measurements + # ╔═╡ bf15f7d4-5ef4-4184-b1b3-dd47e367ba54 b = 5.0 ± 1.2 # or measurement(5.0, 1.2) diff --git a/notebooks/pkg_composability/notebook.unexecuted.ipynb b/notebooks/pkg_composability/notebook.unexecuted.ipynb index bdcb5e8..a257fae 100644 --- a/notebooks/pkg_composability/notebook.unexecuted.ipynb +++ b/notebooks/pkg_composability/notebook.unexecuted.ipynb @@ -144,11 +144,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/pluto_index.jl b/notebooks/pluto_index.jl index 5b829ce..41141b0 100644 --- a/notebooks/pluto_index.jl +++ b/notebooks/pluto_index.jl @@ -1,5 +1,5 @@ ### A Pluto.jl notebook ### -# v0.19.25 +# v0.19.42 using Markdown using InteractiveUtils @@ -24,7 +24,7 @@ Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" PLUTO_MANIFEST_TOML_CONTENTS = """ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.0" +julia_version = "1.10.3" manifest_format = "2.0" project_hash = "1f8f362efbc96b36e3e02e3f6877c9789d681061" @@ -57,21 +57,26 @@ uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" [[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" @@ -86,11 +91,11 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" +version = "2.28.2+1" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" +version = "2023.1.10" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" @@ -99,7 +104,7 @@ version = "1.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.0" +version = "1.10.0" [[deps.Printf]] deps = ["Unicode"] @@ -110,7 +115,7 @@ 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.SHA]] @@ -143,17 +148,17 @@ uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" +version = "1.2.13+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" """ # ╔═╡ Cell order: diff --git a/notebooks/secret_sauce/notebook.ipynb b/notebooks/secret_sauce/notebook.ipynb index c68fa0b..cb84916 100644 --- a/notebooks/secret_sauce/notebook.ipynb +++ b/notebooks/secret_sauce/notebook.ipynb @@ -92,7 +92,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.003289 seconds (559 allocations: 38.034 KiB, 95.68% compilation time)\n" + " 0.003674 seconds (537 allocations: 37.133 KiB, 95.45% compilation time)\n" ] }, { @@ -135,7 +135,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.000131 seconds (44 allocations: 2.188 KiB)\n" + " 0.000151 seconds (43 allocations: 2.156 KiB)\n" ] }, { @@ -170,12 +170,12 @@ "output_type": "stream", "text": [ "; @ string:1 within `add`\n", - "define i64 @julia_add_9602(i64 signext %0, i64 signext %1) #0 {\n", + "define i64 @julia_add_2325(i64 signext %0, i64 signext %1) #0 {\n", "top:\n", "; ┌ @ int.jl:87 within `+`\n", " %2 = add i64 %1, %0\n", + " ret i64 %2\n", "; └\n", - " ret i64 %2\n", "}\n" ] } @@ -206,7 +206,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "3-element Vector{Float64}:\n 0.279141737889266\n 0.2040447210897529\n 0.5645785194264381" + "text/plain": "3-element Vector{Float64}:\n 0.7431637368576477\n 0.030701177164791704\n 0.15852663813312062" }, "metadata": {}, "execution_count": 6 @@ -226,13 +226,13 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.002529 seconds (444 allocations: 30.296 KiB, 95.43% compilation time)\n" + " 0.002530 seconds (432 allocations: 29.953 KiB, 94.16% compilation time)\n" ] }, { "output_type": "execute_result", "data": { - "text/plain": "3-element Vector{Float64}:\n 1.2611369749751318\n 0.3854230822586484\n 0.6113573224074035" + "text/plain": "3-element Vector{Float64}:\n 0.8314233209161767\n 0.9282456668245344\n 0.36794638988610495" }, "metadata": {}, "execution_count": 7 @@ -258,13 +258,13 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.000104 seconds (45 allocations: 2.266 KiB)\n" + " 0.000123 seconds (44 allocations: 2.234 KiB)\n" ] }, { "output_type": "execute_result", "data": { - "text/plain": "3-element Vector{Float64}:\n 1.2611369749751318\n 0.3854230822586484\n 0.6113573224074035" + "text/plain": "3-element Vector{Float64}:\n 0.8314233209161767\n 0.9282456668245344\n 0.36794638988610495" }, "metadata": {}, "execution_count": 8 @@ -437,9 +437,9 @@ { "output_type": "execute_result", "data": { - "text/plain": "# 2 methods for generic function \"add\" from \u001b[33mMain.var\"##301\"\u001b[39m:\n [1] add(\u001b[90mx\u001b[39m::\u001b[1mInt64\u001b[22m, \u001b[90my\u001b[39m::\u001b[1mMatrix\u001b[22m\u001b[0m{Int64})\n\u001b[90m @\u001b[39m \u001b[90m\u001b[4mstring:1\u001b[24m\u001b[39m\n [2] add(\u001b[90mx\u001b[39m, \u001b[90my\u001b[39m)\n\u001b[90m @\u001b[39m \u001b[90m\u001b[4mstring:1\u001b[24m\u001b[39m", + "text/plain": "# 2 methods for generic function \"add\" from \u001b[35mMain.var\"##227\"\u001b[39m:\n [1] add(\u001b[90mx\u001b[39m::\u001b[1mInt64\u001b[22m, \u001b[90my\u001b[39m::\u001b[1mMatrix\u001b[22m\u001b[0m{Int64})\n\u001b[90m @\u001b[39m \u001b[90m\u001b[4mstring:1\u001b[24m\u001b[39m\n [2] add(\u001b[90mx\u001b[39m, \u001b[90my\u001b[39m)\n\u001b[90m @\u001b[39m \u001b[90m\u001b[4mstring:1\u001b[24m\u001b[39m", "text/html": [ - "# 2 methods for generic function add from \u001b[33mMain.var\"##301\"\u001b[39m:" + "# 2 methods for generic function add from \u001b[35mMain.var\"##227\"\u001b[39m:" ] }, "metadata": {}, @@ -617,7 +617,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "8-element Vector{Any}:\n AbstractFloat\n AbstractIrrational\n FixedPointNumbers.FixedPoint\n Integer\n Rational\n Ratios.SimpleRatio\n StatsBase.PValue\n StatsBase.TestStat" + "text/plain": "10-element Vector{Any}:\n AbstractFloat\n AbstractIrrational\n FixedPointNumbers.FixedPoint\n Integer\n IntervalArithmetic.ExactReal\n IntervalArithmetic.Interval\n Rational\n Ratios.SimpleRatio\n StatsBase.PValue\n StatsBase.TestStat" }, "metadata": {}, "execution_count": 21 @@ -715,7 +715,7 @@ { "output_type": "execute_result", "data": { - "text/plain": "2×3 Matrix{Float64}:\n 5.0 5.0 4.0\n 5.0 4.0 4.0" + "text/plain": "2×3 Matrix{Float64}:\n 4.0 4.0 4.0\n 4.0 5.0 5.0" }, "metadata": {}, "execution_count": 26 @@ -757,11 +757,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/notebooks/secret_sauce/notebook.unexecuted.ipynb b/notebooks/secret_sauce/notebook.unexecuted.ipynb index 3e5a712..80df4cd 100644 --- a/notebooks/secret_sauce/notebook.unexecuted.ipynb +++ b/notebooks/secret_sauce/notebook.unexecuted.ipynb @@ -513,11 +513,11 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.0" + "version": "1.10.3" }, "kernelspec": { - "name": "julia-1.9", - "display_name": "Julia 1.9.0", + "name": "julia-1.10", + "display_name": "Julia 1.10.3", "language": "julia" } }, diff --git a/precompile/warmup.jl b/precompile/warmup.jl deleted file mode 100644 index 67dd3ea..0000000 --- a/precompile/warmup.jl +++ /dev/null @@ -1,83 +0,0 @@ -const WARMUP_PLUTO_NOTEBOOK = joinpath( - @__DIR__, - "..", - "notebooks", - "01_first_steps", - "notebook.pluto.jl" -) - -if haskey(ENV, "TEST_MLJBASE") - ENV["TEST_MLJBASE"] = "false" -end - -using Pkg -Pkg.activate(joinpath(@__DIR__, "..")) - -using Pluto -using MLJ -import BetaML -using DataFrames -using CairoMakie -CairoMakie.activate!(type="svg") - -Tree = BetaML.Trees.DecisionTreeClassifier - -redirect_stdout(Pipe()) do - -session = Pluto.ServerSession() -session.options.server.port = 40404 -session.options.server.launch_browser = false -session.options.security.require_secret_for_access = false - -path = tempname() -original = WARMUP_PLUTO_NOTEBOOK -# so that we don't overwrite the file: -Pluto.readwrite(original, path) - -# @info "Loading notebook" -nb = Pluto.load_notebook(Pluto.tamepath(path)); -session.notebooks[nb.notebook_id] = nb; - -# @info "Running notebook" -Pluto.update_save_run!(session, nb, nb.cells; run_async=false, prerender_text=true) - -# nice! we ran the notebook, so we already precompiled a lot - -# some plotting; -function mandelbrot(z) -c = z # starting value and constant shift -max_iterations = 20 -for n = 1:max_iterations - if abs(z) > 2 - return n-1 - end - z = z^2 + c -end -return max_iterations -end -xs = -2.5:0.01:0.75 -ys = -1.5:0.01:1.5 -heatmap(xs, ys, (x, y) -> mandelbrot(x + im*y), - colormap = Reverse(:deep)) - -# some MLJ: -X0, y = make_blobs() -X = DataFrame(X0) -model = Tree() -mach = machine(model, X, y) -fit!(mach, verbosity=0) -predict(mach, X) - -# @info "Starting HTTP server" -# next, we'll run the HTTP server which needs a bit of nasty code -t = @async Pluto.run(session) - -sleep(5) -# download("http://localhost:40404/") - -# this is async because it blocks for some reason -@async Base.throwto(t, InterruptException()) -sleep(2) # i am pulling these numbers out of thin air - -end -@info "Warmup done" diff --git a/src/HelloJulia.jl b/src/HelloJulia.jl index 4b8c392..2626fb8 100644 --- a/src/HelloJulia.jl +++ b/src/HelloJulia.jl @@ -1,27 +1,18 @@ module HelloJulia # should have form "1.x" for some integer x; do not use v"1.x". -const JULIA_VERSION = "1.9" +const JULIA_VERSION = "1.10" const ROOT = joinpath(@__DIR__, "..") const NOTEBOOKS = joinpath(ROOT, "notebooks") # need Pluto here? -import IJulia, PrecompilePlutoCourse, Pluto, Pkg +import IJulia, Pluto, Pkg export go, start, pluto, pluto_now, setup, stop, jupyter, jupiter const START_NOTEBOOK = joinpath(pkgdir(@__MODULE__), "notebooks", "pluto_index.jl") -go() = IJulia.notebook(dir=NOTEBOOKS) -const jupyter = go -const jupiter = go - -const pluto = PrecompilePlutoCourse.start -const stop = PrecompilePlutoCourse.stop -function setup() - Pkg.build("Conda") - Pkg.build("IJulia") - PrecompilePlutoCourse.create_sysimage -end +jupyter() = IJulia.notebook(dir=NOTEBOOKS) +pluto() = Pluto.run(notebook=START_NOTEBOOK) function __init__() if haskey(ENV, "TEST_MLJBASE") @@ -32,15 +23,6 @@ function __init__() @warn "This version of HelloJulia.jl should be run "* "under Julia $JULIA_VERSION" "but you're running $VERSION" - - PrecompilePlutoCourse.configure( - @__MODULE__; - start_notebook = START_NOTEBOOK, - warmup_file = joinpath(pkgdir(@__MODULE__), "precompile", "warmup.jl"), - packages = [:Pluto, :HelloJulia, :CairoMakie, :Distributions] - ) end -pluto_now() = Pluto.run(notebook=START_NOTEBOOK) - end # module diff --git a/test/runtests.jl b/test/runtests.jl index 27ba77d..13b8d91 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1 +1,5 @@ -true +using HelloJulia +using Test + +@test isdefined(@__MODULE__, :pluto) +@test isdefined(@__MODULE__, :jupyter)