From fbad81866b0e8ba0190191347e0ae1ad6378a783 Mon Sep 17 00:00:00 2001 From: carstenbauer Date: Fri, 12 Jul 2024 14:35:56 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=206ecce?= =?UTF-8?q?4f30ee1f60e67f206e56e57da0b1dfe2bfe=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 2 +- Manifest.toml | 40 ++++++++++----------- index.html | 2 +- package-lock.json | 8 ++--- package.json | 2 +- search/index.html | 2 +- sitemap.xml | 42 +++++++++++++---------- sysadmin_julia/index.html | 4 +-- user_faq/index.html | 4 +-- user_gettingstarted/index.html | 2 +- user_hpcprofiling/index.html | 2 +- user_hpcprofiling/intel_vtune/index.html | 4 +-- user_hpcprofiling/paraver_1.jpg | Bin 0 -> 147794 bytes user_hpcprofiling/paraver_2.gif | Bin 0 -> 33169 bytes user_hpcsystems/index.html | 2 +- user_jlls/index.html | 2 +- user_vscode/index.html | 20 +++++++++++ 17 files changed, 82 insertions(+), 56 deletions(-) create mode 100644 user_hpcprofiling/paraver_1.jpg create mode 100644 user_hpcprofiling/paraver_2.gif create mode 100644 user_vscode/index.html diff --git a/404.html b/404.html index 1b8e739..0ed4a2f 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ - 404: File not found

404: File not found

The requested file was not found.

Please click here to go to the home page.

\ No newline at end of file + 404: File not found

404: File not found

The requested file was not found.

Please click here to go to the home page.

\ No newline at end of file diff --git a/Manifest.toml b/Manifest.toml index 4aa2023..bdb3aa3 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -15,21 +15,21 @@ uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[deps.BitFlags]] -git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.8" +version = "0.1.9" [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" +git-tree-sha1 = "b8fe8546d52ca154ac556809e10c75e6e7430ac8" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" +version = "0.7.5" [[deps.ConcurrentUtilities]] deps = ["Serialization", "Sockets"] -git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" +git-tree-sha1 = "ea32b83ca4fefa1768dc84e504cc0a94fb1ab8d1" uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.1" +version = "2.4.2" [[deps.Dates]] deps = ["Printf"] @@ -78,15 +78,15 @@ version = "0.10.2" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "995f762e0182ebc50548c434c171a5bb6635f8e4" +git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.4" +version = "1.10.8" [[deps.IOCapture]] deps = ["Logging", "Random"] -git-tree-sha1 = "8b72179abc660bfab5e28472e019392b97d0985c" +git-tree-sha1 = "b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770" uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" -version = "0.2.4" +version = "0.2.5" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -128,15 +128,15 @@ uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Literate]] deps = ["Base64", "IOCapture", "JSON", "REPL"] -git-tree-sha1 = "bad26f1ccd99c553886ec0725e99a509589dcd11" +git-tree-sha1 = "eef2e1fc1dc38af90a18eb16e519e06d1fd10c2a" uuid = "98b081ad-f1c9-55d3-8b20-4c87d4299306" -version = "2.16.1" +version = "2.19.0" [[deps.LiveServer]] deps = ["HTTP", "LoggingExtras", "MIMEs", "Pkg", "Sockets", "Test"] -git-tree-sha1 = "24d05efe53436b22a42bf2ae459f47c48b0c2603" +git-tree-sha1 = "1e46b873b8ef176e23ee43f96e72cd45c20bafb4" uuid = "16fef848-5104-11e9-1b77-fb7a48bbb589" -version = "1.2.7" +version = "1.3.1" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" @@ -186,15 +186,15 @@ version = "2.0.0" [[deps.OpenSSL]] deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "af81a32750ebc831ee28bdaaba6e1067decef51e" +git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.2" +version = "1.4.3" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "60e3045590bd104a16fefb12836c00c0ef8c7f8c" +git-tree-sha1 = "a028ee3cb5641cccc4c24e90c36b0a4f7707bdf5" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.13+0" +version = "3.0.14+0" [[deps.OrderedCollections]] git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" @@ -267,9 +267,9 @@ uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.TranscodingStreams]] deps = ["Random", "Test"] -git-tree-sha1 = "a09c933bebed12501890d8e92946bbab6a1690f1" +git-tree-sha1 = "60df3f8126263c0d6b357b9a1017bb94f53e3582" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.5" +version = "0.11.0" [[deps.URIs]] git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" diff --git a/index.html b/index.html index ba3031e..b806485 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ - Julia On HPC Clusters

Julia on HPC clusters

πŸ‘‹ Welcome to the notes about the Julia programming language on HPC clusters.

Objective

The goal of these notes is to offer good practices and tips and tricks about how to use and set up Julia on HPC clusters. The target audiences are therefore Julia users on clusters as well as HPC system administrators.

Acknowledgements

These notes don't come out of nowhere but stem from endless conversations with many people (see below for a certainly incomplete list) on the Julia discourse, over Slack and Discord, as well as in-person discussions at Julia HPC minisymposia, BoFs, and workshops.

They also build upon previous efforts to document best practices, most notably https://github.com/hlrs-tasc/julia-on-hpc-systems/, from which we took (among other things) the HPC systems with Julia support information.

People

Maintainers

Contributors

The following people have provided valuable contributions, either in the form of PRs or via public or private communication:

(You think we forgot your name here? Please make a PR!)

\ No newline at end of file + Julia On HPC Clusters

Julia on HPC clusters

πŸ‘‹ Welcome to the notes about the Julia programming language on HPC clusters.

Objective

The goal of these notes is to offer good practices and tips and tricks about how to use and set up Julia on HPC clusters. The target audiences are therefore Julia users on clusters as well as HPC system administrators.

Acknowledgements

These notes don't come out of nowhere but stem from endless conversations with many people (see below for a certainly incomplete list) on the Julia discourse, over Slack and Discord, as well as in-person discussions at Julia HPC minisymposia, BoFs, and workshops.

They also build upon previous efforts to document best practices, most notably https://github.com/hlrs-tasc/julia-on-hpc-systems/, from which we took (among other things) the HPC systems with Julia support information.

People

Maintainers

Contributors

The following people have provided valuable contributions, either in the form of PRs or via public or private communication:

(You think we forgot your name here? Please make a PR!)

\ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d1e011d..16ef736 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "dependencies": { "cheerio": "^1.0.0-rc.12", - "highlight.js": "^11.9.0", + "highlight.js": "^11.10.0", "lunr": "^2.3.9" } }, @@ -140,9 +140,9 @@ } }, "node_modules/highlight.js": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", - "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.10.0.tgz", + "integrity": "sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==", "engines": { "node": ">=12.0.0" } diff --git a/package.json b/package.json index 160bd69..4ed8b57 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "dependencies": { "cheerio": "^1.0.0-rc.12", - "highlight.js": "^11.9.0", + "highlight.js": "^11.10.0", "lunr": "^2.3.9" } } diff --git a/search/index.html b/search/index.html index 5b1d7ad..950eb74 100644 --- a/search/index.html +++ b/search/index.html @@ -1 +1 @@ - Search β‹… YourWebsite

Number of results found:

\ No newline at end of file + Search β‹… YourWebsite

Number of results found:

\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 7ad3fbe..f335c5b 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,56 +2,62 @@ - https://juliahpc.github.io/user_jlls/index.html - 2024-03-20 + https://juliahpc.github.io/sysadmin_julia/index.html + 2024-07-12 monthly 0.5 - https://juliahpc.github.io/user_hpcprofiling/index.html - 2024-03-20 + https://juliahpc.github.io/search/index.html + 2024-07-12 monthly 0.5 - https://juliahpc.github.io/index.html - 2024-03-20 + https://juliahpc.github.io/user_hpcprofiling/intel_vtune/index.html + 2024-07-12 monthly 0.5 - https://juliahpc.github.io/user_gettingstarted/index.html - 2024-03-20 + https://juliahpc.github.io/user_jlls/index.html + 2024-07-12 monthly 0.5 - https://juliahpc.github.io/sysadmin_julia/index.html - 2024-03-20 + https://juliahpc.github.io/user_vscode/index.html + 2024-07-12 monthly 0.5 - https://juliahpc.github.io/search/index.html - 2024-03-20 + https://juliahpc.github.io/user_hpcprofiling/index.html + 2024-07-12 monthly 0.5 - https://juliahpc.github.io/user_hpcsystems/index.html - 2024-03-20 + https://juliahpc.github.io/user_faq/index.html + 2024-07-12 monthly 0.5 - https://juliahpc.github.io/user_hpcprofiling/intel_vtune/index.html - 2024-03-20 + https://juliahpc.github.io/index.html + 2024-07-12 monthly 0.5 - https://juliahpc.github.io/user_faq/index.html - 2024-03-20 + https://juliahpc.github.io/user_gettingstarted/index.html + 2024-07-12 + monthly + 0.5 + + + https://juliahpc.github.io/user_hpcsystems/index.html + 2024-07-12 monthly 0.5 diff --git a/sysadmin_julia/index.html b/sysadmin_julia/index.html index a24d455..b069e6c 100644 --- a/sysadmin_julia/index.html +++ b/sysadmin_julia/index.html @@ -1,4 +1,4 @@ - Admin: How to provide Julia to users?

Admin: How to provide Julia to users?


Content


Providing Julia itself

It is generally best to just provide the regular, pre-built Julia binaries from https://julialang.org/downloads/. They work and are efficient.

You might be tempted to build Julia from source but this is almost never necessary or advantageous (and can be cumbersome). The reason is pretty simple: Julia is a compiler in itself and user code is therefore barely influenced by how you compiled Julia. Hence, unless you know exactly what you're doing and have a good reason in mind, the pre-built binaries are the way to go.

‴ back to Content

Don't provide packages

We strongly recommend against trying to provide Julia packages (e.g. MPI.jl or CUDA.jl) in a central fashion. There are a few important technical reasons but the two most important reasons to not do it are conceptual

  1. It conflicts with the idea of local, self-contained Julia environments.

  2. Packages evolve too quickly (i.e. your central depot is out of date pretty quickly).

Short explanation: To have people use your centrally provided version of a package you would have to instruct them to not add that package to their (local) Julia environment as otherwise they'll very(!) likely get a different version of the package and will end up not using your central version to begin with. To make using PackageX still work, you would then have to adjust JULIA_LOAD_PATH appropriately. However, not only doesn't the user not get the version of PackageX that they potentially want/need, the local Project.toml/Manifest.toml would not even contain PackageX and therefore severely undermine self-containedness and reproducibility - one of the nicest properties of Julia projects.

Generally speaking, there is also little reason to provide regular Julia packages in a central fashion in the first place. After all, most of them don't take up that much disk space and a little bit of redundancy is acceptable on modern HPC clusters. In this regard, note that all packages only get installed once per user - and not per project as is the case for python - since Julia installs packages to a user-central depot and reuses them across projects.

‴ back to Content

Providing global package preferences

What you might want to do is to globally override binary dependencies of Julia packages, so-called Julia artifacts (JLLs), such that users automatically get redirected to system binaries under the hood. This is especially relevant if vendor specific binaries (e.g. a Cray MPI library) are the only ones that function properly on the HPC cluster. Below we describe how to realize this by overriding package preferences. However, note that JLLs have the big advantage that they are convenient and work nicely together. You should hence only override preferences if there is a good reason for it.

Example: MPI.jl and CUDA.jl

In this example we show how to make MPI.jl automatically use a system OpenMPI installation as well as make CUDA.jl use a system CUDA installation. The two steps are pretty straightforward:

  1. Create a global Project.toml that sets the preferences of the target packages.

  2. Append the path to the global Project.toml to JULIA_LOAD_PATH (for all users).

According to the documentation of MPI.jl (relevant section) and CUDA.jl (relevant section) the preferences that we need to modify are actually not in MPI.jl or CUDA.jl but rather in MPIPreferences.jl and CUDA_Runtime_jll.jl. We thus create a Project.toml like below:

πŸ’‘ Note
Tip: To obtain the correct preferences blocks you can use MPIPreferences.use_system_binary() and CUDA.set_runtime_version!(v"11.7"; local_toolkit=true) respectively. This will create the relevant blocks in a LocalPreferences.toml file. The only thing you need to adjust is the block header, e.g. MPIPreferences -> preferences.MPIPreferences.
[extras]
+             Admin: How to provide Julia to users?   

Admin: How to provide Julia to users?


Content


Providing Julia itself

It is generally best to just provide the regular, pre-built Julia binaries from https://julialang.org/downloads/. They work and are efficient.

You might be tempted to build Julia from source but this is almost never necessary or advantageous (and can be cumbersome). The reason is pretty simple: Julia is a compiler in itself and user code is therefore barely influenced by how you compiled Julia. Hence, unless you know exactly what you're doing and have a good reason in mind, the pre-built binaries are the way to go.

‴ back to Content

Don't provide packages

We strongly recommend against trying to provide Julia packages (e.g. MPI.jl or CUDA.jl) in a central fashion. There are a few important technical reasons but the two most important reasons to not do it are conceptual

  1. It conflicts with the idea of local, self-contained Julia environments.

  2. Packages evolve too quickly (i.e. your central depot is out of date pretty quickly).

Short explanation: To have people use your centrally provided version of a package you would have to instruct them to not add that package to their (local) Julia environment as otherwise they'll very(!) likely get a different version of the package and will end up not using your central version to begin with. To make using PackageX still work, you would then have to adjust JULIA_LOAD_PATH appropriately. However, not only doesn't the user not get the version of PackageX that they potentially want/need, the local Project.toml/Manifest.toml would not even contain PackageX and therefore severely undermine self-containedness and reproducibility - one of the nicest properties of Julia projects.

Generally speaking, there is also little reason to provide regular Julia packages in a central fashion in the first place. After all, most of them don't take up that much disk space and a little bit of redundancy is acceptable on modern HPC clusters. In this regard, note that all packages only get installed once per user - and not per project as is the case for python - since Julia installs packages to a user-central depot and reuses them across projects.

‴ back to Content

Providing global package preferences

What you might want to do is to globally override binary dependencies of Julia packages, so-called Julia artifacts (JLLs), such that users automatically get redirected to system binaries under the hood. This is especially relevant if vendor specific binaries (e.g. a Cray MPI library) are the only ones that function properly on the HPC cluster. Below we describe how to realize this by overriding package preferences. However, note that JLLs have the big advantage that they are convenient and work nicely together. You should hence only override preferences if there is a good reason for it.

Example: MPI.jl and CUDA.jl

In this example we show how to make MPI.jl automatically use a system OpenMPI installation as well as make CUDA.jl use a system CUDA installation. The two steps are pretty straightforward:

  1. Create a global Project.toml that sets the preferences of the target packages.

  2. Append the path to the global Project.toml to JULIA_LOAD_PATH (for all users).

According to the documentation of MPI.jl (relevant section) and CUDA.jl (relevant section) the preferences that we need to modify are actually not in MPI.jl or CUDA.jl but rather in MPIPreferences.jl and CUDA_Runtime_jll.jl. We thus create a Project.toml like below:

πŸ’‘ Note
Tip: To obtain the correct preferences blocks you can use MPIPreferences.use_system_binary() and CUDA.set_runtime_version!(v"11.7"; local_toolkit=true) respectively. This will create the relevant blocks in a LocalPreferences.toml file. The only thing you need to adjust is the block header, e.g. MPIPreferences -> preferences.MPIPreferences.
[extras]
 MPIPreferences = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267"
 CUDA_Runtime_jll = "76a88914-d11a-5bdc-97e0-2f5a05c973a2"
 
@@ -50,4 +50,4 @@
 module load lang/JuliaHPC/1.9.1-foss-2022a-CUDA-11.7.0
 
 # Start Julia and pass on all command-line arguments
-exec julia "${@}"

At PC2 such a script is provided for every Julia version / Julia module (see JuliaHPC_Installer) as well as a generic one that only contains module load lang/JuliaHPC (without a version number) and thus always loads the latest Julia module.

‴ back to Content

Potentially useful resources

‴ back to Content

\ No newline at end of file +exec julia "${@}"

At PC2 such a script is provided for every Julia version / Julia module (see JuliaHPC_Installer) as well as a generic one that only contains module load lang/JuliaHPC (without a version number) and thus always loads the latest Julia module.

‴ back to Content

Potentially useful resources

‴ back to Content

\ No newline at end of file diff --git a/user_faq/index.html b/user_faq/index.html index 600c5a7..604b313 100644 --- a/user_faq/index.html +++ b/user_faq/index.html @@ -1,4 +1,4 @@ - FAQ

FAQ

Content


Should I compile Julia from source?

No, you should not. Use the pre-built binaries from the website or, preferably, a corresponding Lmod module provided by the cluster admins. Compiling Julia from source will generally not improve the performance of your code (Julia is a compiler in itself) but may very well be cumbersome. Unless you know what you're doing and have a very good reason (e.g. creating a debug build with flags like USE_INTEL_JITEVENTS=1) you should not compile Julia yourself.

‴ back to Content

Where should I put the Julia depot?

Ideally, you should set JULIA_DEPOT_PATH to point to a place with the following properties:

  • good (parallel) I/O

  • no tight quotas

  • read and write access

  • no automatic deletion of unused files (or otherwise you have to find a workaround)

On some systems, the best place might be on the parallel file system. On others, it might simply be in $HOME.

‴ back to Content

How should I start Julia within a job script?

Assuming that SLURM is used on your HPC cluster, you should generally start Julia under srun, e.g. srun julia --project mycode.jl. This is especially important if your code is MPI-parallel, in which case srun is a replacement for mpirun/mpiexec, but also recommended for serial code (there are at least a few reasons).

‴ back to Content

How can I force Julia to compile code for a heterogeneous cluster?

Set JULIA_CPU_TARGET to a value that is generic enough to cover all the types of CPUs that you're targeting.

Example: JULIA_CPU_TARGET="generic;skylake-avx512,clone_all;znver2,clone_all".

‴ back to Content

Should I use Distributed.jl or MPI.jl for large-scale parallelism?

