From 588eb9ca1901777034ae1140516d4db7ff03d80b Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 13 Feb 2024 09:09:16 -0500 Subject: [PATCH] Clarify DAL file tutorial (#312) * link to Smart Rollup page * Clarify how to use the script * spell out the deployment steps * Use the same case as the constant * troubleshooting section * result of publishing * Clarify * Clarify that you don't have to run nodes * Hard-code diagram * hard-code file and move MDX file to MD * Split environment setup to a separate page * remove info about the reveal data channel * Move to MD file and hard-code diagram * clarify slots, commitments, and pages * correct path to setup page * these can be MD files * clarify what you do and don't set up in the tutorial * forgot to mention the node * tutorial diagram --- .../tutorials/build-files-archive-with-dal.md | 104 +++++++++ .../build-files-archive-with-dal.mdx | 207 ------------------ .../{get-dal-params.mdx => get-dal-params.md} | 28 ++- .../{get-slot-info.mdx => get-slot-info.md} | 31 ++- ...n-the-dal.mdx => publishing-on-the-dal.md} | 46 +++- .../set-up-environment.md | 133 +++++++++++ ...using-full-slot.mdx => using-full-slot.md} | 0 sidebars.js | 1 + .../img/architecture/dal-slots-in-blocks.png | Bin 0 -> 20982 bytes static/img/architecture/dal-workflow.png | Bin 0 -> 56019 bytes .../img/tutorials/dal-file-tutorial-setup.png | Bin 0 -> 62200 bytes 11 files changed, 323 insertions(+), 227 deletions(-) create mode 100644 docs/tutorials/build-files-archive-with-dal.md delete mode 100644 docs/tutorials/build-files-archive-with-dal.mdx rename docs/tutorials/build-files-archive-with-dal/{get-dal-params.mdx => get-dal-params.md} (85%) rename docs/tutorials/build-files-archive-with-dal/{get-slot-info.mdx => get-slot-info.md} (84%) rename docs/tutorials/build-files-archive-with-dal/{publishing-on-the-dal.mdx => publishing-on-the-dal.md} (68%) create mode 100644 docs/tutorials/build-files-archive-with-dal/set-up-environment.md rename docs/tutorials/build-files-archive-with-dal/{using-full-slot.mdx => using-full-slot.md} (100%) create mode 100644 static/img/architecture/dal-slots-in-blocks.png create mode 100644 static/img/architecture/dal-workflow.png create mode 100644 static/img/tutorials/dal-file-tutorial-setup.png diff --git a/docs/tutorials/build-files-archive-with-dal.md b/docs/tutorials/build-files-archive-with-dal.md new file mode 100644 index 000000000..9e4d3c674 --- /dev/null +++ b/docs/tutorials/build-files-archive-with-dal.md @@ -0,0 +1,104 @@ +--- +title: Implement a file archive with the DAL and a Smart Rollup +authors: 'Tezos Core Developers' +last_update: + date: 9 February 2024 +--- + +:::note Experimental +The Data Availability Layer is an experimental feature that is not yet available on Tezos Mainnet. +The way the DAL works may change significantly before it is generally available. +::: + +The Data Availability Layer (DAL) is a companion peer-to-peer network for the Tezos blockchain, designed to provide additional data bandwidth to Smart Rollups. +It allows users to share large amounts of data in a way that is decentralized and permissionless, because anyone can join the network and post and read data on it. + +In this tutorial, you will set up a file archive that stores and retrieves files with the DAL. +You will learn: + +- How data is organized and shared with the DAL and the reveal data channel +- How to read data from the DAL in a Smart Rollup +- How to host a DAL node +- How to publish data and files with the DAL + +Because the DAL is not yet available on Tezos Mainnet, this tutorial uses the [Weeklynet test network](https://teztnets.com/weeklynet-about), which runs on a newer version of the protocol that includes the DAL. +Weeklynet runs just like other Tezos networks like Mainnet and Ghostnet, with its own nodes, bakers, and accusers, so you don't need to run your own nodes and bakers. + +See these links for more information about the DAL: + +- For technical information about how the DAL works, see [Data Availability Layer](https://tezos.gitlab.io/shell/dal.html) in the Octez documentation. +- For more information about the approach for the DAL, see [The Rollup Booster: A Data-Availability Layer for Tezos](https://research-development.nomadic-labs.com/data-availability-layer-tezos.html). + +## Tutorial applications + +In this tutorial, you set up these components: + +- The Octez client, which you use to manage a local wallet, deploy a Smart Rollup, and send data to the DAL +- A Data Availability Layer node (not to be confused with a layer 1 node), which stores data temporarily and distributes it to Smart Rollups +- A Smart Rollup that listens for data published to the DAL, retrieves it from the DAL node, and stores it locally +- A Smart Rollup node that runs your Smart Rollup + +For simplicity, you do not set up a layer 1 node or a baker, which are responsible for verifying that the data is available before Smart Rollups can access it. +Instead, you use the existing nodes and bakers that are running on Weeklynet. + +## Tutorial diagram + +Here is a diagram that shows the components that you set up in this tutorial in a light blue background: + +![A diagram of the DAL file tutorial, highlighting the Octez client, DAL node, and Smart Rollup that you create with a light blue background to distinguish them from the existing DAL nodes, layer 1 nodes, and bakers](/img/tutorials/dal-file-tutorial-setup.png) + + + +## Prerequisites + +This article assumes some familiarity with Smart Rollups. +If you are new to Smart Rollups, see the tutorial [Deploy a Smart Rollup](./smart-rollup). + +## Why the DAL? + +The DAL has earned the nickname "Rollup Booster" from its ability to address +the last bottleneck Smart Rollups developers could not overcome without +sacrificing decentralization: block space. Smart Rollups offload +*computation* from layer 1, but the transactions that they process still need to +originate from somewhere. + +By default, that "somewhere" is the layer 1 blocks, yet the size of a Tezos +block is limited to around 500KBytes. In this model, while Smart Rollups do not +compete for layer 1 gas anymore, they still compete for block space. + +The DAL allows third parties to publish data and have bakers attest that the data is available. +When enough bakers have attested that the data is available, Smart Rollups can retrieve the data without the need for additional trusted third-parties. + +## How the DAL works + +In this tutorial, you create a file archive application that allows clients to upload data to the DAL. +You also create a Smart Rollup that listens to the DAL and responds to that data. + +The DAL works like this: + +1. Users post data to a DAL node. +1. The DAL node returns a certificate. +This certificate includes a commitment that the data is available and a proof of the data. +1. Users post the certificate to layer 1 via the Octez client, which is much cheaper than posting the complete data. +1. When the certificate is confirmed in a block, layer 1 splits the data into shards and assigns those shards to bakers, who verify that the data is available. +1. Bakers verify that the data is available and attest that the data is available in their usual block attestations to layer 1. +They have a certain number of blocks to do so, known as the _attestation lag_, and if they don't by the end of this period, the certificate is considered bogus and the related data is dropped. +1. Other DAL nodes get the data from the initial DAL node through the peer-to-peer network. +1. The Smart Rollup node monitors the blocks and when it sees attested DAL data, it connects to a DAL node to request the data. +1. The Smart Rollup node stores the data in its durable storage, addressed by its hash. +Smart Rollups must store the data because it is available on the DAL for only a short time. +1. Users who know the hash of the data can download it from the Smart Rollup node. + +The overall workflow is summarized in the following figure: + +![Overall diagram of the workflow of the Data Availability Layer](/img/architecture/dal-workflow.png) + + +There are many steps in the DAL process, but the most complicated parts (storing and sharing data) are handled automatically by the various daemons in the Octez suite. + +:::note +When you install a Smart Rollup, you provide only the installer kernel on layer 1 and the full kernel via the reveal data channel. +Currently, you cannot send the full kernel data over the Data Availability Layer, so this tutorial relies on the reveal data channel to install the kernel as usual. +::: + +When you are ready, get started by going to [Part 1: Setting up an environment](./build-files-archive-with-dal/set-up-environment). diff --git a/docs/tutorials/build-files-archive-with-dal.mdx b/docs/tutorials/build-files-archive-with-dal.mdx deleted file mode 100644 index 95770a04f..000000000 --- a/docs/tutorials/build-files-archive-with-dal.mdx +++ /dev/null @@ -1,207 +0,0 @@ ---- -title: Implement a file archive with the DAL and a Smart Rollup -authors: 'Tezos Core Developers' -last_update: - date: 26 January 2024 ---- - -import LucidDiagram from '@site/src/components/LucidDiagram'; - -:::note Experimental -The Data Availability Layer is an experimental feature that is not yet available on Tezos Mainnet. -The way the DAL works may change significantly before it is generally available. -::: - -The Data Availability Layer (DAL) is a companion peer-to-peer network for the Tezos blockchain, designed to provide additional data bandwidth to Smart Rollups. -It allows users to share large amounts of data in a way that is decentralized and permissionless, because anyone can join the network and post and read data on it. - -In this tutorial, you will set up a file archive that stores and retrieves files with the DAL. -You will learn: - -- How data is organized and shared with the DAL and the reveal data channel -- How to read data from the DAL in a Smart Rollup -- How to host a DAL node -- How to publish data and files with the DAL - -Because the DAL is not yet available on Tezos Mainnet, this tutorial uses the [Weeklynet test network](https://teztnets.com/weeklynet-about), which runs on a newer version of the protocol that includes the DAL. - -See these links for more information about the DAL: - -- For technical information about how the DAL works, see [Data Availability Layer](https://tezos.gitlab.io/shell/dal.html) in the Octez documentation. -- For more information about the approach for the DAL, see [The Rollup Booster: A Data-Availability Layer for Tezos](https://research-development.nomadic-labs.com/data-availability-layer-tezos.html). - -## Prerequisites - -This article assumes some familiarity with Smart Rollups. -If you are new to Smart Rollups, see the tutorial [Deploy a Smart Rollup](./smart-rollup). - -### Set up a Weeklynet environment and account - -Because Weeklynet requires a specific version of the Octez suite, you can't use most wallet applications and installations of the Octez suite with it. -Instead, you must set up an environment with a specific version of the Octez suite and use it to create and fund an account. -Note that Weeklynet is reset every Wednesday, so you must recreate your environment and account after the network resets. - -The easiest way to do this is to use the Docker image that is generated each time Weeklynet is reset and recreated. -As another option, you can build the specific version of the Octez suite locally. -For instructions, see the Weeklynet page at https://teztnets.com/weeklynet-about. - -To set up an environment and account in a Docker container, follow these steps: - -1. From the [Weeklynet](https://teztnets.com/weeklynet-about) page, find the Docker command to create a container from the correct Docker image, as in this example: - - ```bash - docker run -it --entrypoint=/bin/sh tezos/tezos:master_7f3bfc90_20240116181914 - ``` - - The image tag in this command changes each time the network is reset. - -1. Copy the URL of the public RPC endpoint for Weeklynet, such as `https://rpc.weeklynet-2024-01-17.teztnets.com`. -This endpoint also changes each time the network is reset. - -1. For convenience, you may want to set this endpoint as the value of the `ENDPOINT` environment variable. - -1. In the container, initialize the Octez client with that endpoint, such as this example: - - ```bash - octez-client -E https://rpc.weeklynet-2024-01-17.teztnets.com config init - ``` - -1. Create an account with the command `octez-client gen keys $MY_ACCOUNT`, where `$MY_ACCOUNT` is an alias for your account. - -1. Get the public key hash of the new account by running the command `octez-client show address $MY_ACCOUNT`. - -1. From the [Weeklynet](https://teztnets.com/weeklynet-about) page, open the Weeklynet faucet and send some tez to the account. - -Now you can use this account to deploy Smart Rollups. - -### Install Rust - -To run this tutorial, install Rust by running the following command. -The application in this tutorial uses Rust because of its support for WebAssembly (WASM), the language that Smart Rollups use to communicate. -Rollups can use any language that has WASM compilation support. - -1. Make sure that the `curl` program is installed. -If you are using the Tezos Docker container, run `sudo apk add curl`. - -1. Run this command to install Rust: - - ```bash - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - ``` - -1. Follow the instructions in the Rust installation program. -For example, it may prompt you to run `source "$HOME/.cargo/env"` to configure your current terminal window to run Rust. - -1. Add WASM as a compilation target for Rust by running this command: - - ```bash - rustup target add wasm32-unknown-unknown - ``` - - You can see other ways of installing Rust at https://www.rust-lang.org. - -### Install Clang - -Clang and LLVM are required for compilation to WebAssembly. -Version 11 or later of Clang is required. - -If you are using the Tezos Docker container, run these commands: - -```bash -sudo apk add clang -export CC=clang -``` - -Here are instructions for installing the appropriate tools on different operating systems: - -**MacOS** - -```bash -brew install llvm -export CC="$(brew --prefix llvm)/bin/clang" -``` - -**Ubuntu** - -```bash -sudo apt-get install clang-11 -export CC=clang-11 -``` - -**Fedora** - -```bash -dnf install clang -export CC=clang -``` - -**Arch Linux** - -```bash -pacman -S clang -export CC=clang -``` - -The `export CC` command sets Clang as the default C/C++ compiler. - -After you run these commands, run `$CC --version` to verify that you have version 11 or greater installed. - -Also, ensure that your version of Clang `wasm32` target with by running the command `$CC -print-targets | grep wasm32` and verifying that the results include `wasm32`. - -## Why the DAL? - -The DAL has earned the nickname "Rollup Booster" from its ability to address -the last bottleneck Smart Rollups developers could not overcome without -sacrificing decentralization: block space. Smart Rollups offload -*computation* from layer 1, but the transactions that they process still need to -originate from somewhere. - -By default, that "somewhere" is the layer 1 blocks, yet the size of a Tezos -block is limited to around 500KBytes. In this model, while Smart Rollups do not -compete for layer 1 gas anymore, they still compete for block space. - -{/* Is this info about the reveal data channel needed here? */} -Additionally, a Smart Rollup can fetch data from an additional source called the -reveal data channel, which allows them to retrieve arbitrary data. -The reveal channel is a powerful way to share data, because it allows a Smart Rollup -operator to post hashes instead of full data files on layer 1. But it is a -double-edged sword, because nothing enforces the availability of the data in the -first place. [Solutions exist to address this -challenge](https://research-development.nomadic-labs.com/introducing-data-availability-committees.html), -but they are purely off-chain ones, coming with no guarantee from layer 1. - -The DAL allows third parties to publish data and have bakers attest that the data is available. -When enough bakers have attested that the data is available, Smart Rollups can retrieve the data without the need for additional trusted third-parties. - -## How the DAL works - -In this tutorial, you create a file archive application that allows clients to upload data to the DAL. -You also create a Smart Rollup that listens to the DAL and responds to that data. - -The DAL works like this: - -1. Users post data to a DAL node. -1. The DAL node returns a certificate. -This certificate includes a commitment that the data is available and a proof of the data. -1. Users post the certificate to layer 1 via the Octez client, which is much cheaper than posting the complete data. -1. When the certificate is confirmed in a block, layer 1 splits the data into shards and assigns those shards to bakers, who verify that the data is available. -1. Bakers verify that the data is available and attest that the data is available in their usual block attestations to layer 1. -They have a certain number of blocks to do so, known as the _attestation lag_, and if they don't by the end of this period, the certificate is considered bogus and the related data is dropped. -1. Other DAL nodes get the data from the initial DAL node through the peer-to-peer network. -1. The Smart Rollup node monitors the blocks and when it sees attested DAL data, it connects to a DAL node to request the data. -1. The Smart Rollup node stores the data in its durable storage, addressed by its hash. -Smart Rollups must store the data because it is available on the DAL for only a short time. -1. Users who know the hash of the data can download it from the Smart Rollup node. - -The overall workflow is summarized in the following figure: - - - -There are many steps in the DAL process, but the most complicated parts (storing and sharing data) are handled automatically by the various daemons in the Octez suite. - -:::note -When you install a Smart Rollup, you provide only the installer kernel on layer 1 and the full kernel via the reveal data channel. -Currently, you cannot send the full kernel data over the Data Availability Layer, so this tutorial relies on the reveal data channel to install the kernel as usual. -::: - -When your environment is ready, get started by going to [Part 1: Getting the DAL parameters](./build-files-archive-with-dal/get-dal-params). diff --git a/docs/tutorials/build-files-archive-with-dal/get-dal-params.mdx b/docs/tutorials/build-files-archive-with-dal/get-dal-params.md similarity index 85% rename from docs/tutorials/build-files-archive-with-dal/get-dal-params.mdx rename to docs/tutorials/build-files-archive-with-dal/get-dal-params.md index de213e118..1ba332ea7 100644 --- a/docs/tutorials/build-files-archive-with-dal/get-dal-params.mdx +++ b/docs/tutorials/build-files-archive-with-dal/get-dal-params.md @@ -1,21 +1,21 @@ --- -title: "Part 1: Getting the DAL parameters" +title: "Part 2: Getting the DAL parameters" authors: 'Tezos Core Developers' last_update: - date: 17 January 2024 + date: 9 February 2024 --- -import LucidDiagram from '@site/src/components/LucidDiagram'; - The Data Availability Layer stores information about the available data in layer 1 blocks. Each block has several byte-vectors called _slots_, each with a maximum size. -DAL users can add information about the available data as _pages_ in these slots, as shown in this figure: +DAL users can add information about the available data as a _commitment_ in a slot. +These commitments refer to the data that is stored on the DAL, which stores the data in _pages_ as shown in this diagram: - +![Two example blocks with different DAL slots in use in each](/img/architecture/dal-slots-in-blocks.png) + -The data in a slot is broken into pages to ensure that each piece of data can fit in a single Tezos operation. +The data is broken into pages to ensure that each piece of data can fit in a single Tezos operation. This data must fit in a single operation to allow the Smart Rollup refutation game to work, in which every execution step of the Smart Rollup must be provable to layer 1. -{/* TODO link to Smart Rollup topic for more info on the refutation game */} +For more information about Smart Rollups, see [Smart Rollups](../../architecture/smart-rollups). When clients add data, they must specify which slot to add it to. Note that because the DAL is permissionless, clients may try to add data to the same slot in the same block. @@ -31,7 +31,7 @@ In these steps, you set up a simple Smart Rollup to get the current DAL paramete ## Prerequisites -Before you begin, make sure that you have installed the prerequisites and set up an environment and an account as described in [Implement a file archive with the DAL and a Smart Rollup](../build-files-archive-with-dal). +Before you begin, make sure that you have installed the prerequisites and set up an environment and an account as described in [Part 1: Setting up an environment](./set-up-environment). ## Fetching the DAL parameters in a kernel @@ -143,8 +143,7 @@ These parameters are: ## Setting up a deployment script In later parts of this tutorial, you will update and redeploy the Smart Rollup multiple times. -To simplify the process, you can use this script. -To use it, pass the alias of your account in the Octez client: +To simplify the process, you can use this script: ```bash #!/usr/bin/bash @@ -171,6 +170,13 @@ octez-smart-rollup-node --endpoint ${ENDPOINT} \ --dal-node http://localhost:10732 --log-kernel-debug ``` +To use it, save it in a file with an `sh` extension, such as `deploy_smart_rollup.sh` and give it executable permission. +Then you can run it any tme you update the `lib.rs` or `Cargo.toml` files to deploy a new Smart Rollup by passing your account alias, as in this example: + +```bash +./deploy_smart_rollup.sh $MY_ACCOUNT +``` + If you run this script and see an error that says that the file was not found, update the first line of the script (the shebang) to the path to your shell interpreter. For example, if you are using the Tezos Docker image, the path is `/bin/sh`. diff --git a/docs/tutorials/build-files-archive-with-dal/get-slot-info.mdx b/docs/tutorials/build-files-archive-with-dal/get-slot-info.md similarity index 84% rename from docs/tutorials/build-files-archive-with-dal/get-slot-info.mdx rename to docs/tutorials/build-files-archive-with-dal/get-slot-info.md index ca868b3de..3b516ccbd 100644 --- a/docs/tutorials/build-files-archive-with-dal/get-slot-info.mdx +++ b/docs/tutorials/build-files-archive-with-dal/get-slot-info.md @@ -2,7 +2,7 @@ title: "Part 2: Getting slot information" authors: 'Tezos Core Developers' last_update: - date: 26 January 2024 + date: 7 February 2024 --- When clients send data to the DAL, they must choose which slot to put it in. @@ -33,6 +33,8 @@ octez-dal-node run --endpoint ${ENDPOINT} \ --producer-profiles=0 --data-dir _dal_node ``` +Leave this process running in terminal window. + ## Accessing the slot data from a Smart Rollup Follow these steps to update the Smart Rollup to access information about slot 0: @@ -82,7 +84,7 @@ Follow these steps to update the Smart Rollup to access information about slot 0 let param = host.reveal_dal_parameters(); debug_msg!(host, "{:?}\n", param); - match run(host, ¶m, slot_to_monitor) { + match run(host, ¶m, SLOT_TO_MONITOR) { Ok(()) => debug_msg!(host, "See you in the next level\n"), Err(_) => debug_msg!(host, "Something went wrong for some reasons"), } @@ -112,8 +114,31 @@ Follow these steps to update the Smart Rollup to access information about slot 0 tezos-smart-rollup-host = { version = "0.2.2", features = [ "proto-alpha" ] } ``` +1. Stop the Smart Rollup process. + 1. Run the commands to build and deploy the Smart Rollup and start the node. -You can use the script in [Part 1: Getting the DAL parameters](./get-dal-params) to simplify the process. + + + If you set up the deployment script as described in [Part 2: Getting the DAL parameters](./get-dal-params), you can run `./deploy_smart_rollup.sh $MY_ACCOUNT`. + + If not, run these commands, using your account alias for `MY_ACCOUNT`: + + ```bash + rm -rf _rollup_node + cargo build --release --target wasm32-unknown-unknown + cp target/wasm32-unknown-unknown/release/files_archive.wasm . + + smart-rollup-installer get-reveal-installer -P _rollup_node/wasm_2_0_0 \ + -u files_archive.wasm -o installer.hex + + octez-client --endpoint ${ENDPOINT} \ + originate smart rollup files_archive from "${MY_ACCOUNT}" of kind wasm_2_0_0 \ + of type unit with kernel "$(cat installer.hex)" --burn-cap 2.0 --force + + octez-smart-rollup-node --endpoint ${ENDPOINT} \ + run observer for files_archive with operators --data-dir _rollup_node \ + --dal-node http://localhost:10732 --log-kernel-debug + ``` 1. In another terminal window, view the log with the command `tail -F _rollup_node/kernel.log`. diff --git a/docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.mdx b/docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.md similarity index 68% rename from docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.mdx rename to docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.md index 06d33eb78..79615cbeb 100644 --- a/docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.mdx +++ b/docs/tutorials/build-files-archive-with-dal/publishing-on-the-dal.md @@ -12,6 +12,7 @@ Before trying to run the code yourself, look at [Explorus](https://explorus.io/d ::: The examples in this tutorial use slot 10. +Throughout the rest of this tutorial, replace slot 10 with the number of the slot that you choose. ## Switching slots @@ -38,7 +39,7 @@ For example, this command uses slot 10: ``` 1. Run the commands to build and deploy the Smart Rollup and start the node. -You can use the script in [Part 1: Getting the DAL parameters](./get-dal-params) to simplify the process. +You can use the script in [Part 2: Getting the DAL parameters](./get-dal-params) to simplify the process. ## Publishing messages @@ -63,7 +64,7 @@ The DAL node provides an RPC endpoint for clients to send data to be added to a Note that the value of the message is in double quotes because it must be a valid JSON string, as hinted by the `Content-Type` header. -1. Using the values of the commitment and proof from the previous command, post the certificate to layer 1 with this command: +1. Using the values of the commitment and proof from the previous command, post the certificate to layer 1 with this command, being sure to set the slot number that you are using: ```bash commitment="sh1u3tr3YKPDYUp2wWKCfmV5KZb82FREhv8GtDeR3EJccsBerWGwJYKufsDNH8rk4XqGrXdooZ" @@ -73,20 +74,53 @@ The DAL node provides an RPC endpoint for clients to send data to be added to a with proof "${proof}" ``` + If the Octez client successfully published the commitment, the response to the command shows the slot number and the block (level) that it was published in. + For example, this response shows that the commitment is in level 8455 in slot 10: + + ``` + Data availability slot header publishing: + Slot: slot_index: 13, commitment: sh1u3tr3YKPDYUp2wWKCfmV5KZb82FREhv8GtDeR3EJccsBerWGwJYKufsDNH8rk4XqGrXdooZ + This data availability slot header publishing was successfully applied + id:(published_level: 8455, index: 10), commitment: sh1u3tr3YKPDYUp2wWKCfmV5KZb82FREhv8GtDeR3EJccsBerWGwJYKufsDNH8rk4XqGrXdooZ + Consumed gas: 1331.033 + ``` + After 4 blocks, you should see a message in the kernel log that looks like this: ``` RollupDalParameters { number_of_slots: 32, attestation_lag: 4, slot_size: 65536, page_size: 4096 } - Attested slot at index 10 for level 57293: [72, 101, 108, 108, 111, 44, 32, 119, 111, 114] + Attested slot at index 10 for level 8455: [72, 101, 108, 108, 111, 44, 32, 119, 111, 114] See you in the next level ``` You can verify your message by converting the bytes in the message back to the first 10 characters of the string "Hello, World!" - If you see a message that says "A slot header for this slot was already proposed," another transaction tried to write to that slot in the same block, so you must try again. +## Troubleshooting + +If you don't see the message that the slot is attested and contains your data, try these things: + +- If you see a message that says "A slot header for this slot was already proposed," another transaction tried to write to that slot in the same block, so you must try again. + +- Make sure that the Smart Rollup and the DAL node are both using the slot that you published the commitment to: + + - In the file `lib/src.rs`, the line `const SLOT_TO_MONITOR: u8 = 13;` should use your slot. + - When you run the command to start the DAL node, make sure that the `--producer-profiles` argument is set to your slot: + + ```bash + octez-dal-node run --endpoint ${ENDPOINT} \ + --producer-profiles=10 --data-dir _dal_node + ``` + - When you run the command to publish the commitment to the DAL, make sure that you publish it to your slot: + + ```bash + octez-client --endpoint ${ENDPOINT} \ + publish dal commitment "${commitment}" from ${MY_ACCOUNT} for slot 10 \ + with proof "${proof}" + ``` - If you don't see information about the attested slot, check the page at https://explorus.io/dal. - If that page shows red (unattested) slots, it's possible that the attesters for the network are offline. +- Check the page at https://explorus.io/dal. + If that page shows red (unattested) slots, it's possible that the attesters for the network are offline. + You can also see the level that your commitment was published to in the result of the `octez-client publish dal commitment` command and check its status on https://explorus.io/dal. ## Publishing files diff --git a/docs/tutorials/build-files-archive-with-dal/set-up-environment.md b/docs/tutorials/build-files-archive-with-dal/set-up-environment.md new file mode 100644 index 000000000..9f469160b --- /dev/null +++ b/docs/tutorials/build-files-archive-with-dal/set-up-environment.md @@ -0,0 +1,133 @@ +--- +title: "Part 1: Setting up an environment" +authors: 'Tim McMackin' +last_update: + date: 9 February 2024 +--- + +Because Weeklynet requires a specific version of the Octez suite, you can't use most wallet applications and installations of the Octez suite with it. +Instead, you must set up an environment with a specific version of the Octez suite and use it to create and fund an account. + +:::note Weeklynet resets every week +Weeklynet is reset every Wednesday, which deletes all accounts, smart contracts, and Smart Rollups. +Therefore, you must recreate your environment and account and redeploy your smart Contracts and Smart Rollups after the network resets. +::: + +## Set up a Weeklynet environment and account + +The easiest way to use Weeklynet is to use the Docker image that is generated each time Weeklynet is reset and recreated. +As another option, you can build the specific version of the Octez suite locally. +For instructions, see the Weeklynet page at https://teztnets.com/weeklynet-about. + +To set up an environment and account in a Docker container, follow these steps: + +1. From the [Weeklynet](https://teztnets.com/weeklynet-about) page, find the Docker command to create a container from the correct Docker image, as in this example: + + ```bash + docker run -it --entrypoint=/bin/sh tezos/tezos:master_7f3bfc90_20240116181914 + ``` + + The image tag in this command changes each time the network is reset. + +1. Copy the URL of the public RPC endpoint for Weeklynet, such as `https://rpc.weeklynet-2024-01-17.teztnets.com`. +This endpoint also changes each time the network is reset. + +1. For convenience, you may want to set this endpoint as the value of the `ENDPOINT` environment variable. +The parts of the Octez suite don't use this environment variable directly, but you can save time by using this variable in commands. + +1. In the container, initialize the Octez client with that endpoint, such as this example: + + ```bash + octez-client -E https://rpc.weeklynet-2024-01-17.teztnets.com config init + ``` + + or: + + ```bash + octez-client -E $ENDPOINT config init + ``` + +1. Create an account with the command `octez-client gen keys $MY_ACCOUNT`, where `$MY_ACCOUNT` is an alias for your account. + +1. Get the public key hash of the new account by running the command `octez-client show address $MY_ACCOUNT`. + +1. From the [Weeklynet](https://teztnets.com/weeklynet-about) page, open the Weeklynet faucet and send some tez to the account. +50 tez is enough to get started, and you can always go back to the faucet to get more. + +Now you can use this account to deploy Smart Rollups. + +## Install Rust + +To run this tutorial, install Rust in the environment by running the following command. +The application in this tutorial uses Rust because of its support for WebAssembly (WASM), the language that Smart Rollups use to communicate. +Rollups can use any language that has WASM compilation support. + +1. Make sure that the `curl` program is installed. +If you are using the Tezos Docker container, run `sudo apk add curl`. + +1. Run this command to install Rust: + + ```bash + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + ``` + +1. Follow the instructions in the Rust installation program. +For example, it may prompt you to run `source "$HOME/.cargo/env"` to configure your current terminal window to run Rust. + +1. Add WASM as a compilation target for Rust by running this command: + + ```bash + rustup target add wasm32-unknown-unknown + ``` + + You can see other ways of installing Rust at https://www.rust-lang.org. + +## Install Clang + +Clang and LLVM are required for compilation to WebAssembly. +Version 11 or later of Clang is required. + +If you are using the Tezos Docker container, run these commands: + +```bash +sudo apk add clang +export CC=clang +``` + +Here are instructions for installing the appropriate tools on different operating systems: + +**MacOS** + +```bash +brew install llvm +export CC="$(brew --prefix llvm)/bin/clang" +``` + +**Ubuntu** + +```bash +sudo apt-get install clang-11 +export CC=clang-11 +``` + +**Fedora** + +```bash +dnf install clang +export CC=clang +``` + +**Arch Linux** + +```bash +pacman -S clang +export CC=clang +``` + +The `export CC` command sets Clang as the default C/C++ compiler. + +After you run these commands, run `$CC --version` to verify that you have version 11 or greater installed. + +Also, ensure that your version of Clang `wasm32` target with by running the command `$CC -print-targets | grep wasm32` and verifying that the results include `wasm32`. + +When your environment is ready, continue to [Part 2: Getting the DAL parameters](./get-dal-params). diff --git a/docs/tutorials/build-files-archive-with-dal/using-full-slot.mdx b/docs/tutorials/build-files-archive-with-dal/using-full-slot.md similarity index 100% rename from docs/tutorials/build-files-archive-with-dal/using-full-slot.mdx rename to docs/tutorials/build-files-archive-with-dal/using-full-slot.md diff --git a/sidebars.js b/sidebars.js index 167b03130..a1be58b71 100644 --- a/sidebars.js +++ b/sidebars.js @@ -387,6 +387,7 @@ const sidebars = { id: 'tutorials/build-files-archive-with-dal', }, items: [ + 'tutorials/build-files-archive-with-dal/set-up-environment', 'tutorials/build-files-archive-with-dal/get-dal-params', 'tutorials/build-files-archive-with-dal/get-slot-info', 'tutorials/build-files-archive-with-dal/publishing-on-the-dal', diff --git a/static/img/architecture/dal-slots-in-blocks.png b/static/img/architecture/dal-slots-in-blocks.png new file mode 100644 index 0000000000000000000000000000000000000000..c33031cae0796441b69262c9621902e2ac8777fc GIT binary patch literal 20982 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 z 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 literal 0 HcmV?d00001 diff --git a/static/img/architecture/dal-workflow.png b/static/img/architecture/dal-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..5c15d6c3bbd7e2e4da67213123a63b528e9a1704 GIT binary patch literal 56019 zcmeFZWmr^e+&(&3C~jaI7^DhF35YaE7$5^84bm#zNXn1~vPD9N7^S;IxosN2*benE%y62Cy zTH_{saO{c7y}PJ=A3FLs%c*rP z|Cew^6#DKh?Pp_4lim*_-S_r?4~se8wz18efO`e{rK1zW;ehW!0u z+IErp1%|y}Z22b#I&?}J)45MZso!W9WW17;aq^#-;|a(5n6G8{`S(l+#T`*_dXx~p zxIQ+MKwhhN8u>QtBfHwo=0_n8n;wPHz)ywyo6-My`Pt~m-T&Tn3=24Z@al8tslTZX zUR6pSy7J$L;`ii_9K8DR>o`mq@-x9qb?V?nKrH*ELkF*%UH|`+{eN=K3f?3360l)b zao&a;<`yqSOdU-}1-vzpsmTsivny#wp|rpLXJVZKU<(6AMPHM}r;O4*j7aDgej>ya z)O8A+K>ZcSb+U|7qm9-aNm7>~{$#f`FZy774wZBov73QA-|2!_y_Re&ES85i=sPs< z9`%;EBd9qEX1e96ihKL|CAZJfFU*}!ZYuBF)IcrZr+2QKzmp?7mV!xD!=WgYo{)rSI( zeVcLSUVZ3SB}W(Zb*Yarr0T8dz^82Xs1LQhBVzUhCE8diO|Ry4J7TR4`uQQIu;aF)ZrR4Wmc7KkJ zr0N#f$Z4fDMg*?g^o}i!-=qD>(vG`lMh{bdqvk9MrB3}fM429WS{fQrlk*AJ2DVl; z5!>J=y9MUyJtU5q2@We~m0&3TWlQ}G1{IG&M=N|ZCP+A*m}iT|>o+7HE_kZ`6WytQ zCA{Q_FT>!XvxJDOZOXBufwsTWn(x=q!zIN3yF?TvsDX0-eKDQoqFiD@4_rtTjx_NS zF_5WolPg?Ivsw`$>k9I&W|(NQTyUR-(Ho?G=FK6&?TyYIMg>T{M%GPyW_08Zd}DZG zq1*NslbRjbGaK_KU5VevwqB}Y!+lhI^qj>P6n^T%!zjNz&+^ zaSq2t8OI&tGf$43?^5Sod=%|rxvJYdv^?0*?M|5Qzjf|yx*}08Gs8E?rF2z2%s|vm z$7XFVucXFQ-0X;sDxsrgBAuNptdiOEBKhN$IhJ;e93+v!VF z1^f%G*tB;hUkKy*YJuGiIo|nMQ{R4uHhGcoD|%1X70YaglcB^?r)^=!CRj{v*(C4ftAh)+Ys`_9$r;fazd3bx8sXIS~ z%tN_og5)vB+B(>o%>L1Z8s%(=_;TgNx8GB$`V$9zU9GIAlbL<@1`Q@Xo6pWt zU?>Q}h{gAvHm!!tM zaGm;^Gry;o$5R7^-Wr9C!)HT$c?N$5d{WQhH`vaeHL#G^E}!b_ehTB8Wu8*4-RylW zfm?lQv*6uN+{IeEJK_y(oVB80K}6=NZ072NHl|IJx|V&)*0Q&;9N|r@ilG*Fgfj7a zGI}sr%v`VatiJS}?qEN~U-!Kgztp{GlZmkLyg%61JuRN#{;;J-N=WK26iWD0@I@5L zvE@n8d`vDz1uHxDx0QWGBF~Mzr+aOwy*oaBak736Wf_w~gCoO!8A_V1^I-K@v2UtmBvC$!iNhs1DoHzDWN$p z2b5$$AY*K1X_0=oVuT*AkK}+`vpYiHB}IKSkkP$<-MUmGbK^sd@{WgAAZc}pHtN&d zTbgjP^_@6-xe??nzPn?#p$%Sf9Iaa~Rh|4kt<^S=kdY)zCMBuo!?1+8WHOkj{}Lq0 z2sjYWv!Sso7yP_K3m2RvLRM!=r85Y#!@7$b+fQSJmoGv>U}SGd!}2`Uks-t6nv=g= zU1ZRmB~zyGt4uRJaW>uaa45_JdV~|Lv5}bV99R{V*dPf0$tWse1S_nqV)u5#uO4!S z-hs7c=c)wqJeXb@Nx5|^nbChk0?7gA-YO)7%D655Fbwf8mCn4V^BpFWdc9#7#@ty? zvSANdnCQ}@pOn0V-E74rw$3=m5smbzOGLT3wNsA;*(t4EO3k?ZjH@A?tnp9tN4 z-Z|bN;91aJAB^KrWfV;|ia+C2*Pc~kg8J*;=Ht9ymzb zsHq0oM&B8?`N8r5CT~K77jJ6-wmoPYJyD|K3GY7)>`%b#deEoaxrDvi z{@LDbw8bx>Zyln!;I30xGPKa&*ql|8(#vHvd(&xj??HN@Rxia99I2ooyyRTAxkB~H z?~+p1zwfCSmrEZ`h1J3jcxSmvo6dSg(mpOAxTU8}XHKCx*}p&zupoc2^yyB+zE|p^ zIMT83pxdOQt!hnswQB;VUv&22Js~H{tX^G4p+wGZLJ9g=Rg#GcX8~!)-L!DHYiV+< zh%4WSK0c-eLZ@KEWEv%iK5~&>>x^i2He3?t{N-YgL?&M-BeRLXPvn@&G&P-P#cQ>M zyioG$K)F_xL;9kOuJdkQXHj>Qt6NX~9Z6o~W_?^92%e;`+m7pAc9z&&z$NM|dRrGg zbZaMy+l*%Nm3onfn@G;2dKqjQB*qJ6l7~6Kz&nk1pH#W(Fk~6`mywQog@N_n`_Fn; z{m9Mbt})Ttr>!NJP&i*F{}n%6FSE{531-aWg?7b=9}smyT_s~L>kY#gF#nci(b(l& z>&fOea(*CKvp4p9Fh^^ruJw1-hnhd%U90yY{4+RuzBb{^4K@CtAqZ|DV(VN9fhIG} z!IUucrQ$+=dzV$I>Qs@B%-X-~qB~VICokq$KyoZr)0;08pSld;8)l4Sfy85-KI-== zewYLq-xKKq0+?JRn8%95Rj~s_?%rl(e_7+lyX<>lfX0WOH{)gWmp8zOt#{4px(BIZ zq$&Dlwi;7KyNpNgo|N^e>5JiI6uJ_1Uk-`vzUy;V)f>Nxnl_7zFW=K~Uy+VkJsm#uHD$vSXr9WtUgs#f-Z~rI+N8qz-Pt&7}k$ccYpfhey$>YYH)#J`PJ<8 zQ?gU4bpuuLg+iSjl64)Ue^;eQC03Dma8mtkBDMu5@G=Ha`vy|utK&SKx~6!;ClhNL zCdyxE_NU!s@=kCy9-Oh)UH0+ldasxKd^mAKGMD6o%i*jZ<k zP3(5qr+3K=3F8$GTsT>|En$TwA<_JjO^UZT(WS~i=w5p8R>SptLsm$Kag&%L9TiHQ6^T-`+EA>_b~iK0_D13}76jj$g*sb9 zSllzP9aCT6{5SrKyy7nbRWHYw1k=+Fo1sXFb?V8VQfmi$)Aipq%22Ez1*>($@^m_{ zkXPz@*qq&VCZGG_;R+ru&xW1d^5Ox!X@0&-;PtoPpIp;2DbL8-?$&-75m7R;&SmOn zDUvHNJ~1kZ$w`qq355n;&M@90%5iJ=_iMF~jVTF!Bgraq=!W0+at2MeH=NZ5&K~7? z%@ny8IFk~u9Ojpi{1$4{4w>(mV)OpSZ%s^_7DEG(Z@N}yRm*ZBLN}k$b zGj58jLM|P6_v02)QbY07`e$}x#ooiHnhsV6DQknf&f544-1RNJ{D95jpWI^4`wv^x z5w8`^LG#*FPT&bB_MgtL&!!`d6r@!clD17eRCYSKU46>p-U<7AhdTZJpSOE4nT}QV zZ9J$k%c-9#`flB`bkkA!n|WZg?I&MZAA?dcg6nIwbTVsH!89hYtS>=saBwx|@6^Pe zuYwAU<76Y2B%V_dg9SQ<$k|Ta?Scf=PMY3kj??ODV?2FRiOc_H_V%hEwwZdByVSM%7uR~i8+vz|vZus!QkH;2d;KX(2%MQ2uPREgka`gF9#kCa1 zd2@#K4X283reFk#Upluaopfh7w~kr5!)Mos+5-q?~9xYW3ozAh=7p z1()4ce|Y?UD>Qn+(EkKrGI9crXVD_j2G@dBw;qk-%y`X>SbL~p1d?A?YRrO1!;j(L zz|jPOj1MsF@|vwm35UI?%YJ;V;EdYLzQM-~88j<$ay&GO&@?5|wA6eUCI3?K09}Hf zX82Fmo2Fsk0=k~rGps`C=kQsVGxb_)R9KYiAI`a|T117CU#|SN^dC}%dL(f0IdrlA zZ$n%1b$V+rRfEER<&0<;&6+JMc(BOEEUst%pf-$ZeicSLP~vpc>(+_|<=3-7_-m*0 zw}2^|Y>f8|n>l~=yYAyCbu!~eV+3z=mZf9s9Q;7t$cfH1d8-v0?O^A&t2cesrfWBg zW}0ctsj_JjQ?V=U!BbI(*Qv8J!WW&nH;`*5A4T3SUF+@f`#RU(h<|aj@X5U*F?)1R zfZd(Bg&D6~1y5yf2n)Lt26&DhITA;zLZJo^;J*M&?ubU-M?o1QK72K~oQKhmqJ-{) zbCy0UfXV z2Fqkwl|}Jprd4Uv^Sh6PO<+3hY6bWf7NaLue3t*p8S<-Y znoCd~-kC02#YuOMN)&1hiZrmPCHB4F{fZ$kS1_=#3C1pyvVA;ijDP?BZBXNpUtC;# zmW{1&Vq!Y+mZM`q{SJYzj7bBD0lcK zX8L$Aw!1!6i2l`LY@}*+^8RsjU);6^BdnlMAAY8av@jlGj_xayc^Ntk6DPcdOIv#R z5t&Af{$E+Jw4zpikuYP5xx)omj#-m9a%6%4X)9-Y=ik_Ar}fUcLc-9e#al7`=zg!#};7YS)9Cam_WR8W`d+g?d#f!@%Jd?XpA58D!%6NwL0PU&u`bL8V zVP%-$OuS6NnZV}3j@+s#qrIG!nvG-^GFWdeZjTbe(dx1L3G9Xwt(9@VSB5mf9^09b zm4(Gee*Bo7mBropQTU$2c)5;`Pwj6LoPcqu^JDb##;?x)0II{b`%LsG$A3-%a)8S6 z3}*R`*-Y&JIh_3VSkNou9y`f9F?}=lZH_`S>Y!NsdW)$bEoywTtwWrl!8`&n24A)5 ze6SH-n>jJ`jjgB0RI#O)W!_2O@w5D1emYU4V&7pg1=ZM8!Mzd%l>}4HRlYoo6|s>q zbkhs7BNy_w?V#OLMdR$622p~NL6s_+uVP`l#S0F(EkiEMVN#WoS$&G;oY7q}v?Km1 zS)JcVt8^htW*(wzSm-t=vyBpS7&Ct*^ZomG+wt=JatFR_t3PWqW91I9iXj&+*Gv}Z znfmH<#)=O|^Bb1h4)W%kHkcrPHtZ1#Pwv!FqdadT0WbiA@0{CkOIfS@CA$;Ms4uXa z^e36}T17LkzkbO|`B2P@2r)BERAx}-lWBw8k%}DgyoD|e&d^V})i~M7!|r$XPuZH= zaO{T}i-`HW;NT&(ByZF=(94--Tbgu+_9|fq3cFFX%i>1UmK=K3IpZ^_RZ<$yCbCp{ zPYgIVJhiX##lv-3DdWPn16e;=Wn^STF`L%tJ{UD`{&KkgZt9d5o+aO)tW9Fbwv6}s zb@h)QKMM3iWX6Z_SRzZO*GEcY)M~e_ell7GasKq}XJP`=168W+<%liU|FO(>Z17KW zqx|Fs|p?qo1Bg|w8*~-MzABsuHRW3gENfwnQhLW>VQ$`HS#mKobjhP8Z>TNvGZiW)=m3l*zOHL2Kn&Z?`&iBW{_37MnLysf z?`OQ!A{{R{r^@d7q)+MBsjudlWWg*F`=;@UqO}VnLlp+1B2{_lz;WTNjH}ij zH}x01M;YJH0KZvcYq0Cr0k%8)9-jSF!4? zqi?frKp06?4DI_p+dP=Aa(@=o`5Jr%0pfOS!KIvZEIaChcuJon9l zo}%Y-Q*0aZl^hrA+-<*#k2hd9$s#4e&oIw&OcSXH!&U)H3LbS0mQ~33U4PwMh(E8Z z|U5> zwv7%XZijAX1QE>O;f+@+=+KMCE(8Bnu34swT>xt(pQfo#iSC)i3#q5hP!sk>Bjz9pv}dv7TQbR3YD0^w_1d#L z3E^>8MzisQCqu{L*!^mu$A(Nb4=Hj|&bxTXpIBw$yUtHbSCwp3=f_fQO&rr{imWv; zKD=3||8}6NuHjclcps&Ni;1-V?`)x-zTQt6jV5<4Ss_K_+THiMTt}PrV>y;PMhYNp zAxW&>!hnprX-zHud$MtNYToQ|=1`WsS4+Y@MQA%Xx)MWpPA_3S3=9Tfy?rn}x35 zv=q9Vs`67bG#Hls1*TsH6Yh_!2iA`f)AuCtJZ9Ao6PClzu8<@fM4UuYd@yV^Xr|9W|&|o=|L>xSY_I zP?18;B_wpud1+U4sR$I!7q<(@*?sOWcR1Spy}zIH`XSW7e@y_a{Qr>^ok!{+^}}Sk zIqQwBLie>6k|pk6vAqG|hm(}*)=UMv5)~>`(w8gH*rKwI1$|BaxQ{Uy_srz|7JxJ;fa)r8=KO+LdljL0kVRKi{3{sA9|+ zb));IQk~vUnxq|lJ2e<7*>RL+ZtKua9b+BBXO zhRn`8(tXxunj}d>vt;JM^Uj>Oh4r^Go!sxHcKi8Fqoh5XLau4d0hAOCd`?Tl%R~T( zJ{X?{NE4y3P}-M$ovLH>^Y8QL-jVWLNy}ItYM~M*K*|%Xi8FBju}0-E9+eVg8XU=? z3N5xHi_hCp3o6va0Z}Q>@L<$mds-GK*u&|Y^e2XJCt3+3=d9y^?dGqiAVynUcT@?YBR>7MO;&PziD&`W#oKt`|>RA0Inkd z*w(KlQ6Tl?5C10<7+WCYJoyAO2lX%Mxm0X zwy!$8eXYu3<1<-RS9ok|p)jC;iZE1_d+prYQO+U8?xqBUCv`sjUmW&)v2$$xIXUx! z>1w-VQrQWn(xr5UVvK&-b=&&dSjZ@&nP$BHW?Z&Z$;=$H^*( zn4JX+8N7Q?rya}mt|-8!rIwo^bg+D#e1t8mvD7twGu--mSmgN1Y`-$gSVhEOjb-Qu zdi)%pj9CQ-5BDdvsOCbI5pFc&h}_+T1XfGAU`8ABB5p8epbewd-VPm@O#Hzlst4uo z&1-RTT-Dj}6VBDSbBuQ2)xLO!!Qe7J#{03~d# z-Gu}IGP@3@obVidrfH$+@tx2@asP-s)z}JaL*<+&Pi7-4pGNG->|2!m&h{w{0Y`ZC zjYG7=z`fB@>%M(l#)JA?lh<;vIvxk>pTufCU7p`wyaHa+YbQv#bHYxS561jp#6I|f zw1&;a8eW-ZZ?-)>tjNw#>{&4mZEUH{#<>zFT0pp|4i=91Au}_`#BWCb=oale4jDPyXuXzXojqs(!|$!lnXdcvI&CouT`{hkr~TLrb7Qg^U!jh6idliqF1 zC3Ym%_)nuhSMhxQa;C(UQRB`$T?-35H=lI#k|8Yo)dMw(HOipe{&8)A^c=3rbGp>vj-_?QHXzsds?2nZ%8aGE_U7g z+8QCSI!Z%R#?PsP6><4S+qBg?!(R4mA^6y29_CBX{?H5h{pI3Lg2f>J@O0W9)i6RV zl&Bnmvt2^Mmi48)sVN4>@K8f`G!4^f!s$c$b#)=?HvPZ&8PAEeEE#6Gmsl!RPvG*C z)N2~XbN9z%QUIgt=L=WN1zO1xcLEi#aIlz+$MM|Bjm#Q(jKv34>9Ei-8ySuh%f6 zQ1=xO>+eDN)UTXGYYOKMravaWP*CBFx-YoMcG_sB$nM`^JFu{Shw=vR^k;tX2UC)1(K>*y?}>A z$dCE3e>ALQ_KiKKlJ%w^sy{9v{8Mx$_oj#IzlBM z5@_K9S`Q5E|2~jZY6yD)CxTh%SY$Bwu>(z+W$=1=+FxCNRC1lP5!I0Bl-@kHtgvIM zTMofb3G3rykbQ^jp|f>LDh^k;88W&4+a{flLixF{pkd(~w6R_$h!1!WzoUU2$h8tL zvmd=3dM%o_TM(@pV^knJyeYMac;VzN#MU0YNWB-%^JM8Rx-WCzI6HR#=Fl9)Qa5*x zbvvNopn2ck zsEPy@GXF8F+2{qg;jLuWXKoqb=DZX8Ww^b^Td7c^4$2=~xA=ENM)t?SoCVSY-H59= zyDur}ZEan>a;c{MT)8+Va=OLRjmFFPJ?v(a;aem&Emid*_cTG>cHLU1S9j=D6La<`FWfgro+8n&JUz{JH_axP^26ASqqo+dUt8BB42EXi_v)$b zXiC-A9CHtN77}(APm4vL%tvPAprCnlqoFH)bNysDW3q~~x@q9l-vwvHV(IX6xuC;B z_o;0BQo&wP46@ttjR>U#{l#h>vg2hl<->2NU2JMU!HC8}WII>?yI5$>uI0yb%u1pl zj!DNHWL>}e7=Wt2Ao(&wOg5i^{G}#F!s0bdP9y}0;lLxUj)FJ3G%)5GkWmR9M4cE? zVc?Fe`0!FQ@PawduYzx)uGX+WiBxe)R6O^#_hrlIaI>zu_5E2IHp$wFy&3i(6)c?2 zyaIR4uz}qH??euFUZ5Umd7`oZ?uU!J{aCGnCOYZoUqMENLbtJ{Vvk>PwD$LZ&D!`V zDVQ@dbA77<<86a@k%V6!G8@gu!Ld*g?ln6(F5^;U50`~SEp2V{TF3FG%!$3u82!-U zqk)0zo0~o5kps%4)xi?ODhIi^n>Mv3xKBkBWaelw&n_q0IJr&cCMfo@K zB8>O8Z^1(PgLoK;ZD3s|dNgXoGkWZ&OCaXG^b3s;xs0rDZJ)o5(1`5k&SIY3y|tdOf?|be{d8t z@A-_SR76fUq&TFLPqTEj3zGZ{ngo37EOPA|h?kVxN76alb$R*C^s0OlpQV`}={pgt z%B7ZYgZ!Hc6;N`J5wp0Eh>zVQFr6$lA5|V*Rw!mTYuj2JrPzH5FN+m%b4JTYzWb0y z&FZTOuIw%$Xi9%`$GnPjB^~>Bo8&s)sh_nMvLCO9g!Ym%HwI5J{iTiJOi}<`NK-nZp7NbJZ zG9N@?!kf!4scrEqGQn>`k@J*3TcE*_*ukM%oRZ&hxUUZBJoi0Z3Vu1RsmUPZk@9;g z@8f$0u@t|xJ)SXK$+We$u}7l5F#BMQl_#1rv?vuXn~Dr>>f(EFuj^2`gizwy-!L)) zx0JrBI{a(EX>RS; ziL7jXhy!Fy84=&$y|V*))60}ZkF@2;iVB>RyM5v3dMZU{EzCa7^qFp}p%&suG&D5s zs;jKkJ2`yr#!ByitsX5=;yvLTea*)h4%zgF!+h_>fIVyOzk5U^jOH8dCqvPEw#4O4 zpRkABMzlGk37#izmB{tLH*{u#?TAsrXEFZ9A$|L}%k7-!B>i|Uiq8F+!<}?dg-#7P zS6jj|>4PsB6>#i8Sp4~ju9IMA7$&ce6wmik=jVTgigx~@Nby77$%f)ZJ@@+xaiO_E zfwUkvBd}X>m+qF3HYe+4cD}OhC7JqDbg&`L^S2RA#Oel#6V2i)^?||-Jn?@zWOe2L z(Z7X@eOsvU^)^zZk^GwcR^zK25L9s!6az7y&CFLNOA1>~bf}Ek}{lty_<}O*y`3^O!$Pcx@YZw1GPO~nL#3BMcq~|#&D{4BW z%H$E@1YUEHH5f}lpU3Msn`uyQnI2;@q+LN*ANc8b*-B=je_!MiimlD$kh=;V#4Limkz1hL7o;(d2=-YGe5APh0GZd z^i^lheF+4G&ruSMrgLEuFRqFjl~fNEvvU_5&grDuOBQ0Yff{af4&`VyJH%0@U zp;KQ7d8O9^=M`go?#DSX-!cWm`mtmi|Bp{Rc!-Tmt9AOzzVZD*1uGLeo>QB8#OfSe z{b-TGxJ%eaU#2WGpFk)^{PC=1aX8+qqzfRxcXyu36 zx;oID-jU@uh&5KOdnDODpobSp?n{0Lw_4J!DD$M~;h%kWXgA?b)y>8|(^RlXH-e#~ z%EHAZtM3Q+RTu3$-%iH-3X0(B6hMpv&|&#d%Jk4#+Uk0_nZE-t3r%}p-S0G9cVCnNZPF%p%dcq+MR-F(0?KhQ|A`Kcxk| zeh|{;W@a>&c|t(!9L6f6n`-uhl@ZACret*+y={~9JYPwWBL7@yB#r z$r7^UpvbD}$tVb^op0=HOHIFxyn&FPGpZ4;vnX{hoHh5ikTbp71HawcFp?vIGZ&{5 zE9TVu>C-LC>9FzfhW#XtR-`9@0?}F>S>Q9W3WeT7oc04tRh;ZKjjvw~NnGOP<<-2M zvRJ&3-mpd57#wIl<7TYXqfmuJ!nxUgLWw#uTKQha2AvbH5?VLkTz2HU2q%=U&xssjOiW)PfQqnZ*FdPtS}u| zY-(=i6BR9MY93wofH(QX#YrhcCx1*_e{mee7|_@l5u88{f%+0D8S@ir-hWSd{P<<5 zD~a{{w3h&`1izu&U6A%%gwt1sWH~zuN_VzPQuv?FUL`K~8)|V)>sXkk=)0O| zLyHjdUfsj{{S7 zXvj1opZxzRupS!#t#&Efg9Pn~m}f|@`^gE#XI)(d_mpo`rMWmx5?p|XttDo7TAQxFHQsxl3T=SS zPS+$<+%3fkN-)*oO$}414?n{L6t_{yP-g$SOh~3 zU)=ADh}!Y52_=OyFl&9WiLEwqPajPelkg0yieKlb_ghF!b~~-{>(}mWGELIK zh8HUxs5Kl_YdNyJMeDj2n4$R_IuqXU4q%O|yA48^AH5%gDSt|o52y4&EzUIaPWUgT zb7D%+2C7SYu0B2S50t*8_Psu-&mF=YjYYj3OZRY5ospsgjDWx)C>qFAr@ehSuR0Bs z$C<~Z9X{Ve7|eCw{qq#T(VLW_sSY2r9xr#m5C`?TZO*>ez9E&dIe!kQ#kqEz-ArR3 zqo{49ZoYxV5vBA|docjuH(!L_0CbnZq~Zqfl2TslKlQ_lM(wfMbAE#|dJ1v<)5_F# zUY0W% zx6Xv_wHrf6qybfxD{G+eP5Vzz^9ILNpg72fe#HK$)xLJ`c&_^guB@&W&NhcH!a@~9Ek46w2npUR zy^%axZZH-3h811U3M(rgn)(u>nnEt7GC5Y>x_tRE!pMiRN@r(h)BN?9Ht@^sl7|l; zX1H)+zVB@_P=Y{IIyF$r|DBx;B?$`)hi-&l6#kW0=MPK;ackU(kAvfz#IM}KdQC8x zc0c6M*Ys=!aPluBtIHMB9;2CXO`t^>C0)`SD`$=&y#C;dr+LLV@^yr&LuMaN@4mCS z;6k4J^@~tXUeQug`Uh-?;q>Vg@=8tjGqI|wDw-1~-fN$piUNg@m9X;k$!cq|-PLopp?i_}HHfsF4RM)SMK$eSg&|DgxRwzg|`n)bnMPKA!jxU}-1; zb2xZhehF94l}i)hXo!zmj??wN7`W3+S=MmLq}IY z%zorK<(0|7!?QqQkg@8FNvCG>QOA~A_g+C*`jh7cw4Xhzgy|V9u~I|#WvDjzb8ASQ zRaQ|EHd&ph(!!oSyGbS_(aY_AN=ZrC{B}l-`^F7TIDfd@-m`SkjEoH1jt@cxmCnf- z_dlj6ygi4;vihvu>WmR>9}yH5)`AN}HZ(LK_PSKzJaZej^Q$v96UY{DRkOtBhpBZJ zy+Rp9mEpL7wVAKP#*>29{TZr^!j|`|D8ITB3&B8Ek@s9s5*y1wt!5SYQjx@cznVA_Q?o*Wo0c8wHulTKY9<`W><;Nwu`9k zfD$lz&=>UmY>mkE(FNC0?03eC9zJyF=i*{+;K}ohWXO%gl}W?;`uZlKMWJE-2 zncXm?dgX+Kg!PS$2oCr8o-bL$;9*y;+@7p<7tXlg0e6I~8kSR~P4)3%b=QzfKm+AO zF556biqy1*&I;?7cu1E8;BNpxl?v-N>A&Y0T|r|!x5?Ke=}?YIuwaH2(f5TNr)sN; zDBs?kVR&GXL%X-PhfPcL-y6N~`wSx^p*URl!_zPkm#xmHVI8BTHW5W*V=&91vqOcZ zg^=!QHm5I2xn;Fi#j|6T!*BBPOG=KWALFtL?P5H1=+NeTYIqwc7{tZ(z$u%!Gvnfz z(G8@l>m-tAHli88{?zo=?+VCWvQDLAk*f4rURcPMUa7o8ns5!*xMyjZ@zepoulvom z3<*yf;OI~7ZEbU48B!p44L4OVIeQ~FF75(l2sX#aq`vxf5Uno2tN`p>@4`hFsc^+L z{A4&=ohPyR{k1A#DnA#vBdGhJ4{H^y>Ds%kqmTQf5nI856c`uq_Oty4|I>HM?Q2W> za-l?+p?*Yis^5}nhrrP?b0T37akyU{AI(B!i^i9$A?S!&c3f~6ElwX|Qj|V?K}}69 zUdmm$Z?*27@<}>6u`Nn};vNUOt*c8H47k)|*#PmWI&a+l=N_-cn#0+KL&c}&T@s3) zE4v?|rpAr`$`j(}S4A{DAaG*!`}5es(lUYQ( z*#pj(*_K4}c^gXNfMbt_;?5h_KNwB0v|k)djTJh|cL41D`X-9^RmIy{z86l^_%`p% zaQ2+7X_wzNd7BqXEd>PytlvJT6ckpRjuUCU6;o*=;d1>aV)MsT3tt{0&xcl=vjHfL z(RWeR7HA5Om8nz*p6nQr$4Fr_FLb0I+3&x2@Xx@-l38@rx( z6UHq0Z?UPO;_Fj%{05~hA9%NZMyMr-{(1BEZ9f?BV6B%cE@}?)PuKA)Nzp)0$sax= z#<3YUwXwFQ4%IM`pi#$T3f_Zs7rsTw9DhFgt(rq$ec#k+GzS>5kc2y38!`Z+can#1 z^P5!P2Kd{3JS)~1LmyS=xL}YsWfF5<=H64gA;uZaN7E=IhX7)o+_qzfG5uVHaBo2D z0F&}Nbo~V)jWpX( zn&8mTC=MCofL4=h$*BFSJM#QM6bBqjs#Z&*TdsPp#F13b<+I;KH@Luoj0 zxBiOCw|T>mQ};_!S#viT(@D8my8d$0G`KQ3LkivnCg9Vr~Km@mKHfk%>QE((_)v{KX>pqpSIQ;m_c4%F4lBbFrS3PLr965kjoGoVUhDQx_I#-2rSeg@R;}#bwHlh z0mVuIoS&9W*2r$SVDR(v!=g{V9Y^YsC_NKNJC-hdt$FKdWAEiMM5v*urBw!h;wW*? z^`Q@FY;4@z=$2#ZR^vSpX5vqAXJ0~eAiwMAps0e7r(0l@{qEi0ERrtY=0+-}{R|-( zc6-TbeU9%<1C%r=dctetq5Jwm8bId@i~NQbe2)mT-vL@i{%{984q@MLpBRaz5HFG3 z2>BivDQVI(@faO*R!7Huna!R%iu;!j+K(({CTSc4B(Kk(<&PdaMtIHSsP5)gifB?= zT9i5yWX3H_@u$}!xYUL|2$_jMF$KajWwWLbp+me2q+UgcU!FD-M%7&1Kfb)o^ixVStp;904$bL0l>j=;gxUWpKE)_G@zIbul zK?SV?#FT%yPmS9-ABD;AqpynG3(FxW@co7&)i~>a=Wg$ zEfF4J9#;a{{=|tBZ7nV8-3c;?e}shmH8(d`bw58>X+f&meK7+%A8uJ$fIVfKl&;}r z!RiI38wLin;i!w`=z`8|qd4|jWZ<7ZT}OrmUUDOWSQWx}cug9}H&KvQeh3f9+T#Y@ zIih%P+e}Ug0gl#VAuktwHat6_s_#|{~R3WxZ3h272`7%F$Q~B+P4U= zZ#UaFi@#gZx=^`TO$i!6qbevg7!F^`n<V?J=KR zVY}I5sN-C$4qHkG?lJxAHm_9Bu3ZxR@Y=cU(o1*cm_UjH{7Y6DJu_fmL++PvAq0W9 z)m`P&ptgxiRp}4_Hu*Zx2*Usi@p4}isX3d}#l!t$|Gax3@VmgCxRVxt6;A@Zi6~m8 zytW*CVYBc1Gps{{@iofWYdAcwyxyAF)ak* zEqC`732-w&vlqz|MuBvd!0x!Kv#Yeq#q{0qup!<{RL07hk^+GyvAeclyyR@XzxQ&i zp4}LW@VfwTh?2{nzs&%0-@y=@^Cal&pZ&i&HX8Em_3QFM+4@(Rny&F(^Gn>d=q}PG8n(!=zH(Hk5Pz{090o|ADbPeI3L7mht7d>+h7>uaF z_MGs4Wwju+bqF*s`xZTpxLwHdaG4^*L zO7ZVxP%7+v0CCw$2=6B0qX0aO)W1hGM(>c)>hsemgv=@!mZG1sP zB2LG|i*AY(`OLBjJA?aIKIDKM+Co7}Bu3{K_u}SLxIH9bP%0(AYP0s6{4!wEiSEJk zCjt#zMlB9RNW^motzvCmtx-MbCy+aB8iu9fm2y=C$n-sj!xYxO*0a$vcYOl54hxI% z$jZlBRc2J4t`Kv7PJc1Y_SPi+id89FB{P?(xG?Do=E5>%1!`=}O%5#XsvQUM2|^^i z<4Ctxi%4@(>BBAG(#G)20H?FQwFTtN4_n%Wa6ldbSCYpfD>Y?evc7I>yOn=9V_`JC z2IH|%Abl?^3N|>=s0}4*+_mzPO7%{t)5Dg65~QCX@qtvwk^NGQY|Hl5WfO&pM5IRV zIA|}5s6&4XL|hwzLgpfn>3vp<6HB;|avY(VICQ*iLxh=OUHd*nM@JXs8YQxSW}gr*^Q<&TELPEiaJG%ukEz4^IMo}{1QvKOGz7=3>W zf%?#9j%*h8q;HJFlrU5~lLAq0e<3lU9rJ14#v1D}ie z^PAf@7MmefpU)tY5-wn;{L(S0V5EdgOT{uTl7qNBZrH6TGqX-*Z;Y@%?>NeS+vHc6 zgbx9C51JHfP{R1K#>ftSV7wX?!VED;6%370&MOA=e@M|^X5VXc%8bhvNE+Y|GC*;F zh_Rp*M4a?Pl!}P^`Vorojwnf;t+I7{lQc|wqu3Nc2Y1Kw} zA?)U^t6Fx_Cv(EX_Go@YOCqaZH!-){4%PK5bvgqlX?o`GFD$h?O@>n2?L4af zv#k2paDdIy_JTd~K#I@3|89nYduO!gl(euN2#r@+bCrW~P@{bkn>8# ztqKvoOzU~9je5K6YWjV@(=15GzrQ3?(ta3~WOAUJm9KjY`{7r&ma{i0@PBw( zz@!Q1F;qbHf0YMOac9bnGDGj5wMmiNouOBrHmuNl1FBnr|M~WBlU?c^cybh^M0 zgWkW{J{*WF=@2RsMK}sH_HxIV`w+#$a`{ONJl8^WpygnXT>zm)Iy!TYit_W%+_)aSi%v1$63f^Jqefqo?QVN>|NGp~ zExS1#6m&^+2loP;-X$wMRUJdsz@MF%9#-4IAJl0;4i(Bx@}dc+d-O>i6n}wLN#=%m3hqf6yG^F9 zLUWE5iOzOtYz1?D?2?*$&EG!l<+N|%9epp`sivGQy)vCMh3%YZIR;AF(k5kR z&%cTwy&1!MI0I&6tYI;UZbdR}>TpeNeuG+|)_A#-5{`p-aY7}N#($t_HJoYHVr7I2 z-8St%U?GP(f9zoOPy?>9c&5u%j{h^~D&K3-Ds7?HK&ZfqOo?|Y*Swso+%<7q z{BKXo`5-g7%KN5<4L8xU_4y*pQEvpkbi>ROCrnK}B>h~Cis6wSP8ONL`N3gP9NT}& z`)X}YhEg~#KG!qpI%Otz=*o{qz=6PO0x$({hUcnhy43Sc6VfV={e_v`994U*Ed7ZKeA77}{)>#+plOW~rUe*Mf5{?^=edSf8o5 zWTJ^~5q{FB{(lkoosD70g@}L_okRppq2?1SA*$8ze}Stdc=;&KM9C5NQcY zmYiEclbR$-PLgv_a+VBDnrDOW%=csF$4pJtN7b#mh4krj&fZU6Yi+Hm1xa+{Ki2q- zC0k@q?$nXsC;JNf@KoX){O<{KV;Av8gPQ4rIX{V`Xb}s_A3h{8q1t~LH%K~n3!*x> zFF)p>fJ{;>2W zy+kF(i-G|<(G17sq_K4-#*NJntd9T2+s)d0$7BKhRlB@4u1bgy z)Zculv$Gav9s6d{`n^(@SYcsHNgseb<6QtGTGt&C`JOa-?g{n^Y$TF4-BVRuJthBX z!J7`sUJ{GngkX_0SS^N8AgU5fi{G0~D>7qb(n3ss+YD{K?m z`)|VDIRcz&yPr3|$Wrb+`sIFQ@wl&YBWeFYX~*#b!CQA!cb?R_11uD|dv6 zcIhiL=0z?^Oe_K-;_yAo@F!A_KF1Xd>nMkKHkv#w*2FHC2Bw)r;FhI~1%${a?zum& zk)t;1+T%(<915?new$Ftjag#QPAdv$e5diR&M$YZe*~w;TwVv6%4^ZWX2mMC)J=GS zZd5LRrgjD)vgEE%X?Lu0bEdOlhfCq*9PdgIca5NN(~cgE?e8z~@bDJmoIy;*f4W;Q z3qOhewJ+xftu!@L3t{~4)5vqp?erN@M2>CKipO-zSP41{bITvGZ9h|<@{~9Dw}K5(}EGuq5{RS ztSTk@oop>KvDrO{Dsn6Tf9MeYMa{z2;)1QkdTaG1Q!=~;OpBbj=%mswW8`9Z7Yh4k z&Kzj__kX--{6SibpbgQNDS1KP&(BPzh_f}GKBS{|<(U6=G}WBD7IwMZ5WIrDd$we1 zjIN!G5jirHY=)zrG=F20bB66>#UKb=6NOHgiP2dK{q6!zu5bU9@V zZq}Y@whaQwu_(bi@SYktDaGja=%ZlW_oKcQv-a^VMn38JvvV0)Ah<%v5-j)7w4nS` z_O#&MUpLpn((5l+#HC{1XRN_{UJG2G7Qf(GoXVq;OFvX=9eI>594)kvYfpU-|9~~yq+S8 zuAvn$fv0jSG>VYzmXcU)v$e|tR~KoM9yW~iQ)gls!^`DB+y>7%Ipi?dYDAl)e=h@h zm7itXO3NSls+gxC`UNUwg{n<9-^*MQ1@_@7@SD5?(>(bh$Oy6M^WZcbn@#A?3iKq6 zqMg6G&}%DWRC6sZM}|=E9w+wl`yNu2#7K<3bh4XuuoMiiJn_9{cQE*OY}-z4?&#{8 ziIvv^apbKcZ=`{J2E@Kvv+1_<@8aYsBo2RQ5waNQyS`a z&(!8zA(cR$0|E>y*ZBQ{VXnY)vtc2<_G*f9P)vL_5$r!H*8V?RiG?xE1CY+^f=@ggo6IF^c4;r`D8Jvbo1K zO)N#;#ge||G=ubFKOjDar~J9_Ihpy_2g9@eHYvZBF)jsWkkKSBeu8xm>@^TlxSFiz z#Y=+s`I|@Or@qWk0*{A{Thm^*hzBlpOpyJh(lSS_W{RAYoT;C86e?0b&u)zoSp9{q zhl~o$$kr}knecN;*@7hDbbE&9>2qoAenvNQKE70B#}JP5twQ$jZh1%z8@H)?~sS+f$pTf^i`GLjj&uP(^ihg-3;nu+y}? z+z@J3TPF}RzC+A1&*xEU=)KXJ=+iM7n9g*q&}s3S8apqo?oWunvENo~hP69B2$9yh z*JiBLeQXqzVTW&*+um?uEK)DMl{_Mn7E*^(y|Q;J2$|&RTnVIz-co5)-b3{vhNlc? zZv)X1gvUnovpW)`G~XUfCL4q}Yo>S)gqsxQxjSJYIhhKamE=XCz;IXDjdV>g(R8Qu zb6#ClUJ%*>V9$&fLKi9rQ*N0rh70+rOL^Y~vs8wwn5@PgqPc+B0`g7kn;R*g^OUDc zw2|u4Q=q}gbFdKd>Y6%LRV-A#6#iSJuKA^E@UvCNHl&d#KNM7UEbMcUDUvD=QS=g> z>RPK(wk7()o@K$EQw^jQP-4l6JW>wb2Q8s<1_0!_LIKqbKa~k^CdbIzXy(Z6bZtrBejS?`P%X}wVs5G&&)vF4(#8kC*8a`atDKXHNPB0ZplJe7tl4${kSM)? zeeLNywJJIolcBmX4ak<|+IO9{F=Yn!7|Xlg6W-q-9Ky6zreh33Jf-gW9_!3vSsI-m zHw9RqCo3YM$@?QJ6U?hR0bwu!t;+7vGQSG~&JWgv|9pC?!g(G49zcc@y@7PjmP87O z9IQW~Ik7jEJGfFEPw&yj`$ZVUM=hmM#dzaiD1*ba{^|SBE$V=JM1PjA6`vx($0Db` zxo!r$ynN!yT!AN9W4W~}?lduD0%vMH0y3>mZ-n&n_`a}$^}AMX{-z`Cgc^Jgeo&a`eh#p*oA zbL`YqDsU6J^$Yx>~$G{nWBy= zpyAV@!vIi5skO#8D4VIvla$P^D?fY(QU9Qtj|eO=4jF57$68kF{ar=Yxdz8<>2HVk z5cROVY+xf#ko97;Cg%--1A4>u&x&9UmmGvtXnbp4{GXdPguQ-jhW6rK&;2IB4dHgU<7jp#KD6k zPVl+sk^DD*(SpRGPxavQ5VvO|g}i|iwPHx74uP}~RSk5WFbZqtTJT#e=_+|M%n+b~ zd8P|`Dd;Qz6COT>Y9t`}^bgLq!*l`- z4&XtLC$2`cT;Du8JdN+=uQp(lCp3!C@ICpO0WM?ajMe)iZ#;e8=nGB<1I!B6fB{&w z@UbL*b6Pte=+;|z8?aq%qoOToOU*tvF)(p-akja6hTG~C%HTa|1%Sz6ca+x87#EMI z54}FVZZM_Du7f9A@dN-JLLEWRd|72gA%b<}ZWj@WqIjx5*%w|$lbSfJh#YFP`N>Vw zM43Vho6XI_vFq_+vK9TpF@e9knim?M3&k7Gbt>YGt`b<(2W2wepAzj4b6|&nM&*Jo zp3y8ZH?2G2Yvvb&ke4)151l3%DgwqMCEp?+quy6aiivjqa}&V1c$oS9;qVgT0sMD8 zxo;H^J@3LdeD7Es>Fm_VjZ{p}>$6XUQRR)z0IeI)M4zxOJ-F$;*Mpy7c>2smbc_+8 ze=8l+%|L$r(Uk~oLcF#d4Axf|xLam`eon&qLFkgih6!_z0SZ#wME(3teLA}s~mIg~~1Co?!-{U@WE?}B8%v9MuM0_@n`(GFEiHVX0 z4^gWb5XMSikq+JSce*x9*}-*^l=%VrSkM{7Eaw4@+fE$x*q^w@Fd5tY4wcH|Wr}bU znj-6Ef%Z=I(*{cm9^Tn_YUJnx=0hZH zg+R@t{`EllvdsBJTJMv>iOGv|jROA^{OKa!>w#IzAN=72;LeunrwC1scw2R=0Kn1y zYI=@>LJAwon@!V8@3@TV7h+U^7=@-rz}P~RVj%p)F(s=unIEH7;HDCRyD(^A?_PUW z%V*<$Yf25Ru|?DXXRjeJ8-dBm<~ni&!+b#c_iGvDNFiVZneQw;fIo$pgc#B;SB?sXq^*3h)ZUTk&3phk3OoWg_3)o*u(I9A>Q*T1j zgBHa!)1W@ql0`Du=k|;@-eV6Z-iW~DYe2PReFzV#XLpMEh)UIpAHx=LVBgw1XD*CZrIXwRt6$pP2~(}L!3 zKrRYq*D$vKymE?Ru1yCSgyz2h+e!J{KGiZk<_cRF&D&syLn6VJ>VO#nqCp!>CuBme zH6BSpgF_fE0$2GMY)HgPL*u+p)^-`K1BjD+ifq0uv-moV!N?n03b->Elj@(gU1Y4?T7>F9ijAK7}{RPb<1?CoU)5w4247B6^1c{04a za9r(B^E z^$X{wz;}NDjd3bwHCEA`j%Dqm7aS5C1{dNDGZ$cBs82eDGg=TeTYDWPV6s=?{wL$~ zA+Sjx%(pJPXeC+;%*W4grNaxN(!08~N@rZT5s#H4)d6-L(A0bj!w-B=gdwhCqEv8x ze-U#*OLQ906v~AG80C5nJ_X2m)CSO0f@xx?;07nq3?^SS7`Xma>VYU{wsTnxScW1> z3#*F?fF4ifEiSqQ4hzQ18bAhP-HNCv7<#oduLyYo%ptGmA_oNfU{>@`F$^o06QfHW zv`hG*VS$MZ+{WK2^fHhX$8Skh)d(;@VEwEz_AEh@@7klVueY(Rvn*eC%hvGr{@?~x z@{4V`m@reli4I(Ei~(gsYooZ!yZH02f({z<(hvZZKPO;dt!V& zlex86$Hh3K&YQmd*Uafh_RUAGjIV?rP`dr(OJ+LeW1U}+o(GOu7Vwao5*H5|qRwU# zWqcxC@rtu;x^EW?-61dy#9l>7gx#VRC!>CNu^n<#t7g5yLjEw}%Vv-h2+^_cR$DV} z8L`GN-&UIps^&}>l;ojQDi{o$^gl22UFXwM4wJD?<8$lMuPUn-kfQ}tVeK0qk8)RG zlyfgQOrm)UcpcZzTM)jG$$W57kf}JurBj@3Cal{(tvC(b=-Gt#6ZFY#H z8SBMpD5Bfek|k~3%U1-_c0+rUhL1^uKK?H6n6|+!0X*^y)f-cHF0IWVm80 zr+h05<^MwtK7_QrWqvyvCgjzzR=TiMN#IZxla0HzB`8_8rPnsz--PKAUmRjj;)$CZ zg*wy~<{4PYRSC32m=ZGC}-&s0hI_z@!1$o=|Iv${mzCsNhpr0E>eNBQQA= zdAC{L9AGGXnsmx;atB z%oHRwAY>@yCQ`2;Qvfav&_S`vU66BvY((l0zcAlOakwH1%J7fA?uQJsousYttEu%- zFNjjCY7b>tC;e^^xg1c+q)Vfz2A&^9h&b%m^qF_2@ulz2)0uB^&yEyHj`PC&$_ynu zi;24*0;WXu;t(Gd78GXLQ_WQtLAU5JM^y6b%f4OXIObwPTH`x~mBFkEpG zOl%R)a==+wT`O#3I@T#_x}dZqO_}RQs0tM;VmX&N`DmQwN@j|-T0O|xu#p^Wv(jAHX6{Z_py+wK-56AVWZvW z^D7_)(6*gNFNRPA2)K|QEe3{8?MB8Kx1hTlgHpTmLd~PjA20jzxYvXWI=w*SV?@3` z5(wB(craF^WioEDk4p9}5o^>RHBEt30=-@kPKeIuUC8P_=0_7={4XHugVRd*j6<6} z5Q7v*rrfz6UtI$rUCssrT`r5|Y46VaXdo$^@Z}{LE8u*^eIt?(*aXS-F1Uxs*mmnsj z+Yz^7117C~{k zJ7$Afx*xYCrZRsgmUKMZ?RNn66d&d41&@3r2`~$h9G+pf}35vv_0BbQ+f4wN~loY zv*x1m*@4pSeog0`MK61R#WgY zzD74LVyz2`%vK_lp+l3CUrHrKqJfN^@2iwiT@rqfvLp}6T_)vxqsjuo-nOmQ#M#kY zI$`^*ry_+kHtvrDOD2W>i4lB7e^2b79*{U8g9M`26-wv3`IjnX+ZsIRQ}+t*a4JNL zYEF#jglKPjlWRA86EqP)74bLhf_=ps@bjYs4kc^-1G_;kI0*g;(E^+F9f3TLS z1g9Ov&$FwQXRG>~7fwm-S_3aeyeG%W$Lc-AFJ`wD{3^q`_V(Quyuj34ph~jQ8E@%o zloN4YnURQ9hv(G1ahH_5ZBdy4u^F1`oth^C#$hXh+h5Kz_D3%cnowHreZUVa4A0$! z)-0gR|KfM-)Q%!-9XP~ClU5eR^yvUv3r-zP?~L7`qd~yd8~;LN8vghq`QvhA@#MrJ=1KKip%$84qRQmd<{B)BG#ceNaz#1UUh#_Yj{dkBP_ozuhOga<6i1 zyTe);H29`{^eBL&V4|uuF}2;6nuI14BrjMs)v1$?L!&}b;&$xZ(kd%8oh=_|5EQSr zXqxrsYGJ3Fl#rwZ=$U{t%+L67`Mgvd>)JO{@y^t=*B~W;%36f}ge{I_Qs(*#QvxcU z&dkp$Tkk-KI$wqAXwa3K_E76a{3~OQvTkULp8PR4zbeIQ9IhI1ZB+AMNRF?T#7#sa z)jfn1kWhk!vVHGWv$}LWCFkl{9gE#;(7<3ZZ%{``^!6uzAR>Q2@Kd0fgz}DyGoIhm zU6P!>1k0iGY+WJKDryo)-@MU-QEi(Ha$#^Bm8PxfSw16xNJ4AJvKdfHs0t`yEUs<; z?^g*V5h>f7@$J2-EpD`G>`)B}o62i9uQaOM6;FK|++S)-dvshNm7vZpPYoJpCtukx zAD%zHh53f0Sy-uAZa`ET{`eNw3W3m=Ci_R{Rr95KKt%#o$bVCm>v{fIC2osCPTZql zM0w`YPB{I`!3gDm4i%e7^A2^LkvbUl@rxvOHNYPhG*#3A6?iBUY2Iv;l>qvK{AfvZ zr`4%gyVpYTAm)5~PeZFYwyM@o!8)UHNQt=pqP$#?hoT7dalirOa6WnYbXbH3HPRI! zi5Fg6Z-r2w0#awt84KhQbd7r|y7NFfI6ck!`Y94mwtp@~Keud@94K&UIvf@ZLLGyS z+gsAOPRASttw^%j6J8=3VbO9OX}su)HsQMwn$WL6vH)2XOLa0o zbC9jtwOot?jict7UO+6TL`VNzpLd5mw|J{O`_{^koX3D-X3keFu{d&&X zqLICISg{GwO8L5TIk8NiKz3o{6LXowi+_D78#L#L0ly!#>-)W34KxQElCu*fj7 z>Ta1*{C0HQa&H79o)Raq#>5kA%Pt za%8u!y>k8zB?5>6#ejBOGt_qRhBJJGxTWC8Oli?AYXty)aT5Z4o&p>rTbiT~d44ef z*WU)*FDQpB4|wmUTQ_dQ=lr5>$zYeEo7S#98@)`C2{KD3FI~jyrHL)%VTM6gD~0x) z(+zXYaTRswPG*1sm|rW+)1w?qY8nE4M62cto2##2s%8FCx!#jB1~M6s`bZWG>L@|e zLG72+Qz&Rwz(L(-{d`%zHU3(}ch}AzI4%cwz+YC%MJ9aek~0~NtbfE(Pfbx#Rg8mz zemcX-A<6jTWh$67AP4^m@L4x5LhB8&_+hIeiJ_kLQ3DWED9tFDk{YFNR0KY|E@c)p zWWhO&(CFv_=n}yg!9AhY$c^oR8blRFa!80Ke>7~i=w$?m8z8DVPzS=(SaDAqz0f8L_^Q_XxG;rK_?|HDyhQ_06^H+W{MG+b1+9Jj*KxD;gTVAjyAfL zNY|dCz9kQV314RJBI?|nzm zEBe3m?k!z-jp-h}>73a+uM`I`dL*}pd#GFBFEpuO8O9j0?$6X4J?Iu=4 z!UKXg7!@zzOrhz_kr!PD8}e@@Yw`@F*AP*`cq?D1c2);i^G>Gk&atbf>~}|5p;fms zPo-&$sx_0Dc?xJDL7BnU+4BX&0HJ2C{LLwQI`%v7*y_WT1pR|kr}i-fp1mwruePB= z8X6mWDHWI^>YyQ_UtMj{Ux@629VABj^SwB@MbvnL^ri#rg`@os+1j>Q52J+TaNjO; zv=OV9vg7R8&9|s_$}ELEeRXuE6D|(fRXaFi&TS!v{mvAk)WCLVPu6uY+p^C7E1xLx zs3fWHA8s+_zf&XgD(VwJ!FcMMYxSNJqyTtAJdF^T7i5RzQRM&@Xixp^BRF&DWBZbf zFWKpwXGHNf5b(#DrAwM<93XL1i7(u`;|9nBygoq>tLpQzT2OA<;Y+8ICF3H-G1)Ign_*rdj&nYZfyw91+0|HNqVT> zV=amSxZv9EUFig`=s!#$w3#bc!Z*E79_3JN4P9RW_}{4@RBtPLM2z1b2)%>>Z8!V) zHGb$56QRsG>MgIkKdd6jvw{MkavId#GzV)x(eB~{VLkB_JDE_%jA}~=7Eg^AT#Zk=5aTuk zRX`qHh{y@>V<`mv9+S4%s_w+3w8j!TzfLIN0sm~^IyzpuOjKY);6Zp2F)Ppp2#U~MzA5!6JM_a5l!l=jEK`G`Te+*#5C}EH zc8oq1`fc*JpFAn}a2bdv1vY=B8e!Z}kfvmha;N`w-i!K^0!!4G7Ld`*(-dWlW<{sD zz)wEicuqz(OTT1wcYfgwL!FC;a?vf%=}OZl&_?O;_CQ37}6jL z3}-JB5`u*8ibTu2U)J-feUK4c%}{YN+jzLO=ZHt}j$u&q33V*cUs#~C&lHsQXp91? zLM*gU6`*VmQ93h~Cf$|v>PMV)XTDXJJcc;G*A}b+6SJ;+cTMlbl6cyYD zIQmq9M~UW~X5(oo%Jg7TC9l6OMCl21&mmYf7+pd;6B*EHZkUpofcRV`5{07`eh#&i z5?Bdv9>BrN?9-gvN4H>tJ^f`;5yg3A5Ce{;0ds{*r|7msRNvC_Lw_^@iUR7?B&5v? z_-jQ-Uy%t%Pj9AzHd;>+bN7*G`XUcFk>upc2}B2ipQIOHZD^VN-d=*Er*O5^`a@Y89{&z3BvrXJivQgz04=8k{SXn#qk!oBnY0J z+M%hCJV4I__1haFY10904{qwG22L`&P1wYD?_>k;s3`pKUC972cI^PvuId1x=MT`_&|r;(&+Ogp{6=l9D>sBc-qsvI?T!iZ%EK;72I|XkPP0Vha>b60Oh1c~g2A zZqn}iN0OA}fQsK|R>Ng5ZP?5RB^iKhuv?nAloI#ods3{;I8<$h^TuICx39{7}K z8Kq?VKyc9yKEc|djm0N+D}w?cnk?Ttd>BNJJqIC}AZZZ!#|%IkYiz)k-akxW(kSc> zf)iW>b~VKBA0n|kCk$iMACL?|HL9OS1zOllFt*AtP+_a{h}jXe3Aa2Vw*6E(M0Pw> z>+s$Iv1Q`FA$bGwMJy1N*Zq*q5j2P{LlkV{E7C5c!=gvc}d!z7+kP&!aG7flGD zd;B(x5D18Q6AVTBj`M+;17dU(4Hwf_O2=_%iQJsnL`JSQaP=s8e-I z`V+v27+^qfdMXX;TtYJ^?`(#`TcIsWeu5Q%nhO{~Lr0nqq&QTpI>~{EC~;qNz7ZplJjr zoM8?r4@`W1LJsNtvM~X%b)dHf62ZBSBCT~aH~;5bMgc1sxjBCpA(?mG2y*^S&MKl^ zvY}eR8b_f23B9_uYJ`n*+V4$y{N~V>pk#Ne!X?`IrQW?6cXB$m&hEZDkcu7h?kVy#@Prcp% zdlQr|%V)SPPwjL@&9&DgGT@DI6x1!_+>pwaQaL)Qy!+>Dz^0 zJT2*pEi)H!9OyOb}O?YR&19?Y^kbn4YOHyf{&=@ie@-uCrdawWM5eSCxV z4HRwJv4VJft#gIG!Jvr%LxxOyPs5<`4^MNd+0a}DS+=Q_rW=NpGA6w#2CXtJEiDw3 zl=1obH=*IFJyYf7JW^ZYu1-mp3SbJ}JqB(*FO()|4cF}??@Z!1(C>`j?7&>8Ol)>s(q!GJ8u?QMjATqruvy37hP9J|6wTvtlrF>ZwBFN zduccW{D?wlhxV;|NWX@wvQcF`u3` ze|%Yd(Ovw+tood0CheLO_BE+Jc7%qNmr#B;mP{+2jng8{p)=03ckY&7)Jn3*`uJ5R zKKpG-L*3c~9Pg!hN>+_DS8!sD#GjUN?hf}&`8^V^^RG7Nl%5JqtYVXRR-X$&_!ZH^2tHCA{N!dk){V;KS5z z)TV9cpDf!yZtXU_W$%KQJPwjpYUv%;z2tO)N_K7)6~vA4DC(fLvh~%8B-*(X?SKQ+ z$2*%&L{G24v=hX`nn5tF2pU(*?)8#rPW3<3=8#u5dvGihzwHN^1M5Q?m=@8wV(ntw zGiJ=Y^F8h7PcCnCc88uH(7@hUX>z03Ad*&?5p@bYuTHy!$!^KV8K^p*A6NS`s04Zo zKeM{|X=A-4PW|aznm2!V$NK$%2BGfe?)*5b{G+e9gdG9Tp(+{S(yO5 z)89%;)IWFI?YrFgd#7Nz3H4|bslnZyJWynkj&uN_BVp$pbHXei5*$LBY8@F`Y?x!@9c+|9G0N*P$Xw&8qW_e&FLl85x+T7$xVLY zBa<2~|G{cZR8S6w;+N-IoYhz9<@`mbzAU_?SRoq1L4B#Y=|xI2>*BEn>@5o~TH%d( zjR{{@XX|uLC5!UsEsy%@4&&3M*`Cjz6A!p;GhvKfY?v`s$7SnQzZ)~=cQ2deG9`}( znJxe7fi0yt@k}(l5H))r4z+mgP53fxnWisO0mwe9XZT?zTiwXe=tdsnG z7coeE%6WArnJ`~M=yM0f9_OuvDrO8E#ijW1vdr?l$F4?mbMsUWJ{6>rY(ZO18Vl=| z%A%N%bk`ee%n6c7NIKBc@+(s9QcRRJo@|MK_x^py*C*duFT8z4L z!YP^q4&7}~M}yshn@dr}ouC#Q~3PR#rFYiAy&pwudJFU?4ueu1CIcQ|mQEf2eS%x})|R5nD3 z>Il26w!xWvu^?5Z2sgya&aR}c9tt9Fa5PGHcQ?%~$FG+ke0qEV^rKWjjRov{1@wzL zrkWT?rWp6bkhRCxNv~b4*pG=)rZ;vkS4 zc6$TI7VCa)8|j?CE41-xTmA8+D)wLwAyB=O{Gigna0R2jib*&l(#N#R*N~A<_Rx;= zM7T(=(V%vThvSFVg`HowrPeJ!?nJnW-6h(pIP#0?&*e5nvayLK!bNVF{+7p-l1jek z7>?a^NViRYci~%0#X!x_Kt%YR%RW^y#}=15sB~sqN3M|Gx1P(^6SC_#(#N!&rIg`y z%s&d)21^Upg>tsL8SNcIAEKhTFd(;c?R^1(VESk1Tc!1N49NK*@vrUvz@W*A=GaQZ z_xif+)ZBV+UZ2QpGG}LD2>_ex&NhsgBPYq&Q$cPE?PGXG!~4Bt+aWuFK6GvHVEaS} z^Q}#CN;dPILaA}3XDZt=16GF}jFNdjlQCg*+1M!w?Tgb2(UZf@Iyt9stoHX_PN(Gi z&OCRSzwuAN72WxVi&O0B-CJhqWcSGYL1`~dCW7|AJmbmHWj7m~2J^OHYm$Zk#R@L% zRBTI>pXs5&xzyi0@#tZx2N+jAhO8#`Jv%xzn86kkMBv#3|DsyP)aiV8ZTG|8TJQNgK^mlI|RVdjA z=bDR0Ni-1~pCpO*J!GZD7`uwdJJdocgKE{yX+(zU66FvQ3tg%l&I6@8zp@^BiH-=_ z-#KVfemd~bhLdWK8r#e%(Zp+Uxvtv{kR@mzxg664+~Ucvzkx24&4Iz=7lr#}hU<}P1JG^L;yO_#P>-Yu{s%bqXY9Wd?# zUzr*g$HZ$fpo!EG!}!efG9OW#J7-_xa3Y?YV?p<>$&7dhzOC=H8! zar<1;H8CV5?7?TSP4pJ7;_Eu~-k^O_V-atk>b5HXptLt)r>wV}IL+|dVeCSx?R?gv zP3`tKmB}7YJ#ugBWABAH{IPNM{fCubbEq;V4t+WuxqLF4Yx7-ERf+WA^SgYBnNFhN zADC7qrq-k*R(C`+94L*xcU(9**NkVFzW#o^%i0`GDHjPImsSK^ zIm-ikzQMHcaL=wKVVI!f^0G@d#KcM}mwSzZrs~uMPJ6+o<}`KeIoEYOlZ!=+k6%rO zC3#imLmq{d-$nR;IG1OtkHC4+L@kLo>!Z21BCZNfQ{-L{R8MOv?NemApK`P}Ia_^U z!(Qf-J~{XA$`jWNjtkJpdjtmSYZBs?4P*HObQ1#f2Jg5xj9K9I4WD0{%i47r0-sb) z*qCgx=nc`->awV|Dz3Ad7p6mhkhR)lxE2%?)f&<}Lx^3OeNyT^ERlB~Yh5bJ3E#yE zJ|?Z0%&+7Q%k<2AYo;xyem`fdq=M|X>&&>uLOnW%e!CDRV>mgC72JT{Aa=oM~Phn3H+ldbYj>9K0t8`6S zS)5u|rb-h!E(_Xkz3SEB}+^^*OQDS)WL}nj#lH z=KfXrv&%8wnbMDxKP&5wydEHazoeuyzM=*ic>R2nz0r}LL5>x9W{#a z$DU0qkDkerBz0&enjNm){&K%*%MSlfuk$3I4wqT4MiO}R_OxVgZI>ry%A(WD4kb#& z;4P^tu4nHf0@goaL{DmFL^=@Jio&9PQ{mcwdzc5~jTuKNE~vtWdqU9G zH8RE{cBF{U2u$OVB5p2+sK3>FZNJX=@#lGeV8Nz~-=-q=#a5BNke$kvca5yoO&ZPH zGbg{^6~sS;Zx?)MtHOA>^a=+3&yx1L=BPp0*5HW4p?S8&mqo9aIVMaPp7kT`{?)(5 zS>U4v=1oCC5eEkEwopNprJi0}Q}YlMQ5Bn_4WrytxQhO~ICJJqjzI&B?gOaTK-_Cj zq7)Rerh4;mNZYKyX53`B(hrG@Rr)jFUcEZxN6X)sKexUx%nMRw!}-GlM)@xo=j6w7 z*$+F+TCY%jSMDv*O*AJz8rZAP?q7l5Q-(M38$IVxyyAUZ{iBmujp^#-Nb((6wxo$S z7Z2y+Q(o%u=u-E1{nM+C)V_EVyj|%j2}C0 z)=ho?r}GzV`Y|~tu}O%0mAEB6Gm~cN;Y;oKyQYacJR$=!y!j4S5=Cw+Td{AaT>YIv zvf;?DEV&!39J#AEBkVl0bIq)}z8OAvV?O@;N>OWR3$B|`n8TAX|ENV@bU@{$i-Urt zq)wvE1-}HYqH(X2NnBeZ)i^Kg*sYB47rN?rgTz~5k9_IxQZhFHDiBc$@ABO1V#o%h}oBXcg=|cqt zI8r1lFfx*}hMsg|eSM~Gil>NHzY#4&zsVsKn*KM24*BKi3 zt}r)f$3OHJVRzu?&#tp_Vo8oltvc9`+qsj(%O5W4u~XD7PLd>gii-Z>O!f8JM`0%R zES{!yo6r~JOitVC)A!=__K&)5F!AjEd9_#@I%%&XUYea#4Vys$Zt^@)Q=symlx+V! zF3gDAgIOgJ*O}rg$Gb>Q{s~0wmlY@F-Z5;xE+-7ee{OZRuovJoYaL5}7sh?p!_gro z6u-z#2%mnsSr{RRb$XDky%XCVujDf*16uZ`zpd|vK_7&@W?-l=VZ4yge;>rik^;hn z%{!JX-ggGi_TF%~{o)jrcHvt=6IBc*83scc`7Auk54Ma#j(SfW4@PHsw~p*QZhdVw zXgW%?@Ef=r8&e3P{&3{H$&6EKWj#%D(@u#*4Wl9xCg313#i7YETiW!eYy{}CP=^H- za7fFf%b@FR4E{2-SIgf!neJLci<|>(Lv$GL%Fk&o32sJ^Sd+n*qz6^j(KDplgh99JKBaX~$5qgMiYz3lSH#{mjj~NZekJA^{%~*qy{=a)&M9oL=A!5c* zTnWcl3^sJYIlG%#*>r7ZSV}uv4olI|Er}E9m76nv@CHt4;6pS)lKg1M5Y$5prF|5# zkkQ|PyjiP-8NX(nlDBj1zSciQM_)tErN1|z<4j1~3fB(LQ*k2m$+49P1V_=pc@$p9 zULUlqf_?puX*a~-$@)!wv)@n9$%fIV9-D(Ko2L&3Zs8-t$txG&9g*%eTdAzq*QqfI zWTgh^)H{-?fA@cz#WVh?TyV46`gjDqr83<9llf9f!(j+zhySNrs=0qk2fFg#HZqB& z)!!*13FlsJ3@@v!V(-PH*6ZH}FUVo{e^nirh-QE;8Q@H}d!df`|^=0&|o-`=x z$49xxitmQRXT~zLxBNJ20!J9xt8qT@aDU#?(rMi0tK?<3&~Dna#>fO`%AMPLp0=Mp zIGpOhuWaH-RGt3HA~e54T6z+L03`N>Dv}QOP#t|+M5Ak)IdJpC3=Ug)5Fjn)Ov25-&+IT4+WcKcBR>2D81k) z3Y*qj@BlI?NapMrS@i3!Ot7MTd2)Dp|LcMkgzcY29}oAc>)PK#$b_Rq;AF+W7WB@| zIH+|kz=6!@PyZ~XyQFCW;kp_iBmW2ZiA=y4i?qkJC8{0CB;(j=E}SU+FWCGTbHCA z2CU$8NKJ}8bEk>REh%9Y+(wE+_yntAji3;>vKej?&4fkB)N6WhKVd*7U2t{J7D$rF z3J1Go63q;49YuMDJ&7Ym->zd6HdklsIY(pmcW*TP*GISDScg~VWL$JcN5|_q$;3_u zhD5bq@z6CE)&jz6$o(cQ}2L)@^ZYZQ$k+JgzlZb**V+Z3J3i?#lUPnM|LKR1zw~K;V1Mt&sRm&+U+?R)A>pO zowc$0RNVchMYswJ4@>rwWN#%uJ)W76v>S|mE?Xs{Q7pl>JFhr8HflOHT~8f!-q)90Jj5f=8&128yg2REsseYadk5O;qc|F z{9HQT$NiNEeQEF*;&76Cb2*`7lO`}IWV$PJ7;CH6$;HMM!j!l`i5nfAbm|W&T$yZF zHK%uj zzVsEj4nKNi^d{zYU+V3EZ4+Dn8Lh#I&u^`;ad~4^v~`Nl#4AFtPg~UX1uG{fbdJ~C zPsM%}bVKi5b;PrT=0dlQ$6F7rD`tGmTsmnTBI&mIf8Gqpy5d?E3%>sRS7r-$1-H2< z0Evn&OQYLMQda11O>Q~)y`8hyng-XB@l+e`&*+be#Q@HGCtr#oVg5R?xlNh!WfW(G zkf2+x@sbLM`eMnm+@}?l_h{YTap&n9!z)g-NwvxUb3f?U&tK(?g}V-nD6|7S&5v$7 z>9X)z4h+d_8|pffGSBLAGo)jhrbl@TQm7>#H^z z!P;-a4C?u~?;@uaC4ARM!9HoEio10RZjti|DLU@xD4Bmm^E5_hdL<6mzT6SEQs()7 z$|EESf|*S6xc6Oe^yICX5rkEvZyIl*Rq&2eGi4=Yy^|T^;p?JZ?7RvBhwo+*E2KkA zo3U&7Uv)B65ubJ0SUVKYYQuTC&U40zmAMvIO0HmF&S^3k<5l_W%dh6UE90d_3Cnoe z9ByW1T?s$iLIZG5;-@B36RU*H>+R7~V!~wL(K%#4S=_3Mu67S4T)bVwrkJz5O&OG7 zCk&*)yA5fPJtgyRoDXLU-y|VHW>q#CPHd8MUK@@;|CzK*7;Ih&`v&WjO1ue zwHc%R_0#J=Z0y^d?_NA%oEJ2%pMV#xqJE635AOpP4GIgvQTv7g*%Tfr>>askqBlJu@^NRo`XVE~wO1&DfQNaCQYlbMAE9m*Rign9B$q zQS+In$yK_QdNM1Db?qNkT&p^ruh}&}uD}|3_8g6Mb7pL%On#cFw>^1=bx8K4;&0!Q z`#gqK(plb^>!oxlpC+y*s!73OxuPYDmaWlBYh^kgbv{KKUamAA-E}izpR}%L$IjfYD_U2B4B--{CrT$8GU}A#F-%y) zr)C~I;&wdJA$YXd`mv4Y%2U5S+SN=mFcaLl#+Xp8RB|fj5<38&W^`57_d+F zKw-JC!N!w#b7iGw-K0(&H~vUvb!#LUoJ%})_D(|Q4pCIOack1uFi*Yzg$O*$^8-6H z;2fcn$+Y0&Vp&<@3MXEK^wTD@K^QFs`ojE;X$sNI(#ygv!-eyl9dXSK&bLxhgB#zp zj4v^?C|>_BVb(I2*M`8f`QSgv!N>^0+I{R(-Ixe_hL3T6)TOJ<$tJ+BB|RC)R7@NX z0pyJ`7#N3}hu4Br#ef*)%cOUm^$m5ng^p#|PXO41vLJ8OI35;@2?Lc^*rGX%-}iKF z#3DX~2Bc#Am-91(q}t=?uSwsb;&pG)_6Y&3hNZ#1%}|UD%6*mh=vK}Rt1k))t${_{;t+8lAWYBEe>pbSBTo0vLEGpdZ<>A!xGz)5 zRr6Se=4l)4076*UxhwUZDS>i9SYm-SkX0ezm*2VT8&PG_qtpX#3fJ^GJqT!z0mT~N zGkwP|fIsW!H+mej?GK5Zlle`Loh_$q9};4-#X)x4j)75cmfHFZ>~$IR>HRkT42Ex4ypPR*%6HcCV>Rin3aWLGk^wUbSE>0Cqj z>gJTF&XQb%>tbY&hf|U^;Yo{3=j9WmB$@(yppQ15PSaHxv;M07hIEzh|3Mh_`1p|5A|EqFHtT=U;_-Scg+N3__mkY`IMHot&V0^1oI9 z|Jup9#JetjuC1*@iW(gmgGtY~kAlZd;@B?{{%tOfcy`6#baIoep0i>UB{HxV?2eqc z1}DEm9paD;88}H2IeT9IbcEfh{AJF>N3(ZypJNPEsyf)t8QB}3?3okZ4D^T= z``nvF0ZvkGr$AGMOAfIh_72>GH+13~o%+-YhC>_+BKB3W}2Gx-iYT!|bymZ*02$QD>9(lb3W3&75grs)}DOPFH&-jIX4&b};iF znIdO^Sp9M9&yW@$XSN}Z+|I3Hng8bKEh}>VZ33DURN6le*7?u*|AYVt_$6I`+9FV^ zsK0TU4e|q!^lJ4ym(e!Y(Rr`X?_XDgL<=9W6hUMgJ5#l|$>!4%uJN z&(AL+0X22f&0Y!2-vQ7B1A*K?Xj=08)b+dp;TGtT18viwuR~>Tes+Cm{H0uo9g9M2 zl4iDhqhidz4L=VAv)(I?YOB?39HYT)7DX&q(7hK69>EcTTe=Ca`t5oux4n>VratgKM!r}i5(*X!$BOEyIf z_)Oip0~vV3T#n78%dO zy`$eO-AIUO9kW^f<{&rPT`ww?}N~1_E^_9BL zEn9;NgS&n=fbRq}M{qvG#g#S~U7&wt)Jq|$RJ^a*)GG!Zo#cwn+8wVzS)jUm<#Y3_ z5-v9lOYV36Lw5#Jh$4R59$cK9GaX6SRo}NqnfPTg8hc!Ye*&L9>&(>3DDqgmr`VOH zlMSyex>t7?b*qHr8`Plyl7UCRg@84`VaY8LiG&(CL9(81`%)e+9M}=o_vp}ZNKvLk zm&nPlUr$Z|LuXbv0K)JCi*-L-r5B1AM)gV6IY6|G>>S-FRxHLEgxZaG;v=c(xukzfdkzR z-RR)#Og|-SChv%?9mk(Jptl~wsgMF-7V^yGw00n?4z9b#PYD>Aa4&nhPu4_y`+WAX z`;r#q+Xq)h{^Ig2F@ki=@>DZz%tmvb>LIYs%9b~{C!2|07L8ljRPb^=Jqrl427@&+ zCgoeSxL1~Eq@d%Gdr<79D(*b#- z7;NX6`$lMppWXP=H&^rIei-h!w7{rzDU zTYdb8PU+UI%7tBNb8~a0n>W?rVbi@?-`qqAW0-ATU!I){w&bIGNofW7Xzvlx4(fJ*V%=3|TBD67==2TnU-qk=o#uqH``C977##(9c^lGj`5-*N)2B}do16J=t%^ogNUippDygdK!i0nj zBkJ8ZGh>w@#BiC!^!qrgPtpB>w@qFTA3S)Sr}Z+f7y4NPK1a{Nkq@sj&C~}5FO5mX z*ZWfYHJgDPr~Yq{DfcaL47=#gICG$Lp)$x@2X%DEaNCugYCHz)aVH1`ZP28%WvR`it1dGgr@%~F!H%f}5@{K=je^-Y zAyW9sG2vW-k0xyT%tH4baWV)f?%596!#bs2s^xo`bnR`a-a=+GPP2@#IjK7JsaG=0(;l zB@gi$o(A35Qf8G3r7R3E7a=t*8!Ho?`lpONGNG#P3wZs|nT=(ulnFr&6h|AE#<@5ZCRlmTEv66BbQ^eWI!^2S;}2*e@H8B70e4a4XdsgHj)g?C1%3} zXa^`3o7;8L-Q68!J+Z06mTlVl3Xtjsq~jjJP**n{`pfEFF3GCziFylfQ;C!4;l6zY zxF=ZJU{;%&+KqbJxpuOB>-zviDVw?7@J9*aB1{wf%NsVBj)Ypz&1b5bqBV5O?9Gl; z{LXCF9OO3M71#YC48jN6qu#rJRmN`k5)J#6{{F+&U_DV1UC6EN^<}g>Sy)&^^ucIp zz>y0Psqv(TXmK%8MKT{dW{xxVgU+yCah6}^-@>5k&+=yd>7pi3Vx?wh+?1h**I&1K)Z3)vH&im7E!ESYB`9)rV*`!Ttzj>! zYhFd>wG2*Ra2hYwlINziz1a%4a?uBS|f%NpqtNVYR1aO;452cF8!#s-{>fC}h1 z4k8pKqiy=~;@pUX=6ua?$ML{w&JxDXUAnZM+;(NmUss=zn1g+uVJlQliBr z;kGoKoUjsHL96r<4g|emu7sKhd`=he}NrOX2Ty5Uj z77nC<&s7y4}Vcgx6G|6&zU@0kYh_DvFRgt;a zV{!m^dURmpI|dKvPsad@tY&YAj9q9Rg9e*t6ng}eA(>1y$AiK?4!_0wd{5f-QR$@NkXOr6o9xJH!zcK22OD0R0Kxk7v6cCnD{5iidQJROy!`1 zz7PHLU(9pDJO5pjfUr-?M6D;Vy%c4z-^u;V)iK8dG?ik#BvUmL-9l?p`DI?sS4s!u z1;c2ontk>5-3ZfTZ2Sn`(Z6C>F;g(82_aVnwbzmM%I&-oGQg8j^oQVlB{)|)o89ei z#cZ|b+kd5UV59iEIM?^3TQ&goM1(T_+bpmCf{6;>z5j?Cv^h|C_ai>vTrPYTBkG6) zMZ(v}K7Pj|M~t{hdIPd$HtRt?uMqEF#hkN%faJ~l?xUhPqTB*^s6G#yxXsOkwus%u z`wOQOb)G1QqREqi;mjZXyzHqs+rH^!7|%Jo_2D$~{<`-zG-BPqO0wbA;a4E0+&aDW zT;n;>V(c~gt^OpSTv0xua39%KqmL)vuCnL2v_gjcr`|$15$J^M)a7XDG4eBSWQ`RomwFFB7L!$pvo1o^22>b$Jw9Z zoQ98gN9t8f7oIsoI42?tI^PO)d7f#$hENZ)*$XmUaM?N-xqf@``2DLI)o|d-nS#lxL>!!EH-u#K+ zEl%t0>s8_3>o1LrM8~=^3bew#W)j1iG3Pnj@MJ5>ScV%T%S0(}8P2 zU)dUSNgIi0o7T3$tvX1EssFt7p=vS?sD_im7#kkIEuE03Mh>%2T&x2eY-0-+8x*`C`!9V!@E+#iD zL4gA4d5A`RA@O%EpE5{DB{L&i9P8=;*dHbZoG#PFfs_(S%;hadexn)M9ubJ)Ehcz}2@fkKLPx;3UYO`jG z`V&$HSMu&>h*HVcQc~doK|C7;w^&O3^T91)W?{=Qes3!<@8g~Fbpl+^wdQzF?H4Ib zuB5dF(UleL2@m*7NP9wX)%4rEa`TL;0++f0Nd^XX8LrF_6fnS6`M;QW{mssAliaXn zq^riEAahEgkQAg32q~b_7@x7>Y>klpZ@?79?ABY#t8q4t`s2=q6z-$SqX0ke254A*p9x)2d5EvcGk1Q|1^>>i{?^OC7!0x2#haxMl@7>=S>i; z^tWvlL6D&4KCJ8Ou-G*r)ia1+j2N>YgZlrhkwP)@C$x@XNb`9t4oBe}Rs~w*M3`o--70pf_~_#Mqc>o1d0?s{p&GBkhhTj8DDll-jRO5+r_k|I z)7CKdHPtEhw3kDiAIVN|%uOy|G4UxTW7pR2Pp~U?rE2U1JHUdUR;E@){DOc5*j53~ zEqsdCRDL!?H`&eiqPVWI<#4`G=X++tQi;u8d5ptNY`11cR?fN)z8hPRb;*qs$foT| zd#1rr;W&oF-rG45zM09CwV_&&?_%gkPg*YLR_I^Il0)oB*QeTuE@g^$?$xh|?}arN z=qIKDQKDPslheV@Y&!v@gWq3p>c<*zD(ZXF>Ta>F1~eMN_PDYU<&CnB@IxC?*NW-{ zYw_9qHY}_gw4IE-ths1G)oN5RYTbByinKpPOu;_|VpJ?El5WqPuVCt?e+JN~9GJLd zBCY2P_qzIL?uI-&7Fpbwwlz+Ogq5eWr4KkHBh3p|Nq-22WS1NWgT)PhL$vDKIEn1% zsr`` z>W;#ca4ek;{9>+Vcl*T$b}tnaRsb(pUd5DShMOW>A4@G86t@c_+;YPcGq|nRv-F}I zDcZVYhaH)ZgJTloE!qY1rNVvK5dDibw{Y=#ZnzA9Z*9=7G!KM!c6?Y%&$J0i$j!r< zH3*(@iI(Mx+!tZ&f^Sq8=E8A6^$h+c&%-KkCAt5FX?TIy%A6qec+>wb*+b3m*(#lO ze_ItMg#QRhA2vKOv#C!FcUdxv96I4_a>@ZJG8 zC|EDM2#Xl^@-{mDV*Ip||9MTaq@aC}7mAou0`9O({;#B@ev(7Q_OK;HR9cv%O%w>` zX1Va4SrnoiOMccAVHmQ%h+N3=4XLLII(QMU4MOYyC2=Am3&bHt#Lg<8s!$o+I#&wU zDf`P;lACFW#ep7?n?MTEupqEN_7~A2y?|l6%A~>er*gkGj)aUIgI^+36+oS>98lWS z9+&@JxRk~It|#P9F8ug>b!1__u14zk>H3i>CDuiS@gSYm6@L8oZrHK%lqPeFkp~8! zoPzMES6qMu>cs%jzxmMuoiuX`sCWxu9_&Gs*v~#W9Rd1wj`>9`3)`OF4xn?!DHVhr z?~KY?7DB1)BcmYwaE`K7(%gaKWIOTE#LhK$VRV+gdc%+Jb%-<^c2x){<=i5f^9h10 zz(~O+9QK9kUnd%f{)KJ;N9h3^E$}8cs;l%XGCTumBDdiMfDAzSH@x5>8pnWH09m*c z4c$1z@Zr?Wa2FsutnPYvBSwwN_4lP9$kxVPn0>*%*^JFEa+%tBE4Fw6|JnxGE^*HW z9gi3J0*}JuXKYalFX-QA+m@8aT z)av(sV}oy>`(ieGYh1o-XTmq1Kb;zf@YPILHeQKrempHNY=mDd+toe7)B)UkwNr6N z9x}4k1BGfqqefYbCMNlP@ni)!2tt-0|9KnSxK@GvvOA7I^4wDh)us*geDwl{=T5`{s8)uN^=3s%366({nN3icogQOX6%<8$Zb2 zL}^n5z`m0UN4b0w2Vtkp4xKgu=^Go16~d~o0wsAx{g{%xI$hl;3Gn%?M7x7T_T=jg zZPCb?qk)6F&_~e6ud7Lo6y$uKb5pP+wn$o260YZAZrx4BVl{JBP4a6WGn(+A`|iHf zum&jv(Q3WbJbQty*A<&~kSa3g<*80ygQFWTgQ?Hpye=x}N;5z!`%o8BsYFRP9)90A z7%qlRd~l=7d>lY-4_ z?3|zpUr=3&{Mu$imKqRwwdQfA=~<&HZ~-E~rvOzze>pMVYwc*w!Wvi`szhXxXmlYu zb~=R}$OpE2E8n|@f3sJ{j>d50kLMW)%zMFiYithE96mzxA{TeF+!J`iuMw;5XAUg) zC=04q3S5=DL5^24uD;E0;9*k3=oQjx^!zUECFsI^io7zb>;id?7{sA zNdD>MVg3C^#=ArS`tqyAOd#!Q1u4i0<34QNm(FpEmiuEba)-8uSjO=9a-G8#CFD=g z_o8Q(%_Mv6jZDqE1-<>_r>ln-A9{ruo>e?N-zBe6wcW#ydkoV_3@-xiKNm0qR&NG3 zH*J7OjQj8iGMlKS2HbzK8wa3^f>$Jsu|=mnBRIW(@9~xmPjBCh?Y`Zx*fTrNYh=0D zHOajC&U8-dPoZ%~yQ4ME#D$uZH{}5Q&|l36zd(kvZ)UrAUd#s2ME$BtXem-wG193|<~K|NluYNaf^nR%iGTE} zjMx2-4-c2+B7Rcb!cgZN;GQYTL#J0WHxjnc$bvnMcgg5}-QF}0k{iI(_X9k){ zA>J?wycg&8@q6%UgoSvhcWPWO8qdA4QYAjfeRsbDapcSAB$#Umgy@g{%geWoS4nN> z>Hhupeac6~v(Qe%wI7ZGpROaa*IENpCjBRpQFlXOcB4@%95|*S_XX|zcqz01fEh5Tuu94?Uah|R z%hsO!+MZo%q`+Rs4F6Y;(IZ>3t*_bgVJTwN&14jvVi?Q{Jgn5sYLrY59|@D_DR&!@ zM|3S1FJ}4yHQ;RxHg^vrI#r`~l}!?1475jU#>)KRY8k*jASxJ$O>Kuhfr{3eDxi-L z$yDENUKJa{o$23)W{$pb|5e?q$4Hy?RO`*K~3O+ z7t4E^wStaMHIKBmTDSCfhDjLJ!Y=iW%0DfCWSstYMa`%-w)}NV^|;_xL(YL%59L*9 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 literal 0 HcmV?d00001 diff --git a/static/img/tutorials/dal-file-tutorial-setup.png b/static/img/tutorials/dal-file-tutorial-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..abc2df7a4611dbc0e8e3efd0cd6d408f951ba9bb GIT binary patch literal 62200 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