While the Distributed standard library provides some convenient tools and has its use cases you should generally use MPI.jl to scale your code up (e.g. to thousands of compute nodes). Not only is MPI the established standard for distributed computing in any programming language, it also makes use of fast interconnects in HPC clusters (which the Distributed standard library currently doesn't).

‴ back to Content

Should I use Julia artifacts (JLLs) or system software?

If JLLs work fine for you then use them. JLLs have the big advantage that they are convenient and, in many cases, "just work" out of the box. System software can (but doesn't necessarily) give better performance but overriding the relevant bits of JLLs can be cumbersome. Generally speaking, we recommend to only manually replace JLL libraries by system software if JLLs don't work (e.g. if a vendor specific MPI is required). However, in such a case it would be even better to nudge the HPC admins and make this setup permanent and generally available in form of a Julia Lmod module.

‴ back to Content

How to cope with a large number of MPI processes accessing the same Julia depot?

In a distributed computing scenario with, e.g., multiple thousands of Julia (MPI) processes, accessing the same Julia depot on a shared file system - when loading packages and precompiled cache files on using PackageX - can become (very) time consuming. A workaround is to bundle up the Julia depot (e.g. as a .tar.gz), distribute it to the local node storage (if available) or local memory (often times mounted as /tmp) of all assigned compute nodes, and then set the JULIA_DEPOT_PATH accordingly.

‴ back to Content

How to avoid LD_LIBRARY_PATH issues?

When using Julia on a system that uses an environment-variable based module system (such as modules or Lmod), the LD_LIBRARY_PATH variable might be filled with entries pointing to different packages and libraries. This might (or might not) lead to issues stemming from Julia loading libraries other than the ones packaged with it. If you encounter such problems, make sure that Julia's lib directory is always the first directory in LD_LIBRARY_PATH.

One possibility to achieve this is to create a wrapper shell script that modifies LD_LIBRARY_PATH before calling the Julia executable. Inspired by a script from UCL's Owain Kenway:

#!/usr/bin/env bash
+             FAQ   

FAQ

Content


Should I compile Julia from source?

No, you should not. Use the pre-built binaries from the website or, preferably, a corresponding Lmod module provided by the cluster admins. Compiling Julia from source will generally not improve the performance of your code (Julia is a compiler in itself) but may very well be cumbersome. Unless you know what you're doing and have a very good reason (e.g. creating a debug build with flags like USE_INTEL_JITEVENTS=1) you should not compile Julia yourself.

‴ back to Content

Where should I put the Julia depot?

Ideally, you should set JULIA_DEPOT_PATH to point to a place with the following properties:

  • good (parallel) I/O

  • no tight quotas

  • read and write access

  • no automatic deletion of unused files (or otherwise you have to find a workaround)

As a rule of thumb: Put the Julia depot on the parallel file system (typically $SCRATCH).

‴ back to Content

How should I start Julia within a job script?

Assuming that SLURM is used on your HPC cluster, you should generally start Julia under srun, e.g. srun julia --project mycode.jl. This is especially important if your code is MPI-parallel, in which case srun is a replacement for mpirun/mpiexec, but also recommended for serial code (there are at least a few reasons).

Note that you can use the slim mpiexecjl wrapper from MPI.jl to use the "correct" MPI driver automatically.

‴ back to Content

How can I force Julia to compile code for a heterogeneous cluster?

Set JULIA_CPU_TARGET to a value that is generic enough to cover all the types of CPUs that you're targeting.

Example: JULIA_CPU_TARGET="generic;skylake-avx512,clone_all;znver2,clone_all".

This compiles all functions (clone_all) for Intel Skylake (skylake-avx512), AMD Zen 2 (znver2), and a generic fallback (generic).

‴ back to Content

Should I use Distributed.jl or MPI.jl for large-scale parallelism?

While the Distributed standard library provides some convenient tools and has its use cases you should generally use MPI.jl to scale your code up (e.g. to thousands of compute nodes). Not only is MPI the established standard for distributed computing in any programming language, it also makes use of fast interconnects in HPC clusters (which the Distributed standard library currently doesn't).

‴ back to Content

Should I use Julia artifacts (JLLs) or system software?

If JLLs work fine for you then use them. JLLs have the big advantage that they are convenient and, in many cases, "just work" out of the box. System software can (but doesn't necessarily) give better performance but overriding the relevant bits of JLLs can be cumbersome. Generally speaking, we recommend to only manually replace JLL libraries by system software if JLLs don't work (e.g. if a vendor specific MPI is required). However, in such a case it would be even better to nudge the HPC admins and make this setup permanent and generally available in form of a Julia Lmod module.

‴ back to Content

How to cope with a large number of MPI processes accessing the same Julia depot?

In a distributed computing scenario with, e.g., multiple thousands of Julia (MPI) processes, accessing the same Julia depot on a shared file system - when loading packages and precompiled cache files on using PackageX - can become (very) time consuming. A workaround is to bundle up the Julia depot (e.g. as a .tar.gz), distribute it to the local node storage (if available) or local memory (often times mounted as /tmp) of all assigned compute nodes, and then set the JULIA_DEPOT_PATH accordingly.

‴ back to Content

How to avoid LD_LIBRARY_PATH issues?

When using Julia on a system that uses an environment-variable based module system (such as modules or Lmod), the LD_LIBRARY_PATH variable might be filled with entries pointing to different packages and libraries. This might (or might not) lead to issues stemming from Julia loading libraries other than the ones packaged with it. If you encounter such problems, make sure that Julia's lib directory is always the first directory in LD_LIBRARY_PATH.

One possibility to achieve this is to create a wrapper shell script that modifies LD_LIBRARY_PATH before calling the Julia executable. Inspired by a script from UCL's Owain Kenway:

#!/usr/bin/env bash
 
 # This wrapper makes sure the julia binary distributions picks up the GCC
 # libraries provided with it correctly meaning that it does not rely on
@@ -11,4 +11,4 @@
 directory=$(readlink -f $(dirname ${location})/..)
 
 export LD_LIBRARY_PATH=${directory}/lib/julia:${LD_LIBRARY_PATH}
-exec ${directory}/bin/julia "$@"

Note that using readlink might not be optimal from a performance perspective if used in a massively parallel environment. Alternatively, hard-code the Julia path or set an environment variable accordingly.

‴ back to Content

Try setting JULIA_CUDA_MEMORY_POOL=none (see the CUDA.jl documentation for more information).

‴ back to Content

\ No newline at end of file +exec ${directory}/bin/julia "$@"

Note that using readlink might not be optimal from a performance perspective if used in a massively parallel environment. Alternatively, hard-code the Julia path or set an environment variable accordingly.

‴ back to Content

Try setting JULIA_CUDA_MEMORY_POOL=none (see the CUDA.jl documentation for more information).

‴ back to Content

\ No newline at end of file diff --git a/user_gettingstarted/index.html b/user_gettingstarted/index.html index a4bee3f..0ac0ad5 100644 --- a/user_gettingstarted/index.html +++ b/user_gettingstarted/index.html @@ -1 +1 @@ - Getting started

Getting started

Getting started with Julia on a new cluster can sometimes be a challenge. Below we provide some common tips that will hopefully help you with your onboarding process.


Content


Julia binaries or Julia module

When starting on a new HPC cluster the first thing you should do is figure out if there is a pre-configured Julia module (Lmod module) available on the cluster. To that end, module key julia or module spider julia might be helpful commands.

If there isn't a Julia module available that you can load, you should use the regular, pre-built Julia binaries. You can either download (e.g. wget or curl) them directly from the website or use juliaup. In any case, you should not build Julia from source (unless you have a very good reason and know that you're doing).

‴ back to Content

Placing the Julia depot

One you have julia, you must make sure that the Julia depot is placed on an appropriate file system. By default, it will be stored in $HOME/.julia. This may or may not be a good choice. What you want is a place on a file system with the following properties

  • no tight quotas (at least >= 20 GB)

  • read and write access (ideally also from compute nodes)

  • good (parallel) I/O

  • no automatic deletion of unused files (or otherwise you have to find a workaround)

Often times these criterion are best fit on a parallel file system (which $HOME rarely is). For this reason it might be necessary to set JULIA_DEPOT_PATH=/path/to/fast/fs/.julia.

Note that if the last point (automatic deletion of unused files) is an issue for you, a pragmatic workaround could be a cronjob that touches all files in the Julia depot every once in a while.

‴ back to Content

\ No newline at end of file + Getting started

Getting started

Getting started with Julia on a new cluster can sometimes be a challenge. Below we provide some common tips that will hopefully help you with your onboarding process.


Content


Julia binaries or Julia module

When starting on a new HPC cluster the first thing you should do is figure out if there is a pre-configured Julia module (Lmod module) available on the cluster. To that end, module key julia or module spider julia might be helpful commands.

If there isn't a Julia module available that you can load, you should use the regular, pre-built Julia binaries. You can either download (e.g. wget or curl) them directly from the website or use juliaup. In any case, you should not build Julia from source (unless you have a very good reason and know that you're doing).

‴ back to Content

Placing the Julia depot

One you have julia, you must make sure that the Julia depot is placed on an appropriate file system. By default, it will be stored in $HOME/.julia. This may or may not be a good choice. What you want is a place on a file system with the following properties

  • no tight quotas (at least >= 20 GB)

  • read and write access (ideally also from compute nodes)

  • good (parallel) I/O

  • no automatic deletion of unused files (or otherwise you have to find a workaround)

Often times these criterion are best fit on a parallel file system (often $SCRATCH). For this reason it might be necessary to set JULIA_DEPOT_PATH=$SCRATCH/.julia.

Note that if the last point (automatic deletion of unused files) is an issue for you, a pragmatic workaround could be a cronjob that touches all files in the Julia depot every once in a while.

‴ back to Content

\ No newline at end of file diff --git a/user_hpcprofiling/index.html b/user_hpcprofiling/index.html index 3064be1..66fad7e 100644 --- a/user_hpcprofiling/index.html +++ b/user_hpcprofiling/index.html @@ -1 +1 @@ - HPC Profiling Tools

HPC Profiling Tools

There are plenty of HPC tools for profiling out there. Figuring out which one is good in what scenario and, more importantly, which one actually works with Julia is non-trivial. This page will try to provide helpful orientation.


Content


NVIDIA Nsight Systems

Good for: GPU, MPI

NVIDIA Nsight Systems is a powerful profiling tool for analyzing (multi-)GPU and/or MPI-parallel applications (the latter might be somewhat surprising). Especially useful when combined with NVTX.jl for manual instrumentation (you can name and even color sections of your code).

Examples:

Impressions:

Score-P

Good for: MPI

The Julia package ScoreP.jl allows you to use Score-P for analyzing MPI-parallel Julia applications. Output files are of type .cubex (profiling), which can be opened with, e.g., Cube or ParaProf, and .otf2 (tracing), which can be opened with, e.g., Vampir or Intel Trace Analyzer.

Noteworthy limitations:

  • The package isn't battle-tested and currently experimental.

  • While manual instrumentation works, automatic tracing of Julia functions isn't (yet) supported.

Examples:

  • You're best chance is to check out the README.md.

  • Only works on Linux.

Impressions (of Cube and Vampir):

LIKWID

Good for: intra-node hardware-level profiling

LIKWID.jl, named after the underlying eponymous benchmarking suite LIKWID, enables (interactive) monitoring of the performance of arbitrary Julia functions on a hardware level by examining hardware performance counters inside of CPUs (and NVIDIA GPUs).

Noteworthy limitations:

  • Manual installation of LIKWID necessary (no JLL).

  • Some features marked as experimental (but basic core is solid).

  • Only works on Linux.

Examples:

Impressions:

Intel VTune Profiler

Good for: serial, multithreading, GC

The Intel VTune Profiler is a nice tool, e.g., for finding hot spots in your code. It supports local and remote performance profiling. To make it work with Julia check out IntelITT.jl and our dedicated Intel VTune + Julia page.

Noteworthy limitations:

  • Works best (only?) on systems with Intel CPUs.

  • Can't profile on macOS (only remotely on Linux machine).

  • May require compiling Julia from source (if you want more details, e.g., about GC).

Examples:

Impressions:

Other tools

If you know something about the following tools, in particular if and how it supports Julia, please make a PR!

  • Extrae (instrumentation / measurement framework, comparable to Score-P)

  • TAU

  • MUST (MPI runtime correctness analysis)

  • PAPI / PAPI.jl (to be compared to LIKWID)

  • HPCToolkit

‴ back to Content

\ No newline at end of file + HPC Profiling Tools

HPC Profiling Tools

There are plenty of HPC tools for profiling out there. Figuring out which one is good in what scenario and, more importantly, which one actually works with Julia is non-trivial. This page will try to provide helpful orientation.


Content


NVIDIA Nsight Systems

Good for: GPU, MPI

NVIDIA Nsight Systems is a powerful profiling tool for analyzing (multi-)GPU and/or MPI-parallel applications (the latter might be somewhat surprising). Especially useful when combined with NVTX.jl for manual instrumentation (you can name and even color sections of your code).

Examples:

Impressions:

Extrae

Good for: MPI, GPU, Threads

The Julia package Extrae.jl allows you to use Extrae for analyzing parallel Julia applications. It will produce trace files that can be visualized and analyzed with Paraver.

Noteworthy limitations:

  • The package isn't battle-tested.

  • The Paraver GUI might be overwhelming and takes some getting used to.

Examples:

  • Only works on Linux.

Impressions (of Paraver):

Score-P

Good for: MPI

The Julia package ScoreP.jl allows you to use Score-P for analyzing MPI-parallel Julia applications. Output files are of type .cubex (profiling), which can be opened with, e.g., Cube or ParaProf, and .otf2 (tracing), which can be opened with, e.g., Vampir or Intel Trace Analyzer.

Noteworthy limitations:

  • The package isn't battle-tested and currently experimental.

  • While manual instrumentation works, automatic tracing of Julia functions isn't (yet) supported.

Examples:

  • You're best chance is to check out the README.md.

  • Only works on Linux.

Impressions (of Cube and Vampir):

LIKWID

Good for: intra-node hardware-level profiling

LIKWID.jl, named after the underlying eponymous benchmarking suite LIKWID, enables (interactive) monitoring of the performance of arbitrary Julia functions on a hardware level by examining hardware performance counters inside of CPUs (and NVIDIA GPUs).

Noteworthy limitations:

  • Manual installation of LIKWID necessary (no JLL).

  • Some features marked as experimental (but basic core is solid).

  • Only works on Linux.

Examples:

Impressions:

Intel VTune Profiler

Good for: serial, multithreading, GC

The Intel VTune Profiler is a nice tool, e.g., for finding hot spots in your code. It supports local and remote performance profiling. To make it work with Julia check out IntelITT.jl and our dedicated Intel VTune + Julia page.

Noteworthy limitations:

  • Works best (only?) on systems with Intel CPUs.

  • Can't profile on macOS (only remotely on Linux machine).

  • May require compiling Julia from source (if you want more details, e.g., about GC).

Examples:

Impressions:

Other tools

If you know something about the following tools, in particular if and how it supports Julia, please make a PR!

‴ back to Content

\ No newline at end of file diff --git a/user_hpcprofiling/intel_vtune/index.html b/user_hpcprofiling/intel_vtune/index.html index 249bb03..38b56c1 100644 --- a/user_hpcprofiling/intel_vtune/index.html +++ b/user_hpcprofiling/intel_vtune/index.html @@ -1,4 +1,4 @@ - Intel VTune Profiler + Julia

Intel VTune Profiler + Julia


Content


General notes

  • You need to set ENABLE_JITPROFILING=1.

  • For Julia < 1.9, you need to compile Julia from source with USE_INTEL_JITEVENTS=1.

Remote usage - GUI

Example code

using ThreadPinning
+             Intel VTune Profiler + Julia   

Intel VTune Profiler + Julia


Content


General notes

  • You need to set ENABLE_JITPROFILING=1.

  • For Julia < 1.9, you need to compile Julia from source with USE_INTEL_JITEVENTS=1.

Remote usage - GUI

Example code

using ThreadPinning
 using IntelITT
 
 # Multithreaded SAXPY kernel: Y[i] = a * X[i] + Y[i]
@@ -62,4 +62,4 @@
 export ENABLE_JITPROFILING=1
 exec julia "${@}"
  • Wheter you use a julia wrapper or not, you must set ENABLE_JITPROFILING=1.

  • In the screenshot above, I've selected "Hotpots" as the analysis type (right pane). It's likely what you want to use.

  • Once everything is configured, press either on "Start" (play button) or on "Start Paused" (play + pause button). I recommend to use "Start Paused" in conjuction with using IntelITT.jl, i.e. IntelITT.resume() and IntelITT.pause(), in your code. This way, you can already pre-select the code region that you actually care about.

    Results

    • Summary

    • Top-down Tree

    • Comments

      • Due to how Julia works internally, your Julia functions appear with the prefix julia_ and a suffix _XX, where XX is a unique number, in the call stack. For example, the Julia function mysquare(x) = x^2 might appear as julia_mysquare_89.

      • In the SAXPY example above, we use @threads, which, under the hood, creates a function threadsfor_fun that will then get run (see the top-down tree above). Unfortunately, this can also cause problems like "cutting off" the call stack information as well as hindering source code resolution.

      • Source code resolution (i.e. "View Source") didn't work for me remotely. However, it gives you the option to point to the source file locally. This worked fine.

    Command-line interface (CLI)

    Useful commands:

    • Profiling: ENABLE_JITPROFILING=1 vtune -collect hotspots -start-paused -- julia --project mycode.jl

    • Open the results in the GUI: vtune-gui r000hs

    • Generating text reports:

    vtune -report hotspots -r r000hs -group-by source-line > reports/hotspots.report
     vtune -report top-down -r r000hs > reports/top_down.report
    -vtune -report callstacks -r r000hs > reports/callstacks.report

    Check out the julia-intelvtune repository by Carsten Bauer which contains a basic demonstration.

  • \ No newline at end of file +vtune -report callstacks -r r000hs > reports/callstacks.report

    Check out the julia-intelvtune repository by Carsten Bauer which contains a basic demonstration.

    \ No newline at end of file diff --git a/user_hpcprofiling/paraver_1.jpg b/user_hpcprofiling/paraver_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7889cc6c0f3eab2c89c140b1f189692fc3dd42a4 GIT binary patch literal 147794 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%0AvQ&?x+mcN{8zL4>wVfW$e|NDrFNco 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 z zbOL#*ux_Jbbi!@2xoKCgMlw3sXlDOC8w;Kd^=cVhny(1~US`|4pg*4!}1pID| z7hsj-u3!cJ4;&c+9LB%M`KDZ2Y#+f|vHNO%8AxAULDn_qwxXkKTi*z2mn$NRE1N4Q z)wK4Rp>jwtYa(76yA$a?lqd+uc3;$Kj( zIx}e1YWKue_t)Zr1qOL2X(S z!5B~Qf{CdEJ%Jq16Wj)Ac@V|sDRqzzl_3GU6YK0G{1F@oYd1MC&fZ%{-~iAC3&I8o34Bi`b&;?WBhMn-`$9M{Pak#4fq{@xV;QmRv-&i)FzUYPQjOFf ztX(^Qa^k82wOkJX{-B8V9w-AOzg5xH)W4M;W?}MFKUAus@u&Lh9yg;~?D7@&?zi_J zNeVzdSPNkW=&g*AO+KAo`2mAWc-|Vi;ApMZlYJTWNDu!chmQb23OpY(6Tp8UJLvpp z1wvR3Sjlh22T(EQ{rSS}5lPRC9k|d^FF3b%@nxe&oS>P5W2gc5zSAi51r;vc8Hq zHzKqK-U1JwRd57?0?uv3<~=?r;Jir^O8)DFm>T|K{^5Q3beo$7Yvlb-hkEYYT;vfyo5oCUok@dp#E@uq zPW-7$wP_NMEK<*Fhs*Q&Gq=uZ7E&2BKu!LqJGcZmWYi!4!zl$CYn1@Q*$ax6|85Jz zzcG7Rpq8@-KVyg&>YMR3$lt^}=&vHGAY;$@-5uqIk=x%P~Ti*aZ%ns`6BS7lQlQaE*ru$bO5{kB%c4_-@ilu;};P6 z1xdi^h)+1N2zSdUFigneH{2b2h&|iF-8wqnwRJQse+L`>pul6nX*~6t>xDGJo4wRY z3Naoq3nWcM(2RsuO*x`7FrYT8ipxMmuLq~1s?FN9Asgy<;Eb&%#pxarw;E`&WC3-M zMMif3fk6|sdhYDzaV5Dl^7G74xldJpL7@KSI@j*dgPsFH#xdMi0%{YI_p{e)x+woN zQ+%vvdK+C7Ox!lIwk@2@5$(T_&#ie`79=g1JZ^Bpr(|V=DxOy67 z&6*eC;fAqG8=p4gmnd5{z6M(ndX|}v9q%2EziE2Lii+KCaBeWAjNmc;H0yYs1+iHM znO^3GFwAUJVw9U(=d7sN+k}NR1@WR%r5h<5=A+y>oT{*gTBT6wJT`?<=ROcT(b?QX zX$)a%?}eALsVy#D?|timW3La zMn?`P>L8NxPeNI&Ui_cJNlqQ%i@S;Q&$q!*LU47jY4Bb%SviZ6 z;^_!b*9kWwc{{=(RxU*Qr?;7nL~Uw&z`>Fq5|Hp;tf5NEp>iW4w@aXM95b8uNnPWO zpv-NDyA|0hdB&zFp;uWtXCydm!7_KLIP-eeqh(V3EA<}Lw)`;LyeVUQMB~T*UNG*# zb51GT1TpJ4ep(l?>A#8MTl#(vEIdJ*BP4|o+T))(g5bIx1fOVcKdPTQg8O1DIHGE4 zJc{<3CiTI^?fN^K;gr>(f(-wwPIn%a{n;WiOywiYggbYZ^3#R=Ir$QloT4E@3+mP!11&BS_CW+k9>Ajpkg~ zB4ND*x(hB^R}hDj=Nq%BoqN!%YD0PpS=P!s_zCtZgl7-5dnmIj=X1hnp*vC|OGf<% zOh{VfkR`2aXaLzy>v(A1wf5c4`Q z_x39mkIegGFW3w`bRkx^8B*3G3|>v{swy?mDe(-gzWHSR=Cm5-+3=IZcDoYkA{g#b zhV^_u*PZ*x(ft}8*N1PhK}-{c2L*+~GeR1gvl5 z0DyJ{cXV^3a#M@w4+x81RK(S>I(1=H7|xxv2|+VF9Vn*_Q5VdY#&cgnfh>9~s#-dS zO*9dZw6Nyv9)^CBH(YaoY=kQDfGnMA2CLOSYks-%_&tD9@@{A+m*%3>eLZsjR(HS|FEz%z)wO*|MXVB@@|CQ{gqZ7nrpj1W8=3RjOC4Bhd+iP!V^S_Fa z0UEIb(9Ud27XQzH>rm7^)wADb*DTnQ?w_Zv==j)`XcHmFt+u zh_bXBoSoFlevZwP7kd@J^R`zO6g zPwd3E71*uPu2PQ4G0VS4CJA> z;^X`>Qa8^mi-OYb#fy*;s)9Yk$1&p68D|1+VH~Gq09&mKu*{O$2@k z%(82Hn_Kvy$hK&zvFlsP^b1@PHwOQv-=Lz|D@^@==r;g=+#1T>02R#tqu*%r7F02o zOo#tXztN)syIu$68~b(OZqLgR7ru)88k|I|Ky)G}$Xt!)_e;9Ov0&CVSPiKy@itx* z6E@)h#CXVklV(h@(^8LKiXso*M56SFr6;dfh*9q@n9*(B+p- zc5$$G`EXnxLb1ttdU4eN=bGa^M)8gHIAw272;+UbqieL=otDK`hB;=pM@5yhA|v9&ui zM?&Iv6RiFe>ojR*;*6+T6>@W5M>HRUJ=%-8RP=0*!c))=Y$?d z_q$x(&y0$yl0{0H?+H{jts|N_`{}-@BIN-& z1?=^IpE!*S*5SWRLmCU_{s4yX9EJv3h@*IRz3>ch;R|Nal7&(nDMAuoh6%#Thc+f^ zA9_427O0CNA1T?chSIiUbeB~IX0sy=*16T`7qJsP5qNd=b@83}K<$1->OPL1clLB; z(t5=okbOw1(WU7bg*vUrgUSk_FS4Yft_^P1e13Iu>X5fu)o_Z zCjJsBKL2eMLH9v5z9Rq!6c1`Z@nEX`RV0saR(SZGIWQ4~zS$H1=igw)cO=bO0WX^u zrQp$lRCu!2*NSaX1ZsXfUfAOzQSaI^5qF8>9Be`F>@UR_fg zT{~$BB9Fg{ZE>!q*Ccgj`M;7bgZX5C<9iVQzs{Ba)nwg+#XBz?hVO(ptjQlbfj0^` zG@N+i)8TEf9eD4}HF^Y)7$zVGpH*%{pHdg7MFeDoo%=r?qAbWVBXlzUORUACO1pt%apOU zfUbvkL9xNshtyGg$=PX@MHCy&(C_%xMafRW{>&!vkD?~FMEPoD2~-qu$z|!wTNt%= z;9BCwxtn7Aw405hyMKh;_>Xw5f9Q}QS~5Hvr*xBWfOQ({D8EN;^m&cCm8q1y{qx>; z7OKM;HrCeN-HkyLgOGwRfHXJjUkyLHGjA7U-A_W-g$GZO3> z_-dKEUx)Uj6mHKC&ScO z>bTKFR@Y`dt_M~{NW=%glJ)R=Z>x-G+-^LycjF2tzmY-zv8SBwGFSWjd)Lv?g3h`- z|H3(XC6@}o3#^0o9Y)@a9Y^GZ zGql^0wO#CqHW#<=4>Jhc(6#3eUZXTVB5OCDV?H`{_DW5&lg*IKrL;Y2^ITRtqK%@0 zdD0=9eZ=ih+d-_3s$+D%(vNcnzj`4boe{1O^TgCDQ}Xg9ZqG=QTr(CNjt|4DG}(yQ z6JL~4$sSG5J9sq;j3sS!z>qHO8uwXYnIC^=yKtZhq?X$O1ssjU1h-Q(*Yp=HYH92Tb`f*)!mXii-^dohT5bv zWp+nxR!HE1obZ8hC~hsVddh)==U#!TfTe~bLL%t;I^y3fWHryW604nB z_xNK?rc+I~Fh%t>6*-p^f(CS*H5mH77lynlhc%a`^cyPcK1erHe&B?pHW{>=iN=t3 z?>I%)aM!R`R1x#IoJ5j|Bi6-UY2B9;yIWJkR8gm-#Xf(RM5)1Gmp)r1daWV6Os&eM zxk&c>sidHl2Wr@|+KJ2=SqrO)ah-J3r1pQ2re3XJ)0t*V_c?@?JNg}f)N_Uoan!j! z9J6sdBs2>a?fd{a)Up}ZKOFIsG+c^vAv2IAFzxJeOgn5$j9K=st$5YoGguHky!xeh zvLEXV4!P%j!F+3C1*M`KdjyIJEH?%Itl(7JejBobwNLKS+^MlN?9;!F7xT~I?whar zFcpwZ^DX=AGFjl_+7gL==CA)bdo?OwX>OM3A-dm5Od~!2Sd+Z<6K`htHe%%s$~tML0t()@mI7`iI(*!p{6%OYaBnE3KO zWFoWl0~1BSv+wdHDIcZ|a%gGb%Hn?smU`h-{ALkj-N|j0C+u%7dw(S;EFgZZ{sH+JMQm1-PW5R={iPcgE4yabVS;A;h(EZ5%!_S<@_ejJc`9j z5&;i31kQ#<)#fN%ZVV}=q=X<|Q? z4nJjuhufy^s!{hk;Lb1@if+^WvD@=muQ`RU-8T_?YE(Dw(VY+~M_DZZ9jK&gTYa|N z73uhJyb@7^CO}$5zQpP>GqRC7{uEtWT9Rv-mq&U0sRQalYV3iYs5zQJi}IeMG61oRPO8Vo2z_TDN60C%^(idaY+#uWsT7q(JUq+KpK zodm8_FD##Za4~ykiPc=nXI@MHP8ddH4-iFgvRHbR*<$c?Aj}O(pQ9f@py|@2PQ1ii z-7VZQQ$A473SrHz=4xNpJL-}XPcHY&j!a}VIB$PYDZur8>+(ND81uSNBdEt-;5c!g zLEa%eDN-^VKF*JX=%u|Z*b-eDdku^WeT)%9QtN;33Ea`lpx*OP7+flA8Vy=ne}ry_ zAE^m6RYwOJ2B&j+=2V%e1ME1-BkdpSuj{!dkWEj;+Rr=W4AF=EZAtNM%&1IYS!x<5 zx7yKLXY>cAw&~dNUX?P!f(khB z*|vmH7&nk@HQS*r2Zk<~W=!Y(Nl^ez!yH|D3+jMt#|yuFT`;=RuElojL+$T!p2oF_ zFWlesO?+_ax>+d5W;}kCT1KnIy+zgG7ipZ3>2`#i(RNlK%o>Vf(e{9?vclo^DQ_hW*s>YHQbTBnwo;-?}be$C2(h@85%C>8GSU}Kg* z@|+b@4h`74?I)g+%=V zJUPZcIv8rDWI=JaSRErw#DH6s$N^4N20R#K*Q#iifDPnywdU^ziq6RCu)DW?`i(4u zA3I~>nc}}qn1|C49>Oa15zWxaW1)v4U(0ND7XQAGBiS9wmjPWe9dOMX^sTBt zu4bzk^xiyU;B_+8TW9$DSTzSP+f=pCXEx8~`!XLcIJFIQ*tK50dFC2R?(%KCS&z{P z#>4m%q@=cxfr9h82CC&|iV?MsK9sycXSkx0p(ODMz%@f0%TK zvYJc^F;v#xhov%iDaw9ZDK^#8Y)p(@Ojkale&CZ_+5e*My`!2+`~6X7>>{A_B4kvG zG_ioFl#C)EAVyI@YD7c?gh-PhA$wF10Wl*8C@msQK#WL}B2hvaK%|4zkN{Ex31HZe z;(eTR-*eQNbM9}gdDpr3{^1&(mF(=jpKmXpPt|JToj}DdtvQiMMt>y%)^(t5xI^|N z$Z@ao;&hT3esa*=q_HEdwI$5D_clohL?(?d4VugMi}LLq9gj1EnV!%#uBOiei3F?V znccU}YtE%3~%!_gUI}!<&$|Ny3%Sa5kL*N5$J5QIa_%&t9n;Y7TM+ z$7*Z~qtxv#boeY$_=2Mxjq~^qWH}J{qr_pGR-*TkDyp!r- zOD(f+C`3G&SrkaB0tks0nT8L`rhjjNFy0=yPDb({GE||Z{K;{S3qMgo1}>tA7p=0e8W+#hp36#XOHkIHHbY6M!DP2nhe-bYEnLGtd|z+= z5SQXAlb_!(WY%J$KGb)((#b>4Wd0$y<@?O}@0y%n1Wx_f=WM8lY7aLe({iW?{&C(h zUbMb1E!36W$-5W8&^yO59&Z4cL}iT;vuBmB!x<>o=3mx?tHhztgNn)@Ap4GWpmKJk zN$`VoRvv?}19T4m=jj}1BX76i!|kC zvLGfE$9bCBnGRVV?wl93Fbdk7Y1J&zO>R@z0}N0M?pQndGN=Pzg8I(z_u?CoKL?`k zA-3wY$^)FTWrq6mR_{@?2$nzr(>oa*+_Rz^cXscQL~NoC4xMb2kFQ<*JZ(R<>Xw(4 zg}(+UBQyAhyefV5QN(R$!?vaQTh+g`LsyV7=%Ni2)NQ1!p~^7V@y_zQGQ*#k>ex$@ zF;B5B0e9z?co&V~5ZXTfVE=rogE>^P#pXJFt`GDlem7i;Gi8!$kdaB~TBIa*9}~1P zXE4H8s8)zZ+JG%g4^=~oS!NCy(Rfzuj*wu+XTeZio5WLHmpXlD37w}cl#41%%3eRT zCA9x4zX8x1(n$(%e(mrPR&Qk0(NUBfwzF2MqU;{dmELmM+tj+d#Gx_Ct8!qV{Bc$q z-6J#BOzFYnp`pi-ib*_Q7-A*Yp{2pZ1%Ua{7aTrAAR{PI2}dAvJn)~G#4 z%FyTbOXQ6QW}rr|#o7$Bua~`tiTrI4km$Bbzyb19i?2+8jkyOvwQ4RL+}2$(oCN6N zuEFknTp*RZJ{kaafDlSBf`VKeeE~Ws+Gy@|@-zl~?JGB8>sJVmyYUmD(=`Z-#Z0+7`7&TwA?O(R^l>!T5@1ok#)027JTlK;11irASAa30 z(1JM7`T_%98h+B5B3D40Og!u1=zUV37R6{ z+hJ&cF1=?G4eth@ihLo(mlC-HO*DWM^eq@rVIcncdyyHu6ynkWP~(B{MO0=#Ecf(XixoE@s)cEpA_^7ylOtoqT+0@6LM9vxXy>}J|{5%io1t5Rr@5K63`k`4Fjw&2t)fV6-k2=H4;_JYPC)(zV zUq4L?UB76~JVnIhQ3Q8iE>7Z5R$HDr?%r3m>NIvVdcZuFRrcdyhH7%oaIKl2NpFEU zROT+&%_!+0K9Zf11QJ-6b_1^Jk4$RSOoj4P+QwDeI^d;$c%FsUjEN3+_Kgu(L}H7L zTYPR+>yg+`8G;KIhZ@Y2`H~-!qX}0&&b9dYXe6lVzf3Jx{T#wMgeLh{{CMmcKS=g# zH0)>y1dk{m1XjnNf=QZUsD{RD<-#*$SO`d_JPBBUui^vfZni9txMCvwbHU{QFAH*L z=o4711`^?_JOP{s`JY&c??~&h5k^J5cxkQzxy?tza0mBHTTYC#V5?A_((|4k`*ZbP zZnB@UFBW5429pAAbk`FDb3~HqP&Q_^jdt=)59#rETrw&)USD6u{&_4JB!G$952BtZhcFC z*QZA%iRqJtX4`{gOG(gfhfrP1G7tIz>adwmLB-49tQf!Ud8m*4iZILI%&(h5Zh^e! zqZ`Jf>(W%N}P2(W%C~O4CEQ0uTaERUgc?wdv*kBhb^wTol6n-BGHHrsP=tU)u~G_uN!6<43s zTT6)M|I%xy#yt+!sL8Y)tohm)dnbQ;GDm;gz&m#GOm=YA!pJS@#1Q$y`l!8m0`t%n z;$5)Q&Km{QN_ZL*QK5T>coddkR=(SHD)vOlnw_xjyCl;H$@!MOrp1mg?(A9XfQnV# zhKXxlM2w64DD@?CNWj{2^ZGklUJ-VtTvy?Ikh*t{Fz_JIcvqFq-ft* zbj7(8>v#*p4RNfn+{V{kl^%1SsSZ@W0^fAoKX(Xdv#);SE7`9*0E2r3kf9K>r?dbN z95~|xOCtPDJX))WGhp!mgQJuulRX&D(FV}AcDE;3+)Y)&@0d)i7WYOqZ8mJv=&e{G=%k1e1iU+9RwCz}`}53RYH38x zM;8xo`ev{JbMZ;6qKb@RJPYFPK>%OcdLIbFZ|xAPpKJ8X>Pdd<`B258{)P9i$ob70 zO|DY2F3qjmZ2~?e&Xt{sH^itY^xv=s=8WHv`A`LaBh`7Zn9qGuvj1m87i|4A->5LEnts*%y+MRgY zM`KC4`fKoUaxMU)(BhFXpi{?A#jq|m+uhoyXL2b#?rghu_dn&)dD!cHzMhlbJ{PT9%1o`y=q23hwg9fatNRfFfHoz-=$QE%u6?GHe6c!AT~o$7rZa7gcQv*in|uKZ3Gk=p{?NTmA?js z0Axmvo_e;nz}aerYfxLR=!EXy;poo?>EQHPF z7(BZ+@$=dopQaww*>0vhz%|cRbxc?A41F)mMGiKV`P#^ed-kw1B^y6v7k- z)2FJ|mrCzRGpm+Dyjd`8)%_c5IV%AMLwc#(_5If#ywOyF2j^WJR@;c#D(3>5(H~3u zs#rbqoxh*z1qA;u2MSwE9pD)Fkr0ROhwC@1pO=NNmPr&yYqR{Zvzh>#^RNkgRq|)y z6#FbG5f5p#c&}4#xa4S+_%l9YpR7`Xpv~j4Gu)1Z%B4Q_e}jCLaG<|r9t7QQQjb+K zJMwFKKo~}Xl=gl$9Fl?cSVG)H3s#A0Pbo&9-mi5VCzFZw_2G7|4KZ$-yf|W9yt30p zaz&rKkE{NJkXAzdQtUsNtqlZ)Nd;XH&gwdSL#4*S*$!g>KAkXF5@)v_SPsE=^CHS%OLSr^`1hE5XuQ8iWWgk#a-`$a&s=LuTp#Rn>;fzdP#_eUt zxfMoBsHOU)DkrrL&jUB!_;hm_p$5YLT!Y@U{zZjA^!=Zi)k`GP{>^1nB$auNJfKp` z-w#{y*Yp$^Dmh&7y)vxa`M%879v_`;?~#OmChLIxNO@*|-T_^=5WjV(Ueqk^Drv>{ zM|Xt=WZBn9wW%V%0wsKl@4aC;p8XZrn){1_>%dXD9YZ4p+wN@oUE!Xd?N_V&gSX)y z;-#X^sC`orJR)AYv#z&^88}MmQ%h4g&5ljiNuWJ^)|7SPRF)f?onDj{AuuOJ7DG%I@DbqOp22fItfZC~~^@zor3D?9P} zbnT_za>h`95fTnY1WV%_+>epqB#DY zU|aqsP-j;=@<+}Z|JT)?)ZQPf8HgWruLg`! zepfQc__4I~gWQVzS6=dOc=Z`SzWJm7eLSTzM=nOyB1Ld`76>Z2fx4h}ML|8`Zibyk z9^{xQ+TVPDlN)K-MTrjj^k`TA9$O=+pEYwD#Wt2Tj;|0FB7QWF%ZPvIomdE9Ts!wD zrk`=$UnXIm7kK!WhjOXwpG<*&p^BG z{#e>6APRGJBI@|Rv{fn5v;<7)1PN@0T}fxv0UA*lKIc3wdq3TOXC21N3nPAY(Ng37 z-3L!JX5XCy#L^l+Bpv7+^0ojTNEyk%gTK2$tu?T}DIU8eq>PRCs z$1Ui2TDy}o+pJ`cDtn13#T6@}l|><4=kK6s2nl?GG%sqb|;ECT56Lf!FdQ+=J{jqxmx$C{P$)kwpZ{SJBmm zZ@@EO23f1~4i1XDiwXvsuUI?|h>>zwP>JnZR~|%}bbfL}_?~4LGD&)W;0=)n5EQM_6PQV!k9_#S8=;W%eYFkT>zlS~wf}wPVhn ziK|INa4tyo-vG*F20iChU<)!k$wegdW5~2aQd7npZT@|(s?EIvDV2AziBg8R=6$JZ z(pU9a76}h?qH4SEyYB@d{U;)-2eTS zceN8kyd)*5yJevs6>NIE3jG#Qm{3M<-8h95$9a1(8%9LlX$H0OYv6WP$0qGJyKEOO zhXj*f&K4B-=omnal_wZ4kcC%C)isO9dx@9B9^3ZgwsDNOJ9)7XP3ty$57VbS7u(Q~ zw!TY$-zb%UR^S?3BKGrTyAH}Rl(l|xX!Xx1hpR?ggD>$CxgzrXfMP4P{yU`ja62;xbL1IhiZMy4tnfv-Jy-2v@y_$-J=vU8f zdcO!bq;KYaBVm7SqU1}1tl2aOl!SiiG*sY^vd_V$S^TE5)A&zXQPt}zD!TD1P7cNk z4i;Kb^B4uE{j7AayK|Y$u_H=v7KR2*4GPQl4j3)2d=cnCO}dRr1dl92v)o=Gb*L!h zklSN%=XiMyC(mN{}?yC)=m7* zsRd&U#w{>i-qVXDjS?y)N~S4T>fp{7D19z!3NX+=PN~DI0_y5SvMYM49jw;?73D-j zSE!Ms4AVSp2pId=gLp^Xh%?SFxA{y-!RcpWhx#@tM+bG>!m zhmU2pzJmr_*$+F$;F%F>pB$SCbDnZf_5^C0pzq;j;7ufKUT>}J&8m1E!Hj%k@%*5D zmG{Tp;@)3hO!##I>$!@dU4WaJNXl}W7))SIuy=F-t&umfiv@LKk>9|sUoUPq1(U-4@nh0qkXYF^(vy^3Kwhv&=Na0V!8{%uFO__NJq`pz+U zR$0M6x^dDr_jby~49m0W5$`Xs?7AI|WgirHS{Di@sCH#VglkBs?Yli?2Z>!&p7?D3 zAg*j)*2>xY-9o2XzGwXC<$2|~;8Y@`lXDttsN9ZU$2|uI3UZii84)(R2I|vur~nf8C+y1m%%}+VL62(7%nj5Kqj(n-rM_`}hMO3TvTZl!}`+OBX zh5TxL`Y2L?E6hwQq_@hzuI!7<4~f3MdCpVU7h13NZ2g$^=-5J~^o6LweS#6FN5t`I z=r_O&KvsZnpCr&sx#C2VSJl1RUd!lPi(JDu6z@L3q2C$4lg{8zJ!EcJhG9{U5UARb4e&T2W*k?8 zNxdDY9%^A!W+C{@XDKqUGFQ{x&KrTVvZ&V8l-qN<2-4-L^JA$+Yw8TQHSMPg`9-=c zzSquCE56p}hRc^RPhM7G_{L9-Fh3^Yhf~M-eUX%l(`REmF%lA+2{deH7}p{Hm~hM~ zPh9Kc^1R<~cw8|}^XTi-S+`rcd-OVCuwWN^Eyy{7sc%xQ;p>ovP^A6F<2DKT94$D= zyyv8x{;SyjWMq+3tX)**fzVQuD@`pjXNxc+y6;dMaY)uYgY3fWr8WGEl=ZAF)$QRB9mj2o;PJWtX$u z`I1r~rs+r44R7uKyhIqO2IO%Enbk465ydiBwFza%7y3PYk*S)z?DAh$#@<%mY>pGH zA%b3<=(S!MH=V+jiH#%7^8+qfmLo;ww2RY=7kBr@)--I`3|p(r4jrHMvi$&I(_T-ioP`;uuXggTn9$)(aw& z%JyR!6K>;>TimoYZH70U$`93Kbr*O)>8)}%2xAVJ<^38r+1okQ!$01$T=qra8vX-R zOs#1JJAw0HlNVVu{D2O{;3bo-dP&uyQ?iojnNAKfs_6sghbR|SO1eIEE=6i}+AwGL zP7W)Tw+9++_j^+plk~BufqQ1@=Bm@B?G6oEQH2kgeI`;O<}Wr(H*Y%J@ldVhLSbM= zB=(+;(!FRBAwP;;e8sQ3dB*Nyj?Awd$3%*uTJx((nk&Pr$@zm%PRY3ExsfdCLw;R} zMSfWu8xpK43W8?obH1h2R~u$sMvxnhGSe_OiA6}RdZP=Vyt%;D29eTR2Qf^@LDHV2 zW#4F3jh!VbK@qqE*J^P4ou+K&rsqA@dUW8n@}kKXiQx+Btcg3I@ZUmSSKLg9A`3ax z41;cO80ezjrj7Mh?Z_YO(_yDx``u{QP@iLeeA0Qvk84kteimA!aCv|bLiiBx_bOF7 zRUGTkKwSfQqlK_D6z839I=LP+sucG?`_<3hNSm_98C9ik%90&L>-@Jj?ljx}+mVWw z7dGxBpMx%FnDcD1r=kGFg#}A;sSZ}v z-I~Qba~4-G+c>jE=gOYI`Pn}(nm*O-F6_zd;BiKIE>#&%mOCS8z9L>(|C80M( z7B~o*OJ51~lCbQ0f8|3&_sfSYwR^s&u7S+?-e}nKyxsz}Lr8aI_{d3-yN?rPU2=Px zvyMIVJZj<>Z{~N_Q``MRj?HO5wujkaW0HrUiJJA{#E(QU(-h57z&XPY{8>Z*d|}7g z%RSaz6`0ZQ1Sisa>kzjS`g`(o6$Sb~iWFDZCtZG7T(~fDQ9=8y--G%O#PJF#&sBGN1sN_42d^}G61NjJo)pEEJ{_G%LIg)l9s>x=$*Aqmb z8WNC(3@}tLsS**;jMC#+aP*_F$4H_2N|4w<@+jCFl^$iKaKn}Xzj$HQmvy~ zO#0pXmKx0)B38TdZ8Ls5A4q6UQ4PKLLV1t3vCEq`DzazOH=EzvC3Pgegl&vVoLYae4Hg)M6N0!GA4Bh?}@}OlVfmH;6gorFXEU*~7o zV66tw8yqL9bI^Rr4cuQ4EJd&!T+cy%glLzc2I{#{6aj`yGC-6+Yt2!ID308- zy?g{16UF@sgf+~S#_RdIFM@tMA4X=rtX9V6H&qpv@LQNcVbxSuUdc04UOF$`cf)`t zzcq8JzhrL8uwl%i4cp9~hr>rvx9zDELE;_ah9yW2I|>5d+tu=%LOSXScO z|9IDY{8mR1y-(vphu4$N$zI%bz`+mgdrY(2Z*B(`p6d{$`! zefYu}b_NXkn_K!=0}aUaNSZ2m$TI#mt=UF=U+7cll9wa`)5(~JUIp^hKO}S1Yh{B5 z4BzE>;6oeO_*{=rkBPxh;s@x7;dU@(^cU{64Gq9ws{ssPWly3Q&LIbejLL}=KBA4Q zLql)sZ;_0D0=xg(;T=E_nPfZTUJaUITr#JU0#p2*T784|J7^@@O6iJdEZ|cB7;ie> zkn0M9Ml|jMSOcZrM@k#2VO2(m3^M2N6mmUIo`s-0XT0!m-qu05X{dJWYO#Yw?y$O` zzfkx+ymdu=vSzyDMeQ|U3lcCZ?2L#C*4@H^TzDDL6k2GG7P4ry?uymK*ry1j3Q|`~ zKe)i>%J57aB5E~ZeU=wGc8^Uz+qMvHF%E4vhRTR6BjjoUc~S0*0CnOMl_iFp27grn zfK(#klcb8>8T{SuVAs5i?+S6aNV+oArOQWwxDg@Pjt)3u%01o6&&P1Vt z0?#m9BIx_*JB&~P67xBtFxd+s0M%%Mt%(g>oekiiv%wm)0|zq;_CPPO8tznCvgg$s zq2f7kUKX=yHj{_IVs}=jfSXjzz;c|G6YUlWk>QkYaQHhbhW)32F zKEIzl$L{@P^p&)$PKU&Qj|Mn-AvEX~_2qmG5jG~x@x3?%*i!ovi=E5Paon|H-#{q2 z`^(43S04nA$F)3GdYw$`=W{?ADQtKrYeN+B65*~rF|uUHz1BXatf6md#@ooLYpgQO z0EuFLxb5NM`RYXNU2leF0fT-|zOZhK?-Og|HSBD1%T>-KBARKTn_u%WW$NNSY29X< z=hx=c3OtmKbf0s&+*_Ql+G<<*CZTyT<%__S>h|^i_EF8{51jxqU%PkCtLv{iuS0PL z68s`@Tj0w@8@>pf)#7G+5g0-t_{z8WS;Q5GF9PL=u~z4N=Is#(?B?N>s+l=8h@ZXE z4t8rh2|Jrfuqm zeAPQf@#MBG_nS7_?YX>JHhBGn9x;6Xp%_=Amw0!r^+m!ebyd1TqoX$4yipQIw5Hoi zV`Fq>o6hGICRXmYdgyVqK2wdZ+LN7&>L+%nNy~1B-&e+3hPoN4$ovTa~fZT{nP}qjI)Dl#~03JZ@MeB{lSk2#+%t#4|}M6%*{VlVs37&n2@Jy zy-WJ2UWs{%i{aAy&4 zlE`WTG>+kqflq`0oz(<>L3S5i3(z$I+g`@q0UF2zek)Kut{^XtSH?@9fNCU0Lggq( zpGDlGQXYx3fq@4TKD>-3s#fAB^6I@_OFF<5t~ry}?+LkbMEYdSs!zzBRZK(+`@YM9b9Yx4^Zs!Dpr z9>`7|;w2=!vH=BM?(bJfpC3I19w-u6z}!UsnJ)r!*`Vix_^bi!E|vGk7XfV|tgOY& zB=R@SfLNi9nfyh-D%B9+MSM;xd;Plj^{u%MVABdN+iAY=9#>WLQ*C1?94AtflAN+sr56IdRjdRz(oG* z>mWqA`}m8%Y3d3R6j+TwA_@9he=;#0BLgNT@a)rPpV{8W$-&@vHpkI=8LlHDurZnT z3z!Ul!XqwGe+IOckT)-mBQl$Ih}j!iJv1Jy#ZIL%BSYhwh9nL9KFu52#%oOlG3LRD z6r!I{UyUS=_2BifdT#+}Ko#0sO0sA87uH1hQmdFJo9*e>=q|yp43e)n(QzVSO0-d< zV|_fAMANOu0Hn2_c{yL%YBo~Y6I|_}w+!SvVn1;Jarv8$75?nsjH$xVO>&_tf*7iR zb=9HxVzgO@G^%}wU7}+#p69kx^%|74+%}nCe-(K6u+^y(OGU_S85Rc%EZbl=9lTG= z!0czpcg6CnXTpQpk2pvc^9H^M>?8B|!Q_9JYciA~y)F@fp8^}5tRVIk@#6$|$ML+^ zRp3}Q^|B*c*(lhiS`t+FURJ*=!z2Qg`N)#$ucGR{=j>18OKa{QtD)KHA^Gri^?_&J%~$VxjCRh7nu)J};C;bH z(c~s1&7!h*(_!RI=MaT`){`U3g%Te6Ya&Ww4x#$$%v@F6w;N?xJ2@-|b!QTlT}RjY zU42oyYdYn_zV;A{K-=C20~Q5o6C=xi#~i{thP;{_9gY6TVT1BhaKRX+kI=v>{@wh{ zJ-;iukvn7c_8(A{->9e{1f}utPD>Ygaq-;H7XPa&tYbCDwo+WW46_&x0mI4}agalH ztY@*6{p`HAh{_#YV1$@k0ng$=4T|sVynLp#D!OPAr}bwj;Rw}j0b*PV2D33=1Rx@K zo7)cX)5!}Ezm0|Y=bPvPq;6ur)Tl03>t9n682+~ZnqCCaz`QPho5%(aLj{ieijGJTW|9y%17HXbPv7MKI^cIa;s=k$VoY{VLZb6Uu`9DM)EP5?|J=_n2|^=!_aS{q8ot;Al}K-qw&i51Ud?fd7cbmCTi4zVYqdu}cn$0?1& z(B}Scvj>dsH->8w7>{o(*MFQf;+vom=;?nRGwdA2c?vKM??9g&pif|sg-qe^bmtjC zplrxXr&IqKFx7~}Y7sLT2mqM(`w8D!y%D@*49A}@t2c6;IMT{MF$hJFYiM%4p#n=} zK%cD2Z?6P{Hbub>PaFEVEfY-(W6bGACi>+(0xjmO^O_R7HR*IB`$l3hK~ZtSjZmd| z_!LpSd%>Tfc&^GK%KT%<@-n;oi$G8*`2g*P`dpMcXq82Q1gzT|;D1v2AWZ(|>6mXM zmW{=~*MSJ`@z&KlVC?OS0LSRhO8~$9-4#UONaAN9u)YM+x`>)3+aYn_5Wls1h;JqB z{~;p(_YjtHETPkArU`k#l)hX`9zfMerpdERW4M4P_*dRtu1ppptR1@$YDy`ZNfT|; z-$65aQJwZjLjBw{^|+|d75fubE*le$Nb3m}aWpSWn`x!? z088chQ-ujIoPREOr$xc_Ce?zfpK{C$vknlq8n2Z_#N&>_+nD5$hB~4&HhGlPfciK= zYporUqQ8itq3#kD08th%qz2^PRSp@Mf;uHF5n5oI z-!^mFx3tOHrHnr|4wLBKN9V?RpLPaLY3)cjoEfjw*_RQ&P1#Q9;qSre9UH|XgYF&w z?ZTQAEe3MkAbxeR=0;r!1th_@kFu`ZYWID+&=KO1xn1DYl!IpM!Fxbze)5B!fQB7O zn?88irT$UFk=IcHQ;lu`*Gg1PRLh&hy+#+eXpfr?U&}S!mRMzA&9#@v>pY)V?V~=W z_pUuddSq|&1HcWCYbC}AHi_R{h|2TL>!0jiv1NL&cF`NSq7;g=c2AWHeV#zx4tdY_ z?{ea3mw_$IIzpIiZ+)~yWWeOElJ?Ih0x(;>(u4q&#Ol6;P!Y#6*8PVG?NbTOp#hPh z;#76qWnKyLGC7*aj2Xb0Gqo6X9CJ`5%-~#tHUv=bQA()Qs}C z6$nqv+8kXH60wh%EiE*4_j*Qpu&y7}E^^rJx8{)k?(~+6{lLt0x00|Yj$U~^wnA9< zzC-w@HCHVY-s+j0M=Z?yI30F}yNj-w=xQ9-( zosuK=Se|L}Xe1Y*B+N6jdPnZLt2$ioaxgnM6z9GY15qwv1%a!J%%LDYim~Nkr_p5e z%1(5Lc9u zGGtm(b^8~A9j&mdR>TddcOr}e@-$S6q-`zigi7@9HIIdsec&r zHGa+t3ed!+veZXaVsuE62r2#!c!Ev>4IW-HUlgGLu&3R6$_voEw2h1rj^*brf_Amz zRwL1Q*V04nCKA7HH-MhkNvzI^O%{f|b#Xa%$KcpQ(R;44n@skZH|;aeGgEvX+pf87 zw0X)%)vPRGh`bv5MPQJy;7%&6+Q+#FC)zT5BdTTaoz6nQ4tr9=__A#bZD_Lt?gTku zpq{_Ay@2iz;(*x<*K1Ixn05|2ZABd~T0rG{@t!s1nA-Z5HEWqO$ejC&tW-`&*j*pb+gR3J4sPF`^^oqiKfeE(-o;;IEZ5LtV9 zckzl4#dd|bXpE$Z02kysYFuiFUJM%g#ue6hxhV|s)ethw^XTS!WZq_x(Z6PU=(g2UC^fZWz?{p&ZddP zn%s*Cg)2U-xEIgs_iZ6htvJt&U=YnY9twtCpIeU9xOeO8t^a*ky`)GzH>+#;TI-hI zcI8n(BjWE0^UFDYH4y;+t=Y3r)a(~zS=78S9aE)UH_L-_@?sch| z#9TR5a-y!{TKbXGXO{PgKFmR6(5RWGY-?pAUgqCo3wOlx@*f7f%9x`U=BBdbwE{j@ zf(hY?A?EyObsS)udBrQZ)P}PFQ`;i!{k+>`HydV$2Vx`FGDn5Yqu$w7#zckdLnCsz z-dY-5gBOl4wJx7NSrW2$`A87^Q@OUT?87ptZJzF2aZgS?anq6rtZX_P$dR6+ZokyV z-;9+rGn9oN=S;SF5JkZ%&Gd}j>mDtf0p#^$+Sbzb1=jWq>uN%2h0uo~SEGtvopqYN z3K^J?VE*muba{5_ce;llUn!)1D*V&yqDrm(f_LBy;!^f?}uo|t6%pMkeBiqY4;Lu?O_=tMuLiK3WkIOXbY%;5XzgdYRgl|I>Q5jyN4_LOf zh%zZkY7jkVc7Wq=v4h1ME|4TWMSJP?yAw1Ez$j*wF*~{(cXa2$rva8G;{_LQ$>}vW z=VK@MtNMp&Ehh&(`!$;=x_3%qbhe}^FP3^F%vmJMb^0oc?)X&C5~Z|kT;3Wc8hb0N zR#x|>PB0_Wqso+?Drj}-LBX7IQKz?$3r_Ua4vWaU1~Qh_jbgvN&mlhf!!QD`FeZM$ zP>gnRp?EQvmi?^b-I-`gSB-VfTxb5Be1~c5M%whbv0TpkJqO<$I-PpeW|zcWpPa|G zQxcDx!ZogIX`H4k+FRw?<;di)?K3BAA1ij=b6Y!@sNpI|8qMGfzTwE8$F5;JvfLRu z?*1&>ceb((T*(afZ?a%_IU2cTUSp5!XuTx+xsH?W`82`vpM}&wk>%yIO_BY8#m0zQ z!OK25#FJ_C`4t1wk~S!YC(f1RqxuFY)e03o^IF<>k)90Mxz>|bF2&(FZ90)AAH`>d z*UoNvG&pNF@aZ~<{(%ev%|0E@&ew4bh$o+p);*4pqx5~+hE36T`7Pdf%R%M6wP$Xp z0BVR>59^>n)rzEk|CBiQ_K9i@7na?ea>`yG(G07A%#`kxDYF{Xkd;lvB;(_M#N!~r zC4Uo=w`zS8wSw#ya6ylOSk{Hg(HFTxTz$}IJ4NJfCjgLgC9o>=N`{7>@JAcqK>=|A zOD-hy(l*qPdFI8_t5SSnQ&7Z+9R_#4g-Kd0CoKw2##C}8SrY*L` zY=rIjM1ganib`ogNQi=uPaxjQ?}Y=onD%~|cj0YQnTk^8s2BB8D%+`b@&I2L80|P^ zcn7HdtYLP7s)@W6`M1sB9zg&IXtnoaZXwv$kV44MKXt3a0;I7ulmFVY|2b+E1kz@( z9w#kP`XLXF}e~0{uoq$C%9r9pcLIM91~AxMflwa;N03u25H`Q_!v48 zA^AnX8xeuuR1VmYQl%))B3&fb6-BdZR=#|CO4s-|@_Ksy8Q2JRsJ+NuoH83YDv-}2I`bzoCQML}|CPMxzJ_}{KP zl2>qP8>SOP6yY%iytG5y^0-;H^QF$K$*rK-!&ZaMm?(hAYyeS+aySdNx~4j4^<<17 zBOvCR0FiJ6GkGRA*ke-%lBUNJs#*ne=*faHC~MBCjI|Gjpi5w`sYY`Cbjbq&!wbyR z*6^!<=_0vR{t74^A#Qo&j=HIUiDep6%;@QK*{aq1?789Q(@7oE>K2hZL=}TX?FTbY zH8HllJL$c;>^nN&=K_s9CKsm_aCpn{Uf7ArBh;u| zceZ3Fch^&1bQ1st+8=yt=ELI7fw5rkPh3+@5WW?^miGwqAc*7CL2IZLwnJ|r;Sunf zdbDsAx`K|k4qEYlI)dg#vZHh7eS;kVo<1GqXchju+DV`_MBM9Vb8 zJ9D>EkF84YHB(>hK%RLgvn+nCOxA5B%~WN3gOGE)quxCUGqt5@lYkVL-AxBPpT?x` zZZw;ucNX4Jjt9iPHKezlsO%UolBLLPhz3dzU7!paPvm!-a`zBd6UYlips$kO1eWDk zx?rh&9@yr8Ew$HDm-c{N<=u%uw@6D4e3ddb5o+_%0*%4*XugY~DewFUX`H~{pv6D& z8G@aVpEaRz(6=c$1DtXWKa0eD4n!kw;p>jS<<}kmN+8vd5Lnar%a27ecsbN1xo9Ac zHlUyO$moCP(wtp1T}C>neUjgzi|214X%5ggtsYRA0~26{)c~VO1RKFfL-zqXRo?Yhl&Pw}Cj;fr#~dB{-R;LLv1xyhShzbf{Y)%4vM-D&{6s zQq|~rZgZLsj;v z!MVUrxzUK)4|iA^T(i{jOWEb-mc_U}P=1ZNzD03VUfY>lNnNQdTGsn>Mhw_ViV#dp@z_~d$JAb}IX-x&!| zo#g<*#3NA8$CKkhW%&DJUFt;{)wx}OEQ!e zk%T8|iyrN&I-#Q&lY%uuy)I0vKmXalX4oroM|bf|i=KH;f$S#>Xq+ffg{#awYwAz83s=;*4n1amCc*=JWBvR z0~<>|#Sx1fv2;QNoD!*O~~J#sZp^GG(m zI!-%>DW`7E`8;R1#?H|d6Q<{ShW9TH8i~zuEr3fU8j9fbdcCz#x6!ZOQ0se&J6uuX z0Lcqkd;6(}`t!_KQ@^Bjsr7N%Wfcx;&wn4DzTRW&m)ZQuqeryXh%dlJf8~Z=rwHfJ z@)37rRc65`3s;<%R_x@biKY;XRBA+iddi-Wz zmWPaxEO8X?Je7YH1U9!ncVf%{DjcaPjmd%&L_o- z2S7(;61?vs%m5+r`e3OpVq(qTz4O5NuS~?VpE-f}cEmQ^;Zaahy@2X(efM2E4j4P# zTG{UiiTN$j7*P3miSHfvHbnL77c8vcz35ysR+@FUtyRu`OO@FjMIPjppx$`d1`29j z#?g**QwycZ&ch*@pkI+l9)^NBIzOC{Dc4x+i+~L%$0qLs5fl&7r!wDu5h%0e$+$Cs zlejxh7vURa{OyC3ag9afkQ3u5?lu%~Rx;54cwW7W;6vZ|8}J%vH$l&yw7S2wzZKk8 zb1i}!VfuISGV>X=g`Y^YAa1BG;=j18vzKZ&2IjsVd8Q1vCda|AgZl>;VDFHb5cL}? zw(GE#vHqdfX9+qa&Xit1dpKk6!y3L6if4gd0V2pa2h~i0?xNQh0d*uV5BNIx0yL1% zzgNUA0utxP+5l=SK#u>a!@RS6wKE)`Hj`gPQV2%yT@9dF0`M$JM7|Kjef;*jD-*u) zw6>t*`qv90|MvOMWw3#cw5{gw<(NorJ)%zmjQ8juxv~Hw`oM4BxiJK@0-Cl5tx@p$ zJYN7n`TsK&C&0O;4DgugpHW=h5oqNe@|C_G-xGp?a4fiY5X)NYT3_P)m>LKsVWrxA z)|PV+Mdmp8=+B4YCE|SaGdl4Hs4}Bj*!ddFfDvEfU$`};{6V1D_hI=QFba5 zcb@KBa{ut9(r@QTX6OIf5q*c%S!&^BNE3d-`mc+qqi5a9y8YHX_P*U6&n}Pl)b-gf zy&H{dL@gV0mFE4G=NY4L$n9Y_o9l!F4@vXY1yn|G3i+D=?b&z76Z{p^2!!kDK~BJg z9VdgWVX!y`Sj~olfU^+=R#*p+kE1XQLqOv+h~~?_By($mL7S{$9i#y<4?_#4!0LP} zt>4MiL-01~m{lnN!6a@0L>CC{Msg&1(h1-rozeOVh4JIH5&v&oxthki36NIFObR4j zWdUZ(#S^)jBJc^ktTQ%<1L(a_Y?ZhPs+}V*qm{F+o@mG-6O& zC6Mirr|AEHq53XFUE!;)UgUQu=+LHDY}_O3x@&p~8l$|&5d`g^GVQ&-v7apu5T)Lw ztRqm&W9)seCB%f7X*C5Qvr#b!rk@s9bN)72(ohVd$bc7Z0PK?yExVFNWdN&ig;2ta z;F#AtfDL!VN3%~W`0Kpn&g+9dj$@D^`diH-ffD@p(co8*p>OZI+LnUJggR$xwhLX= z6>gS_$gwv+i|*_4bT+fo>#ngZIHLTZAs!B;)mxl8O|iOnE|oeD1m|!O@SOi38R#I> zLm-c3-g=M^GP}dSlHCFSWphY<#TC$#G=u)7;UBzo$Xf(PD;TutV}R2c__l5OHL@P~ z7WSpjb%0HpMHR0&pyDQ0LdN?(fz0t+0j(hPJJ8XQ^%b0)p$cc@Hn81X=3%=WEjLZ?TI}PM2FWWi)<9 z4;v)XCmQCrVvE>XizzwaU=% zv{Y)Ytc-o%cUiHJ6!yIYp)WY&gyG&SV379dpDEy4!+=AEVy_hjU2Tn6jhG$ChebCbKV-sFJB&mFsd3Ue9^%~dsHW0wT@+hHgxG?D5ET^_A*F&ST~q`_#HgqU2vJcHBBoG~C?QKh2#pXs zqy!-A1j?s+vFIuOEY z{`IffeDj;%EaOKqRs&RMK$Z(De|uXi@Ng48A4}{a4^cO|kp_u*v~GdNYI$IsEKt68 z1lh@Z{q1mPzW^<}H}S8&!w4v~Wx<;vZw5Is$2FFq@oh!~)JF4qyK0sb>F5H74;i!C zT)cza3x|)ImgU=Tsdm)l8;xV<0JZ1uqNV+Rh!g)qT!I2BKHmcqyZ#Fw%KyFF>A&vE z4^5`Q`j{$6GiE!<*ztdpi3aZGTH;&94NUhNY2(@^&@=x&_gf4Tj&4l>0c~)O+=zrA z;7882a$=l3hco!)Ve7#{*C(9Ow>G)1i4%O+hkX(S>i2%DxWC-!{?1_Pu2y+%ia2HzA9~_@zE84{iqC_bcGHaid_XO68aRx=Yq+cKOQyZKSqGQ zdr8k=EtC79I$grIb(CL$zCQtn`!|fi&}dn40l*kIMVxyl3tw^-8N2P5MxD>fvLN2r zt`xF$W)T~S)~=dQ2OrOU`>A-=M_&t)+~HZ~x$L$UZMJ%m!POf}m0oEmb=`n&;lD?v zzPlz$_lx*zB`3Rg!GU)|&@p)GSwD ztJgnkhI3Xl?=e}+Ex!Hf_SpTzM8-MiFT|I4B*IQ+B+Wo?>o{O@@t~Ta4hc@T4e;iH zd_gr0I&!A z;lL|c2lrzlw$g*pI2wGevF6^XXocxs?iV_LGv2IomsdP;?)&gH=fNoXJyTXMT^*B( zM1wA0&7ti%2t;mNR$9mD(Ckt#4)6-{GE-Tetddf&cIDpdS65%e*0@l%S;O1rI|q;EIC7WRRb`5uLyY4`e!da)x#AFc@{kKb z@CkC|&nI@}iweif_%jB`^R2-4EL%kM$q6H?qg!QEWEVY1s^`=S8fyeY3#zHgLh7@U z)i)|Xkt{YC$+S~%EHIUq_8?j0bI|n;sAwV%;RH=GfUng@vQjZu=U2KF_eThGw9vDG|OrSr?Y-lHNvFocL)}kNJC!cH_ex8?qf1?MNN$ZwgJaed>I0`R+SUoo>Z9 z|Bk66=JDJbTjL&gGw`2~7S;#WV@TR&%a2Fw8o9;c0b} z4;A;@sivOW`&f|Ef(^Z!YK#kS&;f`ugM`F`@iq+@0Xg)LmXE1e%eT?}5h&BT zo1jDHULOTbT29E9S6)?}%U<4kSF^LJ(Su*_-`)bBOYAZiWMrqOrS`dIwcbdazV=dj z#z%lsa<7ztirsuZatw#8&lzl%L8B~WFJJ81j#A|wqWD4ldos*INQ3h63BE5@pIGzR zA}7zjXF?{LH+oSl(mMZ6IWzGDJn@X|w4vg}h5#S2<@Kj;jzn5rYO1IT@I&5QNRW-L zc+gjFqPKWQ){3XKEs~|o@~m?k7xpVW9;MA{yzXUMvuMW26vx+2p$;9l8}aW2if|4^)FzNz%o>7gWZ{Ut^m@P5lGcJ7Qn?I1X23d5m)hd`(?n{&;C(2j!Li2|$hz6!n!x)}X-|)d( zlc>IuVop>+21rGTf_ewPG&1@1liu4;I8pA}2O3V~HisprL25V9qX6NVg#lD?4pF@F z1t=hF0%J0$fO3HM43$vJMC~bIZng<{X~w}<|kc4cmcKnmgRb$rCQY32du>! zskD3to$O*8YJlk=Ymf|J-Tl51HJ?u9&KJd*u7-8itqq&D_BMj8+HbBPENPKf~MtQQ-NpL5KIhZ z%s~&70`X(RRi$4}fk-4;#}Vwr+-LXZl2;CkIb=%-@mF- zTnYowtw1HE%B|zQ zwlOoT3FR#hx~&yp(7D~Uq&|l>ebU{dPt{i5Z2JW!&pejziq;+dazDe!=l1#YiJxxM z8_x}u(rcanfOY)=iu{iO5&l!?`#fp^>+gz*@&TC^!Up(*=1`e@(V4GG??Jzb7ietd zEA-{0-`evlT5#j^-1|e-9%G;j;d@5HeKJfMQa+leC?%dyO?<0)xS;S`ORd+ZqeuH1 zY@^xpk6gWLaP`(UlrkFlC!#_(E0qv!WsbbAx^saz_i59UUm723?F;y66mF2sdvd^U z_rkvY(H;!}mg5@jz86du#@Bt^GAD;1*m8XSzH`HGOV1V+POgNuv*C+W^qy%MPQC>X zs1sNE<4`5%@ozi@<3&Nsbz==am*I8r_uRO)_>;L?3~%97;fj&&9p~?^A(Go$ofT zG`)B+e*d)>g&{}Au?<)gq{AcjPC7He1eP9bJ`0CHl9?|h)H%KTXkMho^`l94hZ;uR zjU?K$d<`WIj#h@7%B{3=IgQ6uJdab-%VylysGrJwwdMgX0|h$eSRF9BCcdz~hm^$} zwwRxcZ}4|_JDP{MJZPiUxWTeJb%nPd4ls;DDowK8?D967k=qJt!+i{W^}t)#DTm3G{2CypqH_=E>&(*a)T%=a6I>BxO_lm z(;e{tMY2#R5Q-w}<h92@2)4@mKyJYkxQac%1VF@yZtGass%(48TN_Q;$ ztJ3H<8U1n>=<{~$ffNVczAn3ndXEkeS%cJk`g>4BT%&lwm!9+h)RrD+yB}ZcAFt^K z^w`2$NJPM~ zIbNUX+^;#9E4K&1Au#}Vl?@*VDpi$PD{>362|E-~qXs!k-usBS6%(Eb6z8;D|8 z*Qm^@YC2HqB;y?X5T{Zjbd6bjp`hal=k?&kqQ-+w%W&nqIH(}Aw@lJ=EpFr4WZsG+_YS2QXE5&^denZokj~bmxm4bJx2JdC^-GB) zmsPonJN0CcRH8PP@CEE9U%Ckt3f@!$F2`=7WbH^Odo%{1DQqP9FcB?xo&Y%yNTLP& zo+m&BjQEAP2K+EssyVS1Ts8$|^-qn$faCttFM@3{k3?VkRVkHXRr{T=CcqM zrt?+Fl7vnH=YuMENHlr}Y*`b`ZfuGT1mb<^!tt`&Nn7w6wJ6B|j~xf+i^$-qLk*_b zYDjYF2qgrMGK@u-aKaK^) zb>D$1oJ7jRK5cNfM5#p<00mPpJrJxywV;-#1bxCw3A`0R0h@@bK{plKod20dM?fk0 z(+W5@vN?QoX&ju=)l*5HP1_A9Hq#KMvgnA*5y1m!>6{kY( z8>*esJQt9Chr@U9Xc>6>JLB{IfBfM(|8X5Z{{Q6B{^Kk3Z5RLD=EouNp!xL{8=J}h z6_o>y)GJVVwSmq+@;m&oC5;BZlm5S1wnD4{4<8`E*Oxs+>br@t$wWmMpVFaM$=iy( z!&(|k@F4NgfQNWV`1e`I@}pnJLg5E~-LxnbsJOPBs5mw^rHy!sB_v@g^2c<*%LuvM z(M!(555=T;U)CISe&|knCpfI&mzW0oJ?YDqUU>D>D$bogShy}Wd}V83*^`~V~3rRlYMn@KTuS7*}=*U!<%dv2*DsrSBgv?m6&?N(3q!GLlD7g}!8_ zU|JwW0A|5u?)~oY0Lr$ z)~opE?vI6J^6Nxch#!PF05%@6Nq6}W9-SrCGHB=j@D_f!a_dG$O+m%@J{g-2Ecq?m zzkGd|SREhuXgY0to0O00K``)>$5C~}v#WNHKg8nx{dD1VmV6(qLQaY+n6QH4dG5)c zNC4v@LqslMqYK7uk)AFG(jx3vsL(XR#GZeG-Wz9F6?pe~wW z{E6n)mtU0@1x^BwQMVVkCY4hlXkYTbqnLSeP?(*u8W5b#u~+kkn?fQuL^t^&NZFjt&|tT`O1p6{o)nf5lrE%>PmW2yau z;Sh0~Z0Eh7XAd2Hf&~3=Z}L?qtr(5$N7YP=MdWGsS}UIBSDsk+?5IWR%XJ6O$8tN{ zpD}A;Q5bqCu4~oaEYHBLmaBrb>;9?DmD54|Zm;Y0{^V2 zePr#OGcJe|A7M$rwj7b6Tum8 zgmgBsMr2gGq3z#!@?@WXnHemxup2rvsdZ4Yd-1cgPCus|)@^+6xaGpT(BJo!ranD? zVJnvwWE|IQ>+=E^aYz#%7?9SQ%>B&o{+;3R&n9j`-)EEY|80}Wc@kr1?hi~i@bUjn zrg})!O9jM$EqruUJm84n`*Cw+ENnV0271u?4T4-9DA$MD3XlaLtG>%YL7MXe$1vzD zz$06sE_^vFoR4E@Ac2@lqm(f&0H>wnQhT))ed5UJ-VGiOUKzq_U)6U~WX8O-wX^T8 zi%N?uf7}IW1#blVt-iYI-IAK;FBhHN`E+0A)|%vN532X%07_cwSGvZ=`^kM=I<4~6sw+sd zdPClAwF}kL$jYOI8?d*ec4enne+>O80so~&v%8gf=*h|tA4hE3-H zM%i(TsZy<&!$Y&=dCol~8iy*sEaN+f9?D<;_pO}4l*^x(*oSwGrG!!b?XPe<*hU3))}4^zEjOi zyc6ia4$psir*!ne4e`aN^amlNH$Mt40E`yX2n=Q~E*L{73j_06>a=16$_h%0bTXT7p%9?30F{ z{Z(mfU1KH~fVdTp9dHN&lR-C?^WS~SCwhv6+L($|!WWLq_P`_8pp)cweSxk~GvtF~ z<{}Oi$$APtYMRw2WMqO+XvV$#7sZVdgyOrZqvS$Ff&*>XxAWj(n*@#HEBXL1^Xng` zuwtti4Wv|RINM&d^f>^}XTM8@@BF;*`Df6nc3yU);>1(qN9{!)Gu47R{E7BmXo~i& zkGIm?jl5Qm1~$}_A1Y=-Wo`V=Cq>hVgIx?QsDIj1XLt&^7d%a65~5iJS~omdA(N(8 zN^~SS+5;M*rI@z+(LRs4@K{ya1)V$ux8FAIQP`4@nYT>V+fE5s@_Ny?+PYvP)<7Jk zvO$0cH~Fwp7P;s3m{-Jp4-u$p)W~;%hHxGo7z@Gvr_g6hJp3EKfThsx0ZWORXo3Bx zSEu|x|HIB86NL8?+iJR6hfc}QFlveUJ=Lrz-ZI1q9+6a6;Z$hnCI?=1YWo5K-M8;J z&))a_>|L~l_BM?p*qqYyI*>6iBRh@r;kAyU>0*)lIP(YV{*Aq1OdRTvub?|MFicQY zWS&H!C!sRwOqd&40?Bo~v8`Bj3Acn>T*z_BB}Hf%qJlLzpf7b`#ql(ug)N|B8R&;@@eB_Dyu{ zCx-8G1B3G&8(V_+mbdR~4v4|;6`lDK9p7t0c(3>BZs+tCe{k~tv|OC@jDK8OKhsc#0{Rg!B)ba!?*V}tdNd`of}!~@`g(Z&U9t705zDk~$ZLY{AlWo8Q}N5V!+9USY8vi;v`+i?nW zKl_>}j(eEz630p$xC!FZzpQ`i9Z!V!1#fxlkQ z{D-SksD74}S*9(TLi+Q5SGuNFEXUZ)_cO_Jdcvnd>9&~6{?mig24)dY)wX4d`9oo# z)d;Gy+KL`4Ms&LQ??c7-Xp0SE+*0%c-1@52Su$1|WwEJiWKoS+;aRE0Znv-$X9isw zGswQUg+m;gwFKSjonC2K_0Z2N*sdCn=tF~LuwXC9`$PIY7AaEc+od>XL`D7+eI1ew zgmww#$vVZiggpW)6CM({u47=b!Tr$x#Lt4cJBZspHbw%14JcfTqW9!xmUw|UYr?e3FQYw^z9 z=Ip_O0d4c3HJrspPNZFW^2OYBYG44MB~-Q-Q}-5u0RomV$PB9Di3R!*gaBeJV-2DJ zD7ONxtt8Aviavdwe20BB@ugJomhySU++aKV#*w!L`2~32tLLtr=qgB^$_(S-7y{l_ zMGOauN??ca&*0j+CEm!@E;5rh9jOI_D1Uh_#a}fU(RQzyQ5$WtT};7EwSL0F^=Vl+ zJDalGCc`rxdvmo~!yizBJ~q+ECV;)}1to}lS%Bifav&7yR7sp`L4j+W6l_qnuNGLX zMbaL*^j#hrL018q$0%XmQOo9-)JAJB>}K}6`OQW~B@yL2&z);i`>kjJ?SibMgxxi# zh+Bq>#PkXkzmyPlZ^K?YrCx(|MZCD75BY%qC2V;0aQNTul?(jqW9+5@VQu@CNI#>Is%n}*MJHWMD5 zjr0S|KsqKU)=3c`dfobI&bl%dqo2H>U3&pUFUl_!DJAZ5*Q4lWMC2zOkSJH+<{^pIJR`6{SYFxvR?C9ITOaZp)Y&rC zB;r2D9a!gp9jPB%Gcs)9E{QBia+URyr=1DB$o-60_nF%lIQi>c zhivmJt(XS(*0pD_tcxWicH8s}5eZTLA{?TH!_iVCtRYizrn_^u20PvT{TU%MjE?UT zqx3za6r;dALqU-8gSqsmx7S@Ho&^iD+`pVwh(?%u+nzQcDndKVscJ#|N8?aZ50O3G2unY&W& zo5HlhNC-;Zq1Q+-%KD^)N*|T-u_f`co1hd)M?k<9o^lXC#g~cVd!UtQ(zG__E2y}c zkTAOkxVisHpZyu^2S4l`c_yDiXt$PKQn0No=!c}refWxFCG!bi=Bsv zkG=6YpsS15LJuP!VT$ZQT?zgXLVjiDc>TPEV`{&ZTGQR0BgMS7^u7VBjN`tKeTu4B z8K7UKvPLS(x5hd|d7#%{znlDue^r;zV6_?v{1sBAB~}Ac$|rU=doZX5{3)g=HjCWr zN0#R`Eq{^ErR8LI$M!GX5_`~P6#o8&&-?vS62#81~>flPo|d*+S+N7D+Kyc3ry02+| z*1r`YzS7+c9`G+Hp^-QJ45kc=hVZH0_i3QTXvO$SM~c4Z+kpBjp8xR8cGP7MJh zHQEA9#jlHuqj^;%92#x8U2{r8#l1%k=$Kb*mb!ai_U$NfE#(MZI)v5%XP3XQxubLu zuM7qz0&4S!lT=ilqm0$@W&!nt*)*t(KX-*Au#m;_-N?q8GUBWfl}xwjTD5_^{s!-N z?1f{hLmM3w2WoBLhCWTLPwYqb7gFql7s)rr^-jZ7TIK7lVf|N~M$+m^QUqQZWr1j2 z86``dWU-~vs+-+}++J*BlZB;vj!sXRyHyoYgLZ+`;9KHsA;VTS6YvhL{M@XtD|q-$ zZ?OfRq{sl)=*eB7Rff2O+LfFn)f0>Z{R%>fV@5Ao8|q51Qk9M+M?UW8yX-#?FbR%KJE3Z)N@ZII%8#0bW|Eyju zn^4@~sh}!|i`+0$R97p+6S3(;*gFq%W4^& zT8b0{Qsp+_;D(lqNy>RN(%$F!u6=$*yHpvKjWaB z=Y|$b>q8SiG|rQN$Rb+6?|NjlMRA{QF4spwWfvRyVtbl{C*rlcj^A}Zc|n6oyY|}z z|3FPC?N*~;zfa9$_sR#o(oS-4&XBWIXd8e2!|H=qf|$U-pCrBK4U{paBiUj|1#1K^ zeF2Nf&z}K;`EOboUGd;EXWUh*It?JDeyeqLpx4!MlS3)1{IXfEuqr?Jna$%}<1NmG zEuBl7{bPI@<%d3L?W`7vfKr=Jy@j_F2kN`p^!?J1@v_Z4JdBI19rEGNrJKNwW&Amq z4$@s-1Vx~PtN|^nG#y2CbjkkBw=+FD9J+kfhg&df@!K6bMqia&=D!ZeptCJ&(S^D_ zvRE)t+WP|B-W^}HG_;JU%kRoysKU=)b`8{q1_J#-W7d57F{wUlEU{J?3d+A?cJyQx zZ=-b1<_(mh=S@JQ(wjrcSj$Oaf~TS&t@!S_j1z=hSN zx=dx6Mv`S5AStC>m~2JoTj8#Eu0zg<@4d^EE zy%Ng>J`CN~5*1Ic49exovDWMB{m0-EpZLq3X~`*>9!I>jQUhgV<-TtTFQkqv5K{#? zGwC35g+&5jo2-_(A^Bxy%yQP1jWm)wb&=~)lGVMe{>z<-8D&tWkJbedSX=2o(m@a zGUn3PHq+gup4;Hn#p0Y<-nHrWVnEn(rBM$ysEt%+TkmT`?N40>33a{q6XT05%l!bV zW)xe4cD43jOq6c}hVI}fe-YhH+CVdqFw(lI*ZGT0Mj~9tuhZ@2%e{*VGau08uD>`w zr6rbY2D+}lg*Y5}kzlYD_))>zj1MD?qo3waJAU#Q68fVsNl7}}0029G3YJp-6(0r@ zTU4s$Tj^SgEWR(Utw%;jq~El|W;1lqBS@K;peAysX$yRx&=Or| z$9cOJPs>$YwbI5a!J`?&FQf&@(vU-PQooiR*jzY-S;b$(`*t6XjS0%VJWW{rw&zmT z0&g=`XuztMEk+}S-bI&dpS*YT(R!Af($_wu>vvu;Gfln_Odca%HA%9rGy_B?oF?k1 zU=#mWm;*$O*s~DmP=4L0Aw}%P8n!ShVnm8#JRBTeX4AKOQM=iyuMInfuD6_j{iJ_? z>bz&6RMW_kVhK>`5X~=uBC#c{R?}(x?Qnb*AwqYql*B4o0CQy)jp%}hq-O}(p{bx_ zet+wp`hp-g3VwAXxn)szLG0q;mBp8yX?TacNx%0PDzh6UOr;wlzGB4!Sq|KD4S2$B zTq&tMh^j`zJ2&PS>s)M+1SOgEH(;|gJ~GMzA5%0h?w?4vv>G_lJZz|;!g1W;a03VC zIKY{*H3&&u+var$hRT7}1#Go>gm$hNhl@PbF6 z`dI^W=~HeQY@r)uBj>sWfkh_a2}QL0#!+NcwXLAt&27tZCW&)oMV`Yc?iJf9{buol zPH_G!Y~1b(8M9|EGo>FeN zyX_j9aeuNi-=yH@ny3AQfLhcAWH_hken^It&`qu+gc7yU{Zi9zgO5!}aBd84= z{#+xsb8n`uEan%` z_Vb><_@!Tk+U-zGN!t7A?a+bA)edfMH4Z>G(76vp9N4ey+~C#_R7L7mjxA7RVDms0 z2%T2_ss!R0j&m778>=hQj43&cO=+SZdWcY8T|ONjgugZ#P|t}uEk7E)@8(EWj&F9! z)~9`1%^9-H-;6WCM6YH33eZ}l$`+oG%iNFw zajkHgBzrgon0x_$0bNb%ASMoZib>&SRb05c0>p+EHsVrcTUa++oaE{oD48+Fd+Fsh z^J;p3gWV!O^Lg<1GnC2&`M{$uO!&hu71!2hx6{Kus2C(>1I;>#L-7qzTgy=7J=(h zqPu}ZJfxd~_@||3C$PebpbFis$kivb@_}mpLgMLOlp@L2tP;iw9@A0;MY7zq4l<}e zXcDNN>xES}Ez=*aZ_$`vGGrK+BB(_Yf$M?yvoukyLS#V>u*qz{t~)Sx`%%B}WBgzy z7N%MvBx{{d3}7m%@NLQJq%P<>dHP7n_5gUKoQFqPj~NZ* z{E<-TEK!Aiq^00JiVyDk-WQZ3fZ}yFWk?WJ_mOV$0-)45(HYCmGn$X*7UptF;W=Eh^)X$E(G(rR zP7XI-pzj!T#@JnV%^dHvzJaq-COrSMQmlXCxL}V??^fLBsWDo}h0MV(AVH-enG#$W zQ5{=PKL*DGVta|2xUi|jG3&#C>ria`%)}Jtb)nnQO+Hri_`u=ku0l8W-)@RJ>?moX z%gX=SnpijgUlMpBSAfJ+U_~}w0)+?E0&J>|zDgP`QNCv3)IBmCDAKWv!7}tZ4e&G@ z#tcn&7I7MleRW%e)vpU$$HHhsdg11gMxB(fgkyP+m0$Go;XMjF$>yX}uvgbGSAx@G z2(^f1pl=SES7O&y(~{eWYCod|NlM4V&e9DY_QrpCbE`Vb)lsTiR(rv6{PwAz11t|L zqL|cW52JRVW2>5ktYYNK7ke`_q=Xm_8-z6=xS0}we?L`T4aWG=!F)4ICvj|wbmo`c z2p<>DF1K2o+dP;;^PdPXXN3!+NYC0!o3mp+@`^Xd$wE(wzf3&L>V>%62! zO&lK%oqek+#zoMrA0qrR4^^ptxm+2}M@%av*-%>; zx*OQmtHL*qcGmTy(Jttrm5j|zgq#BV9yqMIpw5*{jxpc+FE_t+6wqwN-rKY_n-26_{ z^iKu>F~9q-&zkZpqZ6NB`-%YgtcXE(PFt}613ckt`c;f&(m((T+1mF23AD?7j@7+%FrSsd`$_wWI5#iK z#lyhiWHgZJ_^$)T_k(4-3}`0`FdrJQPJk4zUS3Wk@jKE9&rlIU^kT6l^}$?fO^R9V zE75f`TUIJCd+O&n?#@n#*AusP*LE9;s_9*qQ?#j%R%CA4G*@Z*Ev1|Se%J5NguUU2 z;>I^=T=N7a5Y4l6`-{?VN`h3A^bhbGhRNcduzADA1JzgG=*<5$Zhh*~Q`@VbKLfI4 zEG?)`Bw?ZWS^!8jv9-r)2y;wYBLmi$fC+>G(QNwGV8~ZIf^+woymq5ZEVtM3&GKDw zOVWSh@s91&&pYTH*Rwr6o3Rjx2E2tet1q`kfm(R5sf@*Iu~;B$k_IQ$4jz(f)XF!0 zYTfO=e{k3%c#4L3b#8+2jPH@iVMg=W8+HaCw%t++1{a`G9YgG;O6@RQ59p%-Py1ST z6?@baNdfQ%c$K69HTBzc>`;AOU=SbjEAa@C4f=;tzPpQ7f{juD9==a&{MNp;5bDAp z%m}nETX=uttw#}IhzMY!qooU{G(qKl-K0qncmwkY%FIX+QM^T(p-{ut0MG#i+aU-b|}naMq|nE*as;T^N}le|LtPq(csuO zI-lHXs>55vDV#!k{rH;WOV8OFaC7bw&#`b6%t#RlodvB%PS!0JBncZ#ufoqQ7*V59 z1j3W?Md2xrkM^40YzHZ5Rn`~Bm9Y^wAFTiFm6H9`E0zKYe`p^Aw2T}Bj*k2ks|Nz- zE7?BZX2XT;hbdK77N4=&j}zcKg2rL&HQRD?a7xXWpD|GEGjilngF%T<6|p(~fNm~z zqXXVUkeC|DRvTq4@wQr3Z?Q_^Xh&+WSpL-ZQzC}PoF_@)5GL|BwD0qjK7+&nwjMz3>;FC>e<2Z6^X^Z8|{s2$Ww|fN1`7!8$EJb zb=`DwW@482KKGp(HcciD)9notY+f>d$F(~PtTx7z67Q4M*Kv$;{Dda}2!4(2=Z-$+grwmK>)_nSr&y?ymw zb#6rt0Wt`*I6zHXf~!(^9?C_Wx+YNj^OND6&G#}KAN#1ySz|x9UD$5^+I%Q-N!Rrk zw`lYCT3ajf0VRzXc>!JBz*viJORO}=@-aJ|^t9uQ*%&uGz|o83;u%rDke{MkfGG1P9*MX2P1fjJ1V+d#)z#=mR8iu9O^ z)MPL5hr$!Qu9f&v9=Lh*rU-Oxm~BI-V9y3cN|HpsoOoT=h=XMMN_@@T`LG&a@QXh*U)Y;4eEYGxTLzPTq)EStzQMri zPHlF(n~&*b`e*GUCTp6efqEIE1Hd$>FEAE6C&|^gh2C1kFbjN;#2$6)uCb()PtME` z2U(_n@u&|7-o1GJSd8wBgcf@fLo-U^mhR$$o9PFOxZaN1vX5{wUrf}Zara1_hvtHu zD2JcVuJo8uf-LC{B5MhJAMZJyR}x)*t1mk9gUj3XfotOTxmwIQJF-E4a#d~I!~!vn z396({uqsgg0G&egl~N{Z$ZyNQRHjJ{#Q5u@M354yut{|*5%%N0&iUMifW%opBeD!BRA#B#Wp}LyRxm3e z6mwrJA8*zNUxeGt!WdVACTUPLX@d<)mxhGp&{g!hbBGqbIczAeb7bNZ|9MAS&@_< ziIM=P*fs;iP~V_dck}Aj9Rn_*JDRb@l`sHw3yY$*Y6u-?j#m_U#8IFn&$ zq)4L>w)R~zC6J_{w1EmTycZXyMG)j@AYWuAQsqiMo<`}O-R{Gz zxEvmxnV##Zd9`F$z6Z_6-X!K6N9mOP=sP>0&ekRXtu zx$m2)iGn<)a%6HdAN}nj8D-gh_y2=u9;k}GjdjuF_X5=A%Z9eUaqqwT#{NfF2#|n; zg7`B9B=NshpZZ@!i0{5LW*emhh^uNuX%H5Z1DZ*6;sI?Rtj%}dY1UdZb^N;v`Rl^| z*%c$(K&P>G(da4uL~epI()!!jcn_$9ki@KT%n0GyNHr^=$@+9;dmfZ$`oL zdsj9(80YScZtiG4sBugUz)hm|AnZE#tJ3C8+W-ltrWDD5t1A+E1Ui}m5HKs}P&E0v zRyqoneLbD*9dN;@cA@t>`3ig0>Ghm8aPE8aQE^P#Ja7Km>{`Fdu|x-Az-fY25&v z=Qs;|bq#~6@p%DErhiT1C@1gk7g=mwfNJ#h%?;-ZjRC z7e4-LKmP5V{_73?HzW9$&HI17#$R6I?;YCzRql(t9bF~`)&2;fM!p0HEYR0HM*_ua zn+~%a^P5g0k?NTNK~IcNAC5JrJ<#@yU8ee4FK46eypsxX^rwC~6O1%Z3>#P6ZG%Qz z7bzX_NEsma0GL!+4@j}tQ=!3dn)Aem*2!sv{bM;_0K6G`6HJm>$>qzeEez1%Gt(3} z%utO^(Qu+cF>-4ORCyN+ynhJvK8*kF%PC!ebo2e?9j%VA*qTk_?uQSJMDeB!V9N?% z!u27}kg0VOV-3x8(AiWb-F-tfl{`1oe!em075~DZzz0u1)eV74tfU5N-Ur}&E#kj@ zrSv5SapdqPH&K~nWKkCxJ97pA)$O1bp0XJU0Hqs`89?7Dyc8&CaTSMf=*^V>^Th+4 z*^fTS`tER)dg$Ly_Fs8gqNKF~3gxRC=gcl-r=kwcW3@}s?F}HxMW{xD#|pyxClAaS zSAY8UWA*$!^8NM~5ALa2`sP;M4E}dF@Wb_Zx__Gn0B<(806CktJRPXZ`6@K=5McMd zRP1`YxD}g0(*(m~w4T@~fu;QOdVar3K4}Z5Q2+GX#P3h=^v=Hj>#mQI*nF~Kti$O* z%NYOtrmn*LY>Md@P=MiO0_l_&V9HfoO^tB_kLU7x;OWy~tN{@6%T8D`EgpLZ6e0Bn zx`@~;hA#AZk~KI2Vz>q?-Za2HXNo~hg^>C9(UlFxUsAm_Z}e+94=#Y6_VBqKvY;WN z0|L!?{c?9)EmaD^KeoQ`000+D zz!~1Efl-MRX!Nv5oevwl;-huVyVpzwgA4!o+s072Z#HNoPNaj^;8o64kkMElTJt~^ z`tFxOPV(n79DH=e5Cn>UI)L5xXZhqe+BARBM@h4)sG`P8i) zRG>s3C-P==aP_uy+&}5na>d{WFWaBrmA>)LSx9htXQy{7e_=^tjp~!-#Y}8&^xd{~ z8x9|3F6#=}sItfzn@0-gj~)U#29-s?B|e_^j{m)x{j(jvEwSRjOffI+QKyJ*&u``c zPBGW9u4KcbKHl^fE=FVKeHV9x+ub~{rAcLFpl7*lyYjehbU`v>4f#S0M%Kw8LOmDaoEVC%qq0V^$Ff1JN6 z)o1|Q74;ALV;{T@`1EX4I~&m}zsR%VOYzaza*@bdoUKt?cEPRsV_UmPWz&~hy|7*N zixy6K+4k}J^!85{!PJlv17AsThpTFbr(C_(uFk8;XoR2t_T7re8$Z2YtQ$*OV&SQ5 zJmt54=ve_`PZZtctI{I?-rO~81>qu?sKr);dNV;(7YzcB%6-a7|Im@x66$=^xS=F4 zgKi9u#}Lp%-3GNPq-PyMJMq@D*}lfV4(oB9Z(SmP0t&ImBBDOnEWdysu1F3Q<7Rm$ zFK@K4%c6YK4Y_tRZrkK1&?o&DJze1D)8Ls1k@w*%>^WGKO2QB>49i>4vilUUh$p626d z)gpA-|o}jwg8dZCk4Uy{q|=L-U9RKt_guJh=|U#wR);=|SiZH>h-}^&dIR z(auE4SEXsR%tO+c_$wT+{}y<6Dof8!YUE~noH5L(UY$W*NIHMRcGx}T`a3-%v8kDT z!N#*U73qRkJa8x1DBGl(5hZ@$V#d*xL?5{h8`awg3Y3rUq@cZEmPYb6d584hSzOaY zfVn$uU)=(M88j&N7P~JGxC&TW^Q5eh!9&A4Pj4K|l&naNTejdjn)z;~0q`^b@tdZ` zS6xTi9i|8ox2(s9-B-w*Da-8Qxl3OkS?~Ib~(mu3^8h!)K?V>d<$pDGDj# zP?bCv2}`k-)GGA{PKvG(##G{qWaDCw;dloAUfkX6p&aYYDS8R*d#&;G(+3jNv#7F(`mf>Y>@^(Ju9 zI5JZtQ-SeV!k|G9IfB2KF|Ut3mmZkjPhQAd+BX@??lwH2DpwuRZnLpiP<_5%`fJRZ zb^WhGQm4*ZRyT8uL1&0sCnvdsVdA&iw#bNN$h=C#v3!>#;WL5Gb$r!Y3ss3PM2ddp zVNmLDvf0U{Aw;mKIV`EYde!JU$!|(4eQy#$pbQsds!+WL0xVdVf&~a#&xjSB8x;v9 z$Fl+Qj*Gxnq6C1rhk5+OCc}$*(Dm&!Mp>p~8rl0iDbGC4<$`CH&rgGQ%y8zkeSO-G zl|O0#scXCsD3sfX*AzfPFaj86qyfSLzNKW7r`)&~Dj0fqTN-a)x86!~z}czyGLS(f zSJc@P?mc^dlol?kZS{%`UNN$pwu+|PQg11$u$luBF_Pk@mBt6eOV+AjqlQ4KyR~IK zN)@xC@P()IA0vF{#vwo?OTd=nBMMlWKBoKn(#IWg{Z4bGgrw8MEnW6J>O(XL)Rk8v zH~linG^RwEIXdL&f|MzNQSYIgKoTU&Gb) zHRVTvpio(BKOqcq;A4mCZBOu~8{CxpRbDf$?AzuyrEG?J;@g7%vE0YgOaf>b*8%Ny z*;+|Zz@}YP3*4{{TzR$4F$T)l7jdZf+2(f+43NkMP60Z@{!zC8; zwvgniC_x-nuEk@0AT?{3_LRm1&7B$Bj2gCd>dYl)Vec_JDP75C$CkV!U$QfSQy`xv zCYaiq6%BFt_4?bP=te-9k$|gUwvsP{mhuo@aOEiOV74=4+nw|v6!IE#S)E<-u(ZOk zf-)ms0-79sYo1@}eu*JZBP%hj!t^RX>r9qh6BdfduCh|bQUV6{67>zf5P!W7$3Z(w zt6(1B)I?{RKYZXV-Sy?wUKcqR@cG@3PK z_xP9uF}Qf8@}FV~KtBSo3Dq<)!1ks|aFXMa_w{x`6kv}W>Lhop_9DRrib|Q-J8>xv zXCF(FnuA_H&a4MR8z@B53D7zF2;5ta$VZ+!*9;1as2LLcRUwunumRcmuYhQMHy0(V zrady{ambW4L}UzOPE6`2nDCj)V2Ue{L{Z@vPrxKA9(rE5vVT*?O_SrQ+wEo8?)^wxvF-n@3_2lGS3 zU$)|oOHt+U^H|ZBJrJkWiIWtFTgTzh5@*Rt3z57n4JCK4Y%;9Ld4IUp(a3yh@TDKy z*4EuwY5xJU0u$)GGn;pc$>*eM>8~6h0E&o~3sq#md$QtfXrJ*Ni*X-E^rMeyhF7-# zkghDilFylDU&lPHbOMm>XwbyXqAiA_TalvMq-GNtP26=@qUNK*39V5#`E>X0iF2q` z#7{BZ8<+4oDVTNWxG?^t93fSLqd`6=g`-h{RGMTMK@;>AN($Xh<&}l+64#pg%Kmkg z%PmSAE~a&MrkfsKvsX=wa|!k%Q$=brUe}X8rVb^=+Zo1CB@R1a z7g2k&HLaz~3n=0u)v+n99V05~t?w3o4hbK{zptdf$w|24+Zqsgx+;wfA-Eq}g)60g zgA7}OVlPn_o@=$Uh4J8xmJ@ctBnZGRgbC-r_Rrdky3ZXLu#mZT9vINyc@t=yUYD>f zg=uG>dv~lCC-!;LV1TQWqGiR%Hr!G<=Hm#ek-ScNT!dwj^k7^oX_X}=S%;obzkM}@ z7w2L>pyuR!2D}|_Dq<&LYfzxKlXB#M%F7}D^MaIPje1F`mAA60WWat?TTKhiCZj%4dD^(Pc#JfdB6xvkp(Mh@$xJr-FXQH1@ zN4t3&o-;#+l~rH$aWKx_F1+rZqH*wz+*%edN5xRMbFGM#o-t%@y)`+VxRf}ouiaNv z|61t2_A4UI&Z2U#ey8EX@Q&|oW!ApsiNO<_H~3_AUPAN=6F_;Cp+g9Hg+c@DSerK{ z{k*cuaVOmpCu~NlS@X~DQ!X7_k;of--~D;)^eT@ikErY@p=ISub;n6fE^;|hds?ml z$4d^!(7ftf4#y?FiMYPk&*mBQ$T5BJat!yxHqskQx8OwD(E7>&=0H<3{BxQYYIw^Ku!_lc8@!I{7|LlY17n4MW0gUCDQ=t_E z^+K3@@Rd{%S~kZD#A}SQj7BG3-~A;wMZD+!adOw4UhQ)?%aV+oek*8#IZ!s={4sR6 z&5F24b{Dv`+(je}Ym<~nRBCNtwvqI7b4CU4HNE0YUBRu@dv9&_H8|c&qY%3oS`agF z7MGGeW+!4wH!QTL%eRGj%c_!Obo`@O_o0l&Ut?dDxwD?8Wmep)8Cj&UXq>X&mG3>_Pz>F_06{71|JYTm61J*QmG9oC)W=pXB zs_j!z)961IkIOcc68pX>EUVuMnIo=_&{Hgv32q~8_liQTOX!y(FH%-bUg*v* z+d+94nrD#OThUNII^9G2E;Wc2| zBEbR9D1zzYeeeVisf@L&8y}6{D6e6j_f}Il`nRr)6xD?+Mp_3xWG| zqjkf7Zek4nubLQ7G~x6a>e79{HtYp@BpUSMRbjXU0@AKal_M&lAIZ;MmG_330F^&o>OHq6`rce>szI3{K#qU{9RrW~h~) z*=r_u(@>;sn8ZMWm^tG;$vjyrzXa}wYr zVXP`$sjbBFwV5+tG2U`?O;2sG&nfL`(^6t=h*9RrfVWqF{RK*hK0duxk)}?- z!l&#uPjZ&m>lMPIUyI>5Op0a1xt5_QYMADeF>Kf>)mF9Jv3esQBf9H~g~I-m#;Cib z;GPj}9Bf6C8jCy<&?ph-FyzuIJN~JY<;`hFrG1W3YDPS=H+t&6VCLO&Au#_-*ic{S z@qp^*XjA?ltW?m z%5y7L)i`8c`Ar`;*15R;v28Q(t_3Q8c)5Lcx+Ug0Tk%2ctMfI3=Q7L$8Aj zT5%&=>CL1>yEU(g#-Tm3dp{-4{Zdx-D*P16q?hFsI8CxFVYCdGseLjvr6yDyC20`Z zm~zflOPMLlo8CIAFLWIw>VC|#sHhP!$Z@41ljCvjPSpZ}tL@iYYV4-`f{>wQeD~Y? z%E~?H7a!;QPy=({A=HR0q-KGreFmZi_Xo=j0Yq8_$s^tYnGq@rQ;EA~r}}ZkIGwLY zZ1;HHS3y&UFT558_7gDpg5i&YRolFLM&6D*-JbkZrBEyA8HAXz;%{WA%KJDg>NTH8 zt@F?9#!#7B&g~@LD5+I# zx+93od={RzE9NRqoT9gSU+V6r6>rbv)qCU+ykW8^n%kDeb?=|0q+DRs@F~gG*hDEt zWn%Q2){Rlzf!%rB*IxD2JV#3CCi535zp?JP4Kn!+_$KB`DJg`DS&EbHg-FT5SPR*0?ugi~nf&PJ4Q%c-ZatvO+A2Dl zhl2ScA8-Xg1YBYF6JfikI02x`5|9<<1w2v(srd+xs<-<6)Ra??N(d)Nf)tlDG&`hO zjYOft2j6(qPT`EGXZ(qI-vm9SnUfeYP z(~IYE589pU5{_rAI*U%dso@ahhiRvj2VFWZj9>6*CJ%RV=}q6EIcQ7;iG^4{t%JBC z)r;UZ81v<8glmIysvd6N?H{fwG%9=ba_e)G?&-xg4^%!bn$$rGP@=FFlG+E@xe(6u z{C{oiF-jg)qVC5}C#OwAb=b5yE05`HyA}$mm+tM%k^hyJY3Ffen3RCw$4mFZP@RN;^&dNv124<6I z14PTq;t<$e$6l%Z4{2@{v89%q&U>~tRz@5bzwZYd;m;NvnBxm)Iz+;KkP!SMMPE^N zljM(BN3g1)aN{OqgUrICO^;w>6+3>LINNnMDzP&CklyN9T9SFhOYyc4oz&b;Ub)c? zB|#)%H=lW(vVIH0oM10Puw*t|@VzRsj5NyH5uB{ZrE1uab74i*-JLh$UN^D_-VL$8 zj^}B}?v+R#Av~WU0j6_koeuWBT}=|SurOxrQQnfUu;Z$98u*{oMYVoLmpyA zw&$?Amru!T^|ZuWYEcbkv+9(cU9j=oV&H%i9HH(8$faeZGx#)o3b`!wg5LGwpeMs) zdv%AMSLMk1Mvd4$o&M&z7FKIkpqmg#J~@d}@qs)`il?Z3y{A2HPj5qALF#>~$8lZa z7lK+;ywKav6!&oBJXk%&qj1S=QFZK<>A9TWYRL}iXK%b&yLxDV(`@PTJ)+nq@+;s1 zB1RBVfMP%bS@JV+fT06@y8pob+!G+HVc!(iqK_0!XOvRbXRv`wGd!7hsNhsk*3-h; z&n53vcYo;6t5zBiNAi;3bmU>+{)0r^+-AoY0nHpbG-L;e0&OLjTsRkwSk6G zrT!B1Zl%ivZOFhCa>!hLS;XP38Z)VDi13TkX+9hqyP8VE>*YWH%)hvQU8(2M>Pne@ z{^Hb)|FfT3@)FPsI>|*ybU>%6Oh2o0$aS1FuZP|MSYaGMBBP-162_P`UPcie!6i~e zhnx*sqqNq1lw)MYXwsw5n*<}+>CD+S-5BSWW#1GcrinhLtfKZGt)G}0(#zXkHUIwj z+_|v%Gr$pQIwvG5fL|c(9Yni^TU+l^AdQmMF>He6KV>#CRI2*~=RbPuV$?%x=3B&_DJ}eVXRuAlLo!7v3Fl*)u&JFuSmJ_I)HY50t2v~qHZ7BgXC{a9!HFvYt%`6 zjBLiGd1$@dP<{1ir-|5@K0!r~gx|C&ucdYdn5A26o|@Y+gv-`JNmZNY_;XSkBu>FYdUCNMj| zE)|&XvTK*65p4;cvSQMB9!KOtxsF*+@BrB#W-Fkb7+3k|6NVPW)`{&WD%h*rPto4uccKLDn+Ye}8E35*}itPFxCa zl4uh&AggvVS>IURC?a02QrUj6Y+tVXP-MuO5w=sG;LeahJ2Uodgzt;w6vKY>FZLF_ z@`K>iG@0Xt7*Mep2PX+=Gf$B_4ywiY{G$4> zb+)hcUhwCxog)EiYmZl@UsYb{l6VkbU=%SC$SZlqFaqMUFl;$uNZeBt8fAWCYDB9< z$C@3Qo0Y=!qKd--81SBIZ%$(vU;|M@Pew#a*PHd)I5W9_Z974Mc?}9-X+WtA`rih7hn~0 zwxr2YYYB^+Bptv=j27tfepWvr;G`Wxk22;TIn6Dsvaw_RqO)n6WoIsfL}zQCwo zZ;L$#L$Wltl$7kU19Wk@z26k-K+WN;Adbs*nKx!?f`SofYI^95116>ml#fP14f0bI zLnH#@xpArA6y_EK=`PAgOmxaug2bodneVW!rJ!ncC6k~o@+$_Hd4+K1A&)Z5avWf6 zBy1_`o#DTJ&`>{Q=@T27Za$wCV0D94%vP+-! zRB2q;I*M!uF%<&TLdNfyLa653-umQF{~Bm3^tfLiD$P@DNDLPAIeCRooLB8!pJukn z+RknxSO#DzY%*Y&k(%r=Uo&QJz8LnQ}oR#pAOfSz77MY?cKr~h%$yI2}tQ{&fJdx zNl|)0!jcEmWv>ykG9aV>)kpb=cU1XuVC@up8f5ps%520(WmQ1SvI(c5)z2WQ9^AL! zTbfY}mxsJFwpEiW$METu1Mxp!f6d#^tM|R3=~H=)LlHS}VDmVk070ANlz$LZ^5XQ_ z{G{Z_B=WehEgR_QbWCfe%Z9BVvqgX!tf91UT}u>A4XeqUx%6c8X&`_^U)ce+autdc zlukM%0}1X3+N$6=%zCu#Q#3`1sBHH*j5;Y-&snjY?8D3(bKLT&^2gr|EBEK^e>!w> zB1cf5r6gTLmoN9fC_#rUL<_Kzh?o=D8kox!_`d_&>Gjpg7w00n`)dEb3!_r;XGeVG zW3AmrPxgJb53DmW8;V%_OhGmQ)aQG^>huxq1Cl3S=aPU3zRQt*KZ1EII_*&3i6{2Q{ou25{xVvzmE~QeeG{5&QRpaO$x*k>O5F*DB@KBHKL?0J&PEC4x9M+6zC zg$d!nCiL&YJ)aB~#I=GS@=5Rk@YhBNE7r`*71PS#Y`5oCpn2+f;zsp=hLT!BMrqWk z@UlS6U8E-S7;U7zg(>=l@?8<>sdHV}fK;}h3D7EPu=03xDu%nWmk&_T0Yi!Pm>~QK zaZtTF`&4y5{&08A^^Mr9>S}ifJh;2CVNxUR|LQR!tOvC>Q~uCnMkLX#7@Q>P4?XtS z&xcev-1RRtHY#`2)fHE*-F68eNCI#JLk!q%(IucZ_?FUnxJSOaT$XJqixgT2htv4u{UsLntX!Vm zlz8+RXbIGaU4U$uqJcL1z4sDuWR7IwH?$H6vzOjv+~ zG?+6z;IulRPOt+PfbG}IM|@=eX~m!s;06rZ)Al8CK`l)SBMoHU1v6)G;virpPQnu) z%4h(qyAICgpA~-J!^y?%<8#fn+r&L?{X{M4&i=1@c2hfNP&0%z0U9C~-DQpjk;$5o z$Ce-4y>zi@FLgflZy(Q;PO99G#M?v~rpVJX`Pp(1qRMTsQhSsHh;eT@;VjT!V_6{I z6TD<05e!KE`v-OZ5pCjw{Ksq=NP2x7wgW?tgy44bD@ZMFpqPY_>6)~oqMVg(4Ba!^Hzwq$!Xo^6*o+0MwME0iW4f4 zf-Y50QiRtVKl2P@YWSCt_Q);u8LfuB1_h2fHdKpHD0}6v*6P(Hv%hje{(41S-%By# zTfpTg1u$T3;LSiUF#q!x?8=v}f`Oe>Hf_YI$~QU?7n`Uxjtsw zxc7XrQN{_6fdU6UA+Wo`!_Q4Rfs? z#GQ5UMIL2Y%#zk9eZ@hLsw%4Fq|wmZYU^(gR^3FWuh$a(=wO)fa#x43=#k+ft8E>~ zFKhn71;qTjx3UXa&k;RghPW(P3#CmLKq$VxK(6T_0Er^3FPIjOasqZG3kLqopWMm6 zc-E`vX5>{nBd}InG6MyXT5zx@<3~76mLV$u0bH|zR>p+v%BJJwxibfTKes;l=Ob+| z@3p4Tj=&(yRz|fjmi7@4qAxtfB$g!|3LhygqdAU0s;r|Hh$9nqV+KRqe=a~a1R3eQ zoxkY)Q>l?W=ueCIYxip|_fIc%i`4u?_7L-Nn)yX>k|aILT=sWexgTLu(euOb;RkSO zyEjCV8ZWe8L&wI^rba$U4JL~|)zn?zu<^4S)-^jJ*R+BFuT=O@0#}AX7u&6)FIQj` zr0&mPp9k=c=J`_wWbOo`GV+nH@6mNSjz-nLZFWd513#+?Z9%7h2O-Li|E)_Y)0Jw& zpdnyo8ke5P&?iNZnt`%e4%LH#O}jXH7%jA$^7^LmI+jew-=hoH3wqWy%GF5!Mi3_> z{c$zO|6i~}+JO@t!LWTA0mmLk00c}KfOPcNK)5RwVdTUG2l6>CNV{9sy=^}i_~lbT YjA20Vu+gCGe<{9QBhG_TU%ykW_o&hgoK2Sj*gj`nXRp@ zx3{GD-ot>R?b8}2gOq`sYeSLjp zWn}>L4FKpF0Nf=2(J%nTJOH^!0IgI2qF(@(YXFLO0Dpqi)YOHAg*Z4kA|fIHZB+mO z00000EC2ui01pI&0ssd7K!R{cEE41ejE#JT4Oi z7#jdj*_}>%)f}`okj0Tah1!AXv1Z7kcs1(XTXe5Nzchn>jO$Y<;kHu~D_$&bsZ2aw zweoQc;Om{RV#(S$i&n1Bw?ml@d<%52Owb@1f*x)1V8okpAAioL~je`=$duV z-ll^Cr`uC0;or1_|19X3vGeE9b7dvsRZmqTm90A_kR1=^%wy?r?ku>sdCH;Bmu9{c zZhFJMk+;vup1u3@cRlk?TQas^`s(4P+F|k8w;yu5Avm09c-=)3WeEbvnoiMGXyJvT zI3xsx9sXg*AAlRS^&NO;ji(!M2ku8;PAsChn}IM+IM;FY$){Y610MI{P=(FNS73&* z*rSRC#^{1bU@VQr>plZgr zT%OGB+GeY{>NZ=X$R?}oPM2Z|2c^zFJKtrY>`@k3CZ-x-qJzek)~rz4Mkld$j(aS) z{>R#8(vQQMJ0p+6_R1@vNaoiZu5#*XEUwG;>u;4^h1eZr&r)ZZ9oIQ_FdZXuhV8r4 zk_M}d1GXD(lB%A_qnkI%SaF2tGWuJ2Yw~L`U$*x37s@QlJE*9`dK~M!LL&C>%{WVi z9v_iaw@1&2eP`ms#-@88qM;@|YK}?|Xr!b!s|JtR&x0Gw3IxuQn)PkRm6}w^KIH zS$NTCi_0y@g0IIWy0hAMw%eR{?zwl>Zk7kplvq8Fspm9)=Bb~z?z-!oX1KQgKC_Rb z`lq$OuKVu(#xDEqypsaFL}CVS{P9-$j{Ne>H}AYQ%0Dmt^wd|+i#<7HpZyBlckli8 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 N!X HPC systems with Julia support

    HPC systems with Julia support

    πŸ’‘ Note
    It is difficult to keep the table below up-to-date. It is also almost certainly incomplete. We rely on people like you, so please update the table if you think something can be improved!

    Content


    Description

    We try to maintain an (incomplete) list of HPC systems that provide a Julia installation and/or support for using Julia to its users. For this, we use the following nomenclature:

    • Center: The HPC center's name

    • System: The compute system's "marketing" name

    • Installation: Is a pre-installed Julia module available?

    • Support: Can users expect "official" Julia support on the system (e.g. by HPC staff)?

    • Interactive: Is interactive computing with Julia supported, i.e., can you run parallel jobs on the system interactively via, e.g., Jupyter notebooks?

    • Architecture: The main CPU used in the system

    • Accelerators: The main accelerator (if anything) in the system

    • Documentation: Links to documentation for Julia users

    HPC systems

    (Sorted in alphabetical order)

    Australasia

    CenterSystemInstallationSupportInteractiveArchitectureAcceleratorsDocumentation
    NeSIMahuika, Māuiβœ…βœ…βœ…Intel Xeon Broadwell/Cascade Lake + AMD EPYC MilanNvidia Tesla P100, A1001

    Europe

    CenterSystemInstallationSupportInteractiveArchitectureAcceleratorsDocumentation
    ARC, UCLMyriad, Kathleen, Michael, Youngβœ…βœ…?various Intel Xeonvarious GPUs1
    CSC (EuroHPC)LUMIβœ…βœ…βœ…AMD EPYC MilanAMD Radeon Instinct MI250X1, 2
    CSCPuhtiβœ…βœ…βœ…Intel Xeon Gold 6230Nvidia Tesla V1001, 2
    CSCMahtiβœ…βœ…βœ…AMD EPYC 7H12Nvidia Ampere A1001, 2
    CSCSPiz Daintβœ…βœ…βœ…Intel Xeon Broadwell + HaswellNvidia Tesla P1001
    DESY ITMaxwellβœ…?βœ…various AMD EPYC/Intel Xeonvarious GPUs1
    HLRSHawkβœ…βœ…βœ…AMD EPYC RomeNvidia Tesla A1001
    HPC2N, UmeΓ₯ UKebnekaiseβœ…βœ…?Intel Xeon Broadwell + SkylakeNvidia Tesla K80, Nvidia Tesla V1001
    IT4I (EuroHPC)Karolinaβœ…βœ…βœ…AMD EPYC RomeNvidia Ampere A1001
    IZUM (EuroHPC)Vegaβœ…βœ…βœ…AMD EPYC RomeNvidia Ampere A1001
    LuxProvide (EuroHPC)MeluXinaβœ…?βœ…AMD EPYC RomeNvidia Ampere A100-401, 2
    PC2, U PaderbornNoctua 1βœ…βœ…βœ…Intel Xeon SkylakeIntel Stratix 10 + consumer GPUs1
    PC2, U PaderbornNoctua 2βœ…βœ…βœ…AMD EPYC MilanNvidia Ampere A100, Xilinx Alveo U2801
    ULHPC, U LuxembourgAion, Irisβœ…?βœ…AMD EPYC Rome + Intel Xeon Broadwell/SkylakeNvidia Tesla V1001
    ZDV, U MainzMOGON IIβœ…??Intel Xeon Broadwell + Skylakeno1
    ZIBHLRN-IVβœ…βœ…?Intel Cascade Lake APcoming soon: Nvidia A100, Intel PVC1

    North America

    CenterSystemInstallationSupportInteractiveArchitectureAcceleratorsDocumentation
    Carnegie Mellon College of EngineeringArjuna, Herculesβœ…βœ…βœ…Intel Xeon+AMD EPYC MilanNvidia A100, Nvidia K801
    Dartmouth CollegeDiscoveryβœ…?βœ…Intel Xeon (various) + AMD EPYC 7532Nvidia V1001
    FASRC, Harvard UCannonβœ…?βœ…Intel Xeon Cascade LakeNvidia V100, A1001
    HPC @ LLNLvarious systemsβœ…?βœ…various processorsvarious GPUs1
    NERSCCoriβœ…??Intel Xeon HaswellIntel Xeon Phi1
    NERSCPerlmutterβœ…βœ…?AMD EPYC MilanNvidia Ampere A1001, 2
    Open Science GridN/AβŒβœ…?VariousVarious1
    Perimeter Institute for Theoretical PhysicsSymmetryβœ…βœ…βœ…AMD EPYC, Intel XeonNvidia V100-
    Pittsburgh Supercomputing CenterBridges-2βœ…βœ…βœ…AMD EPYC, Intel XeonNvidia V1001
    Princeton UniversitySeveral including Tigerβœ…βœ…βœ…Intel Xeon (Skylake + Broadwell)Nvidia P1001

    Other HPC systems

    There are a number of other HPC systems that have been reported to provide a Julia installation and/or Julia support, but lack enough details to be put on the list above:

    • Various clusters at ANL

    \ No newline at end of file + HPC systems with Julia support

    HPC systems with Julia support

    πŸ’‘ Note
    It is difficult to keep the table below up-to-date. It is also almost certainly incomplete. We rely on people like you, so please update the table if you think something can be improved!

    Content


    Description

    We try to maintain an (incomplete) list of HPC systems that provide a Julia installation and/or support for using Julia to its users. For this, we use the following nomenclature:

    • Center: The HPC center's name

    • System: The compute system's "marketing" name

    • Installation: Is a pre-installed Julia module available?

    • Support: Can users expect "official" Julia support on the system (e.g. by HPC staff)?

    • Interactive: Is interactive computing with Julia supported, i.e., can you run parallel jobs on the system interactively via, e.g., Jupyter notebooks?

    • Architecture: The main CPU used in the system

    • Accelerators: The main accelerator (if anything) in the system

    • Documentation: Links to documentation for Julia users

    HPC systems

    (Sorted in alphabetical order)

    Australasia

    CenterSystemInstallationSupportInteractiveArchitectureAcceleratorsDocumentation
    NeSIMahuika, Māuiβœ…βœ…βœ…Intel Xeon Broadwell/Cascade Lake + AMD EPYC MilanNvidia Tesla P100, A1001

    Europe

    CenterSystemInstallationSupportInteractiveArchitectureAcceleratorsDocumentation
    ARC, UCLMyriad, Kathleen, Michael, Youngβœ…βœ…?various Intel Xeonvarious GPUs1
    CSC (EuroHPC)LUMIβœ…βœ…βœ…AMD EPYC MilanAMD Radeon Instinct MI250X1, 2
    CSCPuhtiβœ…βœ…βœ…Intel Xeon Gold 6230Nvidia Tesla V1001, 2
    CSCMahtiβœ…βœ…βœ…AMD EPYC 7H12Nvidia Ampere A1001, 2
    CSCSPiz Daintβœ…βœ…βœ…Intel Xeon Broadwell + HaswellNvidia Tesla P1001
    DESY ITMaxwellβœ…?βœ…various AMD EPYC/Intel Xeonvarious GPUs1
    HLRSHawkβœ…βœ…βœ…AMD EPYC RomeNvidia Tesla A1001
    HPC2N, UmeΓ₯ UKebnekaiseβœ…βœ…?Intel Xeon Broadwell + SkylakeNvidia Tesla K80, Nvidia Tesla V1001
    IT4I (EuroHPC)Karolinaβœ…βœ…βœ…AMD EPYC RomeNvidia Ampere A1001
    IZUM (EuroHPC)Vegaβœ…βœ…βœ…AMD EPYC RomeNvidia Ampere A1001
    LuxProvide (EuroHPC)MeluXinaβœ…?βœ…AMD EPYC RomeNvidia Ampere A100-401, 2
    PC2, U PaderbornNoctua 1βœ…βœ…βœ…Intel Xeon SkylakeIntel Stratix 10 + consumer GPUs1
    PC2, U PaderbornNoctua 2βœ…βœ…βœ…AMD EPYC MilanNvidia Ampere A100, Xilinx Alveo U2801
    ULHPC, U LuxembourgAion, Irisβœ…?βœ…AMD EPYC Rome + Intel Xeon Broadwell/SkylakeNvidia Tesla V1001
    ZDV, U MainzMOGON IIβœ…??Intel Xeon Broadwell + Skylakeno1
    ZIBHLRN-IVβœ…βœ…?Intel Cascade Lake APcoming soon: Nvidia A100, Intel PVC1

    North America

    CenterSystemInstallationSupportInteractiveArchitectureAcceleratorsDocumentation
    Carnegie Mellon College of EngineeringArjuna, Herculesβœ…βœ…βœ…Intel Xeon+AMD EPYC MilanNvidia A100, Nvidia K801
    Dartmouth CollegeDiscoveryβœ…?βœ…Intel Xeon (various) + AMD EPYC 7532Nvidia V1001
    FASRC, Harvard UCannonβœ…?βœ…Intel Xeon Cascade LakeNvidia V100, A1001
    HPC @ LLNLvarious systemsβœ…?βœ…various processorsvarious GPUs1
    NERSCCoriβœ…??Intel Xeon HaswellIntel Xeon Phi1
    NERSCPerlmutterβœ…βœ…?AMD EPYC MilanNvidia Ampere A1001, 2
    Open Science GridN/AβŒβœ…?VariousVarious1
    Perimeter Institute for Theoretical PhysicsSymmetryβœ…βœ…βœ…AMD EPYC, Intel XeonNvidia V100-
    Pittsburgh Supercomputing CenterBridges-2βœ…βœ…βœ…AMD EPYC, Intel XeonNvidia V1001
    Princeton UniversitySeveral including Tigerβœ…βœ…βœ…Intel Xeon (Skylake + Broadwell)Nvidia P1001

    Other HPC systems

    There are a number of other HPC systems that have been reported to provide a Julia installation and/or Julia support, but lack enough details to be put on the list above:

    • Various clusters at ANL

    \ No newline at end of file diff --git a/user_jlls/index.html b/user_jlls/index.html index c413a75..565ce5c 100644 --- a/user_jlls/index.html +++ b/user_jlls/index.html @@ -1 +1 @@ - JLLs vs system software

    JLLs vs system software

    Content


    TBD

    ‴ back to Content

    \ No newline at end of file + JLLs vs system software

    JLLs vs system software

    Content


    TBD

    ‴ back to Content

    \ No newline at end of file diff --git a/user_vscode/index.html b/user_vscode/index.html new file mode 100644 index 0000000..2d9e059 --- /dev/null +++ b/user_vscode/index.html @@ -0,0 +1,20 @@ + Visual Studio Code on HPC Clusters

    Visual Studio Code on HPC Clusters

    VS Code is a very popular IDE with a great Julia extension (website). Running it on a cluster typically isn't straightforward and we want to highlight the most important steps here.


    Content


    What does "Running VS Code on a cluster" actually mean?

    To be clear: What it does not mean is to have VS Code running locally and using its terminal (at the bottom) the ssh to the cluster and running julia on it.

    Instead, we want to connect VS Code to a little server component that will run on the cluster. Hence, only the GUI will run locally and everything else will run on the cluster. This includes VS Code extensions, like the Julia extension and will eventually give us an integrated REPL, a debugger, a plot pane, etc., all working remotely on the cluster.

    Running VS Code on a login node (SSH)

    Note: We assume that the hostname of the cluster is mycluster.

    1. Make sure that you have password-less SSH access to the cluster (ssh mycluster should bring you to the cluster).

    2. In VS Code, press F1 and run the Remote-SSH: Open SSH Host... command.

    3. Enter mycluster and press enter.

    After a second or two, you should have VS Code running on a login node! πŸŽ‰

    ‴ back to Content

    Installing the Julia extension

    1. Open the extensions view (press CTRL/CMD + SHIFT + X).

    2. Search for julia.

    3. Click on install.

    Making the Julia extension work

    Typically, the julia command is not directly available on a cluster but one must load a Julia module first (e.g. module load julia). Unfortunately, the Julia extension doesn't know about this, so we need to teach it.

    1. Prepare a Julia wrapper script (julia_wrapper.sh) like the following:

    #!/bin/bash
    +
    +# Making module command available
    +# ------------------------------------------------------------
    +export MODULEPATH=/etc/modulefiles:/usr/share/modulefiles
    +export LMOD_SYSTEM_DEFAULT_MODULES="DefaultModules"
    +source /usr/share/lmod/lmod/init/profile
    +module --initial_load restore
    +# ------------------------------------------------------------
    +
    +# Load julia
    +module load julia
    +
    +# Pass on all arguments to julia
    +exec julia "${@}"

    Note the module name as well as (at least) the first two lines of the block that makes the module command available are system specific and must be adjusted. To figure our the latter, you may run the following in a shell on the cluster: echo $MODULEPATH and echo $LMOD_SYSTEM_DEFAULT_MODULES.

    1. Make the wrapper script executable: chmod +x julia_wrapper.sh

    2. Check that it works: ./julia_wrapper.sh should open the Julia REPL.

    Once the wrapper is ready and functional, we need to point the Julia extension to it.

    1. Open the VS Code Settings (press CTRL/CMD + ,).

    2. Click on the tab Remote [SSH: mycluster].

    3. Search for Julia executable.

    4. Insert /path/to/julia_wrapper.sh into the text field under Julia: Executable Path.

    If ALT/OPTION + J followed by ALT/OPTION + O (or pressing F1 and executing the Julia: Start REPL command) successfully spins up the integrated Julia REPL, you know that the setup is working! πŸŽ‰

    Important note: If you want all the nice features of the Julia extension - like inline evaluation, plotting, debugging, etc. - you need to use the integrated REPL started by the shortcuts mentioned above. If you just type julia in a terminal (at the bottom), the resulting REPL will not be connected to the extension!

    ‴ back to Content

    Can I run VS Code on a compute node? (SSH)

    Maybe. The first thing you need to check is whether it is at all possible for you to connect to a compute node via SSH, as not all HPC centers allow this. (Note that typically you can only ssh to compute nodes that are part of a job that you have currently running.)

    Given that you can ssh to compute nodes, what you want to do next is add a generic (wildcard) entry, that covers all compute nodes, to your .ssh/config. Assuming that the hostnames of the compute nodes start with cn (e.g. cn1201 and cn2134 etc.) and assuming that you already have a ssh config entry for mycluster, this could look like this:

    Host cn*
    +    HostName %h
    +    ProxyJump mycluster
    +    User [USERNAME]
    +    IdentityFile [PATH TO PRIVATE KEY]
    +    IdentitiesOnly yes

    Afterwards, you can use the following steps to run VS Code on a compute node:

    1. Open a terminal (outside of VS Code)

    2. Login to the cluster (ssh mycluster)

    3. Get an interactive session on a compute node (and write down the name of the node that has been assigend to you, say, cn1201).

    4. Follow the steps under Running VS Code on a login node (SSH) above but replace the hostname mycluster by the name of the compute node (e.g. cn1201).

    ‴ back to Content

    Running VS Code remotely via "remote tunnels"

    Microsoft provides "Remote tunnels" as an alternative to SSH to connect VS Code to remote systems.

    Pro

    • Allows you to connect to any machine with internet access (including cluster compute nodes that you can't ssh to!).

    Con

    • Requires a GitHub / Microsoft account.

    • Microsoft serves as the tunnel provider (man in the middle).

    1. Download the VS Code command line interface from https://code.visualstudio.com/Download (search for CLI).

    2. Copy the single code binary to the cluster (and put the directory on PATH).

    3. Run code tunnel --verbose and follow the steps (to connect to your GitHub account).

    4. Afterwards, open VS Code and install the Remote - Tunnels extension.

    5. Run the command Remote-Tunnels: Connect to Tunnel... and connect to the remote node.

    ‴ back to Content

    \ No newline at end of file