From 2a4e66ca1eb465001678117bd1114e197be6a305 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sun, 21 Jul 2024 13:44:04 -0500 Subject: [PATCH 01/39] First version --- .../tutorials/secret-state/index.md | 238 ++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100644 public/content/developers/tutorials/secret-state/index.md diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md new file mode 100644 index 00000000000..8d54101be0b --- /dev/null +++ b/public/content/developers/tutorials/secret-state/index.md @@ -0,0 +1,238 @@ +--- +title: Using zero-knowledge for a secret state +description: Onchain games are limited because they cannot keep any hidden information. After reading this tutorial, a reader will be able to combine zero-knowledge proofs and server components to create verifiable games with a secret state, offchain, component. The technique to do this will be demonstrated by creating a minesweeper game. +author: Ori Pomerantz +tags: ["server", "offchain", "centralized", "zero-knowledge", "zokrates"] +skill: intermediate +lang: en +published: 2024-08-15 +--- + +*There are no secrets on the blockchain*. Everything that is posted on the blockchain is open to everybody to read. This is necessary, because the blockchain is based on anybody being able to verify it. However, games often rely on secret state. For example, the game of [minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)) makes absolutely no sense if you can just go on a blockchain explorer and see the map. + +The simplest solution is to use a [server component](/developers/tutorials/server-components/) to hold the secret state. However, we don't want to trust that server component's honesty. Luckily, we don't need to. We can provide a hash of the state, and use provide [zero-knowledge proofs](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) to ensure that the state used to calculate the result of a move is the correct one. + +After reading this article you will know how to create this kind of secret state holding server, as well as an on-chain component for communication between the two. The main tools we use will be: + +* [Zokrates](https://zokrates.github.io/) for zero-knowledge proofs and their verification. +* [Typescript](https://www.typescriptlang.org/) for both the server and the client. +* [Node](https://nodejs.org/en) for the server. +* [Viem](https://viem.sh/) for communication with the Blockchain. +* [MUD](https://mud.dev/) for on-chain data management. +* [React](https://react.dev/) for the user interface of the client. +* [Vite](https://vitejs.dev/) for serving the client code. + +## Minesweeper example {#minesweeper} + +[Minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)) is a game that includes a secret map with a minefield. The player chooses to dig in a specific location. If that location has a mine, it's game over. Otherwise, the player gets the number of mines in the eight squares surrounding that location. + +This application is written using [MUD](https://mud.dev/), a framework that lets us store data onchain using a [key-value database](https://aws.amazon.com/nosql/key-value/) and synchronize that data automatically with off-chain components. In addition to synchronization, MUD makes it easy to provide access control, and for other users to [extend](https://mud.dev/guides/extending-a-world) our application. + +### Tables {#tables} + +We need several tables in the database to implement the functionality we need. + +1. `Configuration`: This table is a singleton, it has no key. It is used to hold game configuration information: + - `height`: The height of a minefield + - `width`: The width of a minefield + - `numberOfBombs`: The number of bombs in each minefield + - `verifierKey`: The verifier key used to verify zero knowledge proofs, [see below](#creating-the-verifier-and-prover-keys-key-creation) to learn how it is created +2. `PlayerGame`: The key is the player's address. The data is a 32 byte value that is the hash of the map the player is playing on (the game identifier). +3. `DigNumber`: The key is the game identifier, and the value is the number of locations that have been dug by the player (without exploding). +4. `WinsAndLoses`: The key is the player's address. The data is two fields, one for wins and the other for loses. +5. `Map`: The key is a tuple of three values: + - The game identifier + - x + - y + The value is a single number. It's 255 if a bomb was detected. Otherwise, it is the number of bombs around that location plus one. We cannot use just the number of bombs, because by default all storage in the EVM and all row values in MUD are zero. We need to distinguish between "the player didn't dig here yet" and "the player dug here, and found there are zero bombs around". + +In addition, communication between the client and server happens through the on-chain component. This is also implemented using tables, but those are [off-chain tables](https://mud.dev/store/tables#types-of-tables), meaning the data is only available off-chain in the form of log events. + +6. `PendingGame`: Unserviced requests to start a new game. +7. `PendingDig`: Unserviced requests to dig in a specific place in a specific game. +8. `PendingDigResults`: Responses to dig requests. These include the proof of the result, and optionally also the map (if the result is that the player blew up and the game is over). + +### Execution and data flows {#execution-data-flows} + +These flows coordinate execution between the client, the on-chain component, and the server. + +#### New game {#new-game-flow} + +1. The client sends a new game request to the on-chain component. +2. The on-chain component adds the client's address to the `PendingGame` table. +3. The server detects that there is a new entry in the `PendingGame` table. Ultimately this is done through [events](/developers/tutorials/logging-events-smart-contracts/), but MUD abstracts it for us. +4. The server creates a new game, calculates the map hash for the game identifier, and adds this information to `gamesInProgress`. +5. The server sends the on-chain component the hash of the game identifier and the identity of the user whose request has been serviced. +6. The on-chain component adds the game information to `PlayerGame`. +7. The client identifies that its address was added to the `PlayerGame` table, and starts displaying the board to the player. + + +#### Dig {#dig-flow} + +1. The client sends a dig request, comprised of the game identifier and the x and y coordinates of the location to dig, to the on-chain component. +2. The on-chain component verifies the dig request is legitimate: + - The client is the player for this game according to `PlayerGame`. + - The location has not been dug already (according to `Map`). +3. The on-chain component adds this entry to `PendingDig` +4. The server detects the new entry in `PendingDig` and retrieves the map from `gamesInProgress`. +5. The server calls the Zokrates library with the map and the dig location. This library then returns a proof with the following values: + - The x and y coordinates of the dig location + - Hash of the map, which is the game identifier + - Either 255 if there is a bomb in the location, or the number of bombs in an eight location area around the location if there isn't. +6. If the game is over (either because the user found a bomb, or because the user dug in `width*height - bombNumber` places), the server deletes the game from `gamesInProgress`. +7. The server sends the on-chain component the proof, and optionally (if game over) the map. +8. The on-chain component verifies the proof. The process only continues if the proof verifies. +9. The on-chain component checks if it's game over, either because `DigNumber` is equal to `width*height - numberOfBombs` or because the dig found a bomb, delete the game from `PlayerGame` and update `WinsAndLosses`. +10. The on-chain component updates `Map` with the new information. This change is automatically synchronized to the client by MUD. The on-chain component also increments `DigNumber`. +11. The client displays the new information to the player. +12. If the game is over, the client informs the player of that fact. + + +#### Verify setup artifacts {#setup-artifact-flow} + +To verify the integrity of this dapp, it is not enough to verify the Solidity code. Another attack vector is the Zokrates program. This flow can be used by a client to verify that the Zokrates program is the one expected. + +1. The client sends an "artifact request" to the on-chain component. +2. The on-chain component responds with: + - The verifier key + - The Zokrates programs. Technically there are two of them, [as explained below](#zokrates-programs): one for calculating map hashes and one for creating verified dig results. + - The Zokrates configuration + - The version of Solidity +3. The client compiles the verified dig results program and compares it to the verification function online. This is a multi-stage process. + A. The client compiles the Zokrates code into an arithmetic circuit with constraints (that's the form that zk-SNARK actually uses). + B. The client creates Solidity code from that arithmetic circuit with the constraints. + C. The client compiles that Solidity code into EVM code. + D. The client reads the code from the appropriate contract online and verifies it is identical. + +Clients do not *have* to run this flow, the game works without it, but without this step you can't know if the zero knowledge proofs actually prove what you need. + + +## The Zokrates programs {#zokrates-programs} + +### Hashing the map {#hashing-map} + +We could find a JavaScript or Solidity code to implement [the best Zokrates hash function](https://zokrates.github.io/toolbox/stdlib.html#pedersen-hashes). However, then we'd have to ensure the input format is exactly the same as that calculated by Zokrates. It is easier to just use a Zokrates program to calculate the hash of a map. So we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). + +#### The hash function {#hash-function} + +This is the function that calculates the hash of a map: + +``` +from "hashes/pedersen/512bitBool.zok" import main as pederhash; +import "utils/casts/bool_256_to_u32_8.zok" as bool_256_to_u32_8; + +def hashMap(bool[${width+2}][${height+2}] map) -> u32[8] { + bool[512] mut map1d = [false; 512]; + u32 mut counter = 0; + + for u32 x in 0..${width+2} { + for u32 y in 0..${height+2} { + map1d[counter] = map[x][y]; + counter = counter+1; + } + } + + return bool_256_to_u32_8(pederhash(map1d)); +} +``` + +Note that the function has `${width+2}` and `${height+2}`. This is because the Zokrates programs are stored as [Template Strings](https://www.w3schools.com/js/js_string_templates.asp), so code between `${` and `}` is evaluated by JavaScript. +This way the program can be used for different map sizes. + +We'll go over this code line by line + +``` +from "hashes/pedersen/512bitBool.zok" import main as pederhash; +import "utils/casts/bool_256_to_u32_8.zok" as bool_256_to_u32_8; +``` + +These two lines import two functions from the [Zokrates standard library](https://zokrates.github.io/toolbox/stdlib.html). [The first function](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/hashes/pedersen/512bitBool.zok) is a [Pedersen hash](https://iden3-docs.readthedocs.io/en/latest/_downloads/4b929e0f96aef77b75bb5cfc0f832151/Pedersen-Hash.pdf).It takes 512 bits of input, and returns a 256 bit long hash. [The second function](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/utils/casts/bool_256_to_u32_8.zok) lets us cast the 256-bit hash value to an array of eight 32-bit values. + +``` +def hashMap(bool[${width+2}][${height+2}] map) -> u32[8] { +``` + +This line starts a function definition. `hashMap` gets a single parameter called `map`, a two dimensional `bool`(ean) array. The size of the map is `width+2` by `height+2` for reasons that are explained below. + +*** GOON PUT LINK HERE *** + +The return value is an array of eight unsigned 32-bit values, the hash. + +``` + bool[512] mut map1d = [false; 512]; +``` + +The map is two-dimensional. However, the input to the hash function needs to be a 512-value boolean array. Here we define a variable for it. By default Zokrates variables are constants, but we need to assign values to this array in a loop. + +We need to initialize the array, Zokrates doesn't have `undefined`. The `[false; 512]` expression means [an array of 512 `false` values](https://zokrates.github.io/language/types.html#declaration-and-initialization). + +``` + u32 mut counter = 0; +``` + +We also need a counter to distinguish between the bits we already filled in `map1d` and those we haven't. + +``` + for u32 x in 0..${width+2} { +``` + +This is for you declare a [for loop](https://zokrates.github.io/language/control_flow.html#for-loops) in Zokrates. A Zokrates for loop has to have fixed bounds, because while it appears to be a loop, the compiler actually "unrolls" it. The expression `${width+2}` is a compile time constant because `width` is set by the TypeScript code before it calls the compiler. + +``` + for u32 y in 0..${height+2} { + map1d[counter] = map[x][y]; + counter = counter+1; + } + } +``` + +For every cell in the map, put that value in the `map1d` array and increment the counter. + +``` + return bool_256_to_u32_8(pederhash(map1d)); +} +``` + +The hash function is imported as `pederhash`. It takes an array of 512 booleans, and returns an array of 256 booleans. We then use `bool_256_to_u32_8` to convert the array into a smaller array of just eight 32-bit values. + +Ideally, we'd prefer to return the hash as a single 256-bit value. However, Zokrates does not work with those values. The primary arithmetic type of Zokrates is [`field`](https://zokrates.github.io/language/types.html#field), whose value is between zero and a large (254-bit) prime number. It cannot return a single 256-bit value, so we use an array instead. + +#### The hash program {#hash-program} + +The + +#### The dig program {#dig-program} + + +### The on-chain component {#onchain} + +This is, + +#### + +### The server {#server} + +The server needs to respond to these requests: + +- New game. When a player requests to start a new game, the server creates a new map, stores it, and provides the player with the hash of the map. +- Dig. A dig request contains the hash of the map and the x and y coordinates. In response, the server may provide one of two things: + - If there is no bomb in `(x,y)` the server provides the number of bombs around that location, as well as a zero-knowledge proof that verifies that there is a map with that hash has that number of bombs around that location. + - If there is a bomb in the location the server provides a zero-knowledge proof, which sets the number of bombs to 255 (a special flag value that means "boom"), as well as the full map. The server also deletes the map as no longer needed. + +#### New game request {#new-game-request} + +When the client requests a new game, + +#### Dig request {#dig-request} + +### The client {#client} + +## Design considerations {#design} + +### Creating the verifier and prover keys (#key-creation) + +### Where to verify {#where-verification} + +### Flatten the map in TypeScript or Zokrates? {#where-flatten} + +## Conclusion: when is this the appropriate technique {#conclusion} From 15cb5aaa1a29606e932a1f6cb0f1199276257257 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sun, 21 Jul 2024 15:09:12 -0500 Subject: [PATCH 02/39] Explained the Zokrates code --- .../tutorials/secret-state/index.md | 99 +++++++++++++------ 1 file changed, 71 insertions(+), 28 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 8d54101be0b..52f726d74b8 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -115,31 +115,7 @@ We could find a JavaScript or Solidity code to implement [the best Zokrates hash #### The hash function {#hash-function} -This is the function that calculates the hash of a map: - -``` -from "hashes/pedersen/512bitBool.zok" import main as pederhash; -import "utils/casts/bool_256_to_u32_8.zok" as bool_256_to_u32_8; - -def hashMap(bool[${width+2}][${height+2}] map) -> u32[8] { - bool[512] mut map1d = [false; 512]; - u32 mut counter = 0; - - for u32 x in 0..${width+2} { - for u32 y in 0..${height+2} { - map1d[counter] = map[x][y]; - counter = counter+1; - } - } - - return bool_256_to_u32_8(pederhash(map1d)); -} -``` - -Note that the function has `${width+2}` and `${height+2}`. This is because the Zokrates programs are stored as [Template Strings](https://www.w3schools.com/js/js_string_templates.asp), so code between `${` and `}` is evaluated by JavaScript. -This way the program can be used for different map sizes. - -We'll go over this code line by line +This is the function that calculates the hash of a map. We'll go over this code line by line. ``` from "hashes/pedersen/512bitBool.zok" import main as pederhash; @@ -154,7 +130,9 @@ def hashMap(bool[${width+2}][${height+2}] map) -> u32[8] { This line starts a function definition. `hashMap` gets a single parameter called `map`, a two dimensional `bool`(ean) array. The size of the map is `width+2` by `height+2` for reasons that are explained below. -*** GOON PUT LINK HERE *** +We also use `${width+2}` and `${height+2}`. This is because the Zokrates programs are stored in this application as [Template Strings](https://www.w3schools.com/js/js_string_templates.asp). Code between `${` and `}` is evaluated by JavaScript, and this way the program can be used for different map sizes. + +The map parameter has a one location wide border all around it without any bombs, which is the reason we need to add two to the width and height. This is necessary because of the way Zokrates handles if statements, [as explained below](#why-map-border). The return value is an array of eight unsigned 32-bit values, the hash. @@ -186,7 +164,7 @@ This is for you declare a [for loop](https://zokrates.github.io/language/control } ``` -For every cell in the map, put that value in the `map1d` array and increment the counter. +For every location in the map, put that value in the `map1d` array and increment the counter. ``` return bool_256_to_u32_8(pederhash(map1d)); @@ -199,10 +177,75 @@ Ideally, we'd prefer to return the hash as a single 256-bit value. However, Zokr #### The hash program {#hash-program} -The +The server needs to call `hashMap` directly to create game identifiers. However, Zokrates can only call the `main` function on a program to start, so we create a program with a `main` that calls the hash function. + +``` +${zokratesSource.hashFragment} + +def main(bool[${width+2}][${height+2}] map) -> u32[8] { + return hashMap(map); +} +``` #### The dig program {#dig-program} +This is the heart of the zero-knowledge part of the application, where we produce the proofs that are used to verify dig results. + +``` +${zokratesSource.hashFragment} + +// The number of mines in location (x,y) +def map2mineCount(bool[${width+2}][${height+2}] map, u32 x, u32 y) -> u8 { + return if map[x+1][y+1] { 1 } else { 0 }; +} +``` + + +Zero-knowlege proofs use [arithmetic circuits](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785), which don't have an easy equivalent to an `if` statement. Instead, they use the equivalent of the [conditional operator](https://en.wikipedia.org/wiki/Ternary_conditional_operator). If `a` can be either zero or one, you can calculate `if a { b } else { c }` as `(1-a)b+ac`. + +Because of this issue, a Zokrates `if` statement always evaluates both branches. For example, if you have this code: + +``` +bool[5] arr = [false; 5]; +u32 index=10; +return if index>4 { 0 } else { arr[index] } +``` + +It will error out, because it needs to calculate `arr[10]`, even though that value will be multiplied by zero. + +This is the reason we need a one location wide border all around the map. We need to calculate the total number of mines around a location, and that means we need to see the location one row above and below, to the left and to the right, of the location where we're digging. Which means those location have to exist in the map array that Zokrates is provided. + +``` +def main(private bool[${width+2}][${height+2}] map, u32 x, u32 y) -> (u32[8], u8) { +``` + +By default Zokrates proofs include their inputs. It does no good to know there are five mines around a spot unless you actually know which spot it is (and you can't just match it to your request, because then the prover could use different values and not tell you about it). However, we need to keep the map a secret, while providing it to Zokrates. The solution is to use a `private` parameter, one that is *not* revealed by the proof. + +This opens another venue for abuse. The prover could use the correct coordinates, but create a map with any desired number of mines around the location, and possibly at the location itself. To prevent this abuse, we make the zero knowledge proof include the hash of the map, which is the game identifier. + +``` + return (hashMap(map) , +``` + +The return value here is a tuple that includes the map hash array as well as the dig result. + +``` + if map2mineCount(map, x, y) > 0 { 0xFF } else { +``` + +We use 255 as a special value in case the location itself has a bomb. + +``` + map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) + + map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) + + map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1) + } + ); +} +``` + +If the player hasn't hit a mine, add the mine counts for the area around the location and return that. + ### The on-chain component {#onchain} From d221d1b0ea3d8a9e9af2e89d3dfcf22dfef9e7ae Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sat, 27 Jul 2024 13:53:40 -0500 Subject: [PATCH 03/39] WIP --- .../tutorials/secret-state/index.md | 157 ++++++++++++++++-- 1 file changed, 145 insertions(+), 12 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 52f726d74b8..3d8ab263e81 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -107,13 +107,13 @@ To verify the integrity of this dapp, it is not enough to verify the Solidity co Clients do not *have* to run this flow, the game works without it, but without this step you can't know if the zero knowledge proofs actually prove what you need. -## The Zokrates programs {#zokrates-programs} +## Using Zokrates {#using-zokrates} ### Hashing the map {#hashing-map} We could find a JavaScript or Solidity code to implement [the best Zokrates hash function](https://zokrates.github.io/toolbox/stdlib.html#pedersen-hashes). However, then we'd have to ensure the input format is exactly the same as that calculated by Zokrates. It is easier to just use a Zokrates program to calculate the hash of a map. So we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). -#### The hash function {#hash-function} +### The hash function {#hash-function} This is the function that calculates the hash of a map. We'll go over this code line by line. @@ -175,24 +175,24 @@ The hash function is imported as `pederhash`. It takes an array of 512 booleans, Ideally, we'd prefer to return the hash as a single 256-bit value. However, Zokrates does not work with those values. The primary arithmetic type of Zokrates is [`field`](https://zokrates.github.io/language/types.html#field), whose value is between zero and a large (254-bit) prime number. It cannot return a single 256-bit value, so we use an array instead. -#### The hash program {#hash-program} +### The hash program {#hash-program} The server needs to call `hashMap` directly to create game identifiers. However, Zokrates can only call the `main` function on a program to start, so we create a program with a `main` that calls the hash function. ``` -${zokratesSource.hashFragment} +${hashFragment} def main(bool[${width+2}][${height+2}] map) -> u32[8] { return hashMap(map); } ``` -#### The dig program {#dig-program} +### The dig program {#dig-program} This is the heart of the zero-knowledge part of the application, where we produce the proofs that are used to verify dig results. ``` -${zokratesSource.hashFragment} +${hashFragment} // The number of mines in location (x,y) def map2mineCount(bool[${width+2}][${height+2}] map, u32 x, u32 y) -> u8 { @@ -224,7 +224,7 @@ By default Zokrates proofs include their inputs. It does no good to know there a This opens another venue for abuse. The prover could use the correct coordinates, but create a map with any desired number of mines around the location, and possibly at the location itself. To prevent this abuse, we make the zero knowledge proof include the hash of the map, which is the game identifier. ``` - return (hashMap(map) , + return (hashMap(map), ``` The return value here is a tuple that includes the map hash array as well as the dig result. @@ -246,14 +246,147 @@ We use 255 as a special value in case the location itself has a bomb. If the player hasn't hit a mine, add the mine counts for the area around the location and return that. +### Using Zokrates from TypeScript {#using-zokrates-from-typescript} -### The on-chain component {#onchain} +Zokrates has a command line interface, but in this program we use it in the [TypeScript code](https://zokrates.github.io/toolbox/zokrates_js.html). Using [TypeScript](https://www.typescriptlang.org/), which gets compiled to JavaScript, lets us use the same code on the server and the client. + +The library that contains the Zokrates definitions is called `zero-knowledge.ts`. + +** GOON LINK TO GITHUB GOES HERE *** + +```typescript +import { initialize as zokratesInitialize } from "zokrates-js"; +``` + +Import the [Zokrates JavaScript bindings](https://zokrates.github.io/toolbox/zokrates_js.html). We only need the [`initialize`](https://zokrates.github.io/toolbox/zokrates_js.html#initialize) function because it returns a promise that resolves to all the Zokrates definitions we need. + +```typescript +export const zkFunctions = async (width: number, height: number) : Promise => { +``` + +Similar to Zokrates itself, we also export only one function, which is also [asynchronous](https://www.w3schools.com/js/js_async.asp). When it eventually returns, it provides three functions as we'll see below. + +```typescript + const zokrates = await zokratesInitialize() +``` + +Initialize Zokrates, get everything we need from the library. + +```typescript + const hashFragment = ` + from "hashes/pedersen/512bitBool.zok" import main as pederhash; + . + . + . + } + ` + + const hashProgram = ` + ${hashFragment} + . + . + . + ` + + const digProgram = ` + ${hashFragment} + . + . + . + ` +``` + +Next we have the three Zokrates programs we saw above. + +```typescript + const digCompiled = zokrates.compile(digProgram) + const hashCompiled = zokrates.compile(hashProgram) +``` + +Here we compile those programs. We could save some resources by saving the compiled version as files and only recompiling when needed (when the map size changes), but that would be more complicated. This program is opitimized for simplicity, it's not production-level code but a tutorial. + +```typescript + // Create the keys for zero knowledge verification. + // Doing this here is simple, but it might be insecure. + // On a production system you'd want to use a setup ceremony. + // (https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). + const keySetupResults = zokrates.setup(digCompiled.program, "") + const verifierKey = keySetupResults.vk + const proverKey = keySetupResults.pk +``` + +On a production system we'd use a more complicated [setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony), but this is good enough for a demonstration. It's not a problem that the users know the prover key - they still cannot use it to prove things unless they are true. + +```typescript + const joinHashArray = function(arr: string[]): string { + return "0x"+arr.map(x => x.slice(2)).reduce((a,b) => a+b) + } + + const calculateMapHash = function(hashMe: boolean[][]): string { + return joinHashArray(JSON.parse( + zokrates.computeWitness(hashCompiled, [hashMe]).output) + ) + } +``` + +The Zokrates [hash program](hash-program) returns an array of eight 32-bit values. However, on the EVM it is easier to handle a single 256-bit value. + +```typescript + // Dig and return a zero knowledge proof of the result + // (server-side code) + const zkDig = function(map: boolean[][], x: number, y: number) : any { + if (x<0 || x>=width || y<0 || y>=height) + throw new Error("Trying to dig outside the map") + + const runResults = zokrates.computeWitness(digCompiled, + [map, `${x}`, `${y}`] + ) + + const proof = zokrates.generateProof( + digCompiled.program, + runResults.witness, + proverKey) + + return proof + } + + // Verify a dig's results (client-side code) + const verifyDig = function(hashOfMap: string, digResultProof: any) : any { + const hashInProof = "0x" + digResultProof.inputs.slice(2,-1) + .map((x: string) => x.slice(-8)).reduce((a: string, b: string) => a+b) + + // The proof used the wrong map + if (hashInProof != hashOfMap) + return false + + if (!zokrates.verify(verifierKey, digResultProof)) + return false + + return { + x: parseInt(digResultProof.inputs[0]), + y: parseInt(digResultProof.inputs[1]), + bombs: parseInt(digResultProof.inputs[digResultProof.inputs.length-1]) + } + } + + return { + zkDig, + verifyDig, + calculateMapHash + } +} + +``` + + + +## The on-chain component {#onchain} This is, #### -### The server {#server} +## The server {#server} The server needs to respond to these requests: @@ -262,13 +395,13 @@ The server needs to respond to these requests: - If there is no bomb in `(x,y)` the server provides the number of bombs around that location, as well as a zero-knowledge proof that verifies that there is a map with that hash has that number of bombs around that location. - If there is a bomb in the location the server provides a zero-knowledge proof, which sets the number of bombs to 255 (a special flag value that means "boom"), as well as the full map. The server also deletes the map as no longer needed. -#### New game request {#new-game-request} +### New game request {#new-game-request} When the client requests a new game, -#### Dig request {#dig-request} +### Dig request {#dig-request} -### The client {#client} +## The client {#client} ## Design considerations {#design} From 1e14638d7f12a1870389b79bb6ab7490d37836f8 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sat, 27 Jul 2024 14:46:43 -0500 Subject: [PATCH 04/39] WIP --- .../tutorials/secret-state/index.md | 60 +++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 3d8ab263e81..4ddf243cc56 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -321,7 +321,11 @@ On a production system we'd use a more complicated [setup ceremony](https://zokr const joinHashArray = function(arr: string[]): string { return "0x"+arr.map(x => x.slice(2)).reduce((a,b) => a+b) } +``` + +The Zokrates [hash program](hash-program) returns an array of eight 32-bit values. However, on the EVM it is easier to handle a single 256-bit value. Here we combine those values, provided as hexadecimal strings, into a single hexadecimal string. We could have done this in Zokrates, but Zokrates is a lot more resource intensive, so it's best to limit it to where it is necessary. +```typescript const calculateMapHash = function(hashMe: boolean[][]): string { return joinHashArray(JSON.parse( zokrates.computeWitness(hashCompiled, [hashMe]).output) @@ -329,19 +333,32 @@ On a production system we'd use a more complicated [setup ceremony](https://zokr } ``` -The Zokrates [hash program](hash-program) returns an array of eight 32-bit values. However, on the EVM it is easier to handle a single 256-bit value. +[`computeWitness`](https://zokrates.github.io/toolbox/zokrates_js.html#computewitnessartifacts-args-options) actually runs the Zokrates program. It returns a structure with two fields: `output`, which is the output of the program as a JSON string, and `witness`, which is the information needed to create the a zero knowledge proof of the result. Here we just need the output. ```typescript // Dig and return a zero knowledge proof of the result // (server-side code) +``` + +The zero knowledge proof includes the public inputs (`x` and `y`) and results (hash of the map and number of bombs). + +```typescript const zkDig = function(map: boolean[][], x: number, y: number) : any { if (x<0 || x>=width || y<0 || y>=height) throw new Error("Trying to dig outside the map") +``` +It's a problem to check if an index is out of bounds in Zokrates, so we do it here. + +```typescript const runResults = zokrates.computeWitness(digCompiled, [map, `${x}`, `${y}`] ) +``` + +Execute the dig program. +```typescript const proof = zokrates.generateProof( digCompiled.program, runResults.witness, @@ -349,33 +366,68 @@ The Zokrates [hash program](hash-program) returns an array of eight 32-bit value return proof } +``` + +Use [`generateProof`](https://zokrates.github.io/toolbox/zokrates_js.html#generateproofprogram-witness-provingkey-entropy) and return the proof. + +```typescript // Verify a dig's results (client-side code) const verifyDig = function(hashOfMap: string, digResultProof: any) : any { +``` + +Verify the dig results in TypeScript. We don't actually use this function, because we made a [conscious design choice](#where-verification) to verify onchain. It is provided here for completeness. + +```typescript const hashInProof = "0x" + digResultProof.inputs.slice(2,-1) .map((x: string) => x.slice(-8)).reduce((a: string, b: string) => a+b) - +``` + +The fields in the proofs (it's called `.input`, but it is both inputs and outputs) are provided as strings that contain 256-bit numbers in hexadecimal. The first two values are `x` and `y`. The last value is the number of bombs. We remove them because they aren't part of calculating the hash. Next, we remove all but the last eight hex digits (the ones that contain the 32-bit value we get from the hash function) of the hash values and put them together. + +```typescript // The proof used the wrong map if (hashInProof != hashOfMap) return false +``` + +We could have compared the hashes in the Zokrates program, but we try to limit the use of Zokrates to where it is needed to save on resources. It is a lot cheaper to do the comparison in the TypeScript. +```typescript if (!zokrates.verify(verifierKey, digResultProof)) return false +``` + +If the verification failed, this isn't a result we can trust. To reality check this function, create fake `digResultProof` values and see that the verification fails. +```typescript return { x: parseInt(digResultProof.inputs[0]), y: parseInt(digResultProof.inputs[1]), bombs: parseInt(digResultProof.inputs[digResultProof.inputs.length-1]) } } +``` + +If the proof is trustworthy, return the `x`, `y`, and number of bombs (or 255 if we blew up). + +```typescript + const solidityVerifier = zokrates.exportSolidityVerifier(verifierKey) + const formatProof = (proof: any) => zokrates.utils.formatProof(proof) +``` + +These two definitions are useful for + +```typescript return { zkDig, verifyDig, - calculateMapHash + calculateMapHash, + solidityVerifier, + formatProof } } - ``` From 772efa821b2f3d990877e9b7b2caec1fb430e798 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sat, 27 Jul 2024 14:48:02 -0500 Subject: [PATCH 05/39] WIP --- public/content/developers/tutorials/secret-state/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 4ddf243cc56..e8d231d6465 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -416,7 +416,7 @@ If the proof is trustworthy, return the `x`, `y`, and number of bombs (or 255 if const formatProof = (proof: any) => zokrates.utils.formatProof(proof) ``` -These two definitions are useful for +These two definitions are used for verifiying Zokrates proofs on the blockchain. ```typescript From 73377403ef4b0995b56256c9b9c6ddd67b45d92c Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sat, 27 Jul 2024 14:49:42 -0500 Subject: [PATCH 06/39] WIP --- public/content/developers/tutorials/secret-state/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index e8d231d6465..ef40f7f26d8 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -201,6 +201,7 @@ def map2mineCount(bool[${width+2}][${height+2}] map, u32 x, u32 y) -> u8 { ``` + Zero-knowlege proofs use [arithmetic circuits](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785), which don't have an easy equivalent to an `if` statement. Instead, they use the equivalent of the [conditional operator](https://en.wikipedia.org/wiki/Ternary_conditional_operator). If `a` can be either zero or one, you can calculate `if a { b } else { c }` as `(1-a)b+ac`. Because of this issue, a Zokrates `if` statement always evaluates both branches. For example, if you have this code: From f18d37ee512341d9e9cc6c5f3938818e50b1f9d5 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sun, 4 Aug 2024 21:21:29 -0500 Subject: [PATCH 07/39] WIP --- .../tutorials/secret-state/index.md | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index ef40f7f26d8..a05e72fe8e8 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -2,7 +2,7 @@ title: Using zero-knowledge for a secret state description: Onchain games are limited because they cannot keep any hidden information. After reading this tutorial, a reader will be able to combine zero-knowledge proofs and server components to create verifiable games with a secret state, offchain, component. The technique to do this will be demonstrated by creating a minesweeper game. author: Ori Pomerantz -tags: ["server", "offchain", "centralized", "zero-knowledge", "zokrates"] +tags: ["server", "offchain", "centralized", "zero-knowledge", "zokrates", "mud"] skill: intermediate lang: en published: 2024-08-15 @@ -18,7 +18,7 @@ After reading this article you will know how to create this kind of secret state * [Typescript](https://www.typescriptlang.org/) for both the server and the client. * [Node](https://nodejs.org/en) for the server. * [Viem](https://viem.sh/) for communication with the Blockchain. -* [MUD](https://mud.dev/) for on-chain data management. +* [MUD](https://mud.dev/) for on-chain data management. Proper disclosure: While I'm writing this on my own time for Ethereum Foundation, my day job is working for [Lattice](https://lattice.xyz/) which makes this framework. * [React](https://react.dev/) for the user interface of the client. * [Vite](https://vitejs.dev/) for serving the client code. @@ -36,11 +36,15 @@ We need several tables in the database to implement the functionality we need. - `height`: The height of a minefield - `width`: The width of a minefield - `numberOfBombs`: The number of bombs in each minefield - - `verifierKey`: The verifier key used to verify zero knowledge proofs, [see below](#creating-the-verifier-and-prover-keys-key-creation) to learn how it is created -2. `PlayerGame`: The key is the player's address. The data is a 32 byte value that is the hash of the map the player is playing on (the game identifier). -3. `DigNumber`: The key is the game identifier, and the value is the number of locations that have been dug by the player (without exploding). -4. `WinsAndLoses`: The key is the player's address. The data is two fields, one for wins and the other for loses. -5. `Map`: The key is a tuple of three values: + + The verifier key used to verify zero knowledge proofs is also part of the configuration, but because of the way the Solidity-Zokrates interface works it is inside a separate contract. + +2. `PlayerGame`: The key is the player's address. The data is: + - `gameId`: 32 byte value that is the hash of the map the player is playing on (the game identifier). + - `win`: a boolean that is whether the player won the game. + - `lose`: a boolean that is whether the player lost the game. + - `digNumber`: the number of successful digs in the game. +3. `Map`: The key is a tuple of three values: - The game identifier - x - y @@ -48,9 +52,9 @@ We need several tables in the database to implement the functionality we need. In addition, communication between the client and server happens through the on-chain component. This is also implemented using tables, but those are [off-chain tables](https://mud.dev/store/tables#types-of-tables), meaning the data is only available off-chain in the form of log events. -6. `PendingGame`: Unserviced requests to start a new game. -7. `PendingDig`: Unserviced requests to dig in a specific place in a specific game. -8. `PendingDigResults`: Responses to dig requests. These include the proof of the result, and optionally also the map (if the result is that the player blew up and the game is over). +4. `PendingGame`: Unserviced requests to start a new game. +5. `PendingDig`: Unserviced requests to dig in a specific place in a specific game. +6. `PendingDigResults`: Responses to dig requests. These include the proof of the result, and optionally also the map (if the result is that the player blew up and the game is over). ### Execution and data flows {#execution-data-flows} @@ -82,8 +86,8 @@ These flows coordinate execution between the client, the on-chain component, and 6. If the game is over (either because the user found a bomb, or because the user dug in `width*height - bombNumber` places), the server deletes the game from `gamesInProgress`. 7. The server sends the on-chain component the proof, and optionally (if game over) the map. 8. The on-chain component verifies the proof. The process only continues if the proof verifies. -9. The on-chain component checks if it's game over, either because `DigNumber` is equal to `width*height - numberOfBombs` or because the dig found a bomb, delete the game from `PlayerGame` and update `WinsAndLosses`. -10. The on-chain component updates `Map` with the new information. This change is automatically synchronized to the client by MUD. The on-chain component also increments `DigNumber`. +9. The on-chain component checks if it's game over, either because `digNumber` is equal to `width*height - numberOfBombs` or because the dig found a bomb, note that fact in `PlayerGame`. +10. The on-chain component updates `Map` with the new information. This change is automatically synchronized to the client by MUD. The on-chain component also increments `PlayerGame`'s `digNumber`. 11. The client displays the new information to the player. 12. If the game is over, the client informs the player of that fact. @@ -431,7 +435,7 @@ These two definitions are used for verifiying Zokrates proofs on the blockchain. } ``` - +Finally, return everything that other code might need. ## The on-chain component {#onchain} From bd931949c8ca640698e6c06297c0f9dbd54efb86 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sun, 11 Aug 2024 22:31:41 -0500 Subject: [PATCH 08/39] WIP --- .../tutorials/secret-state/index.md | 158 ++++++++---------- 1 file changed, 73 insertions(+), 85 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index a05e72fe8e8..3d4f473726f 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -10,9 +10,9 @@ published: 2024-08-15 *There are no secrets on the blockchain*. Everything that is posted on the blockchain is open to everybody to read. This is necessary, because the blockchain is based on anybody being able to verify it. However, games often rely on secret state. For example, the game of [minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)) makes absolutely no sense if you can just go on a blockchain explorer and see the map. -The simplest solution is to use a [server component](/developers/tutorials/server-components/) to hold the secret state. However, we don't want to trust that server component's honesty. Luckily, we don't need to. We can provide a hash of the state, and use provide [zero-knowledge proofs](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) to ensure that the state used to calculate the result of a move is the correct one. +The simplest solution is to use a [server component](/developers/tutorials/server-components/) to hold the secret state. However, we don't want to trust that server component's honesty. Luckily, we don't need to. The server can provide a hash of the state, and use [zero-knowledge proofs](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) to prove that the state used to calculate the result of a move is the correct one. -After reading this article you will know how to create this kind of secret state holding server, as well as an on-chain component for communication between the two. The main tools we use will be: +After reading this article you will know how to create this kind of secret state holding server, a client for showing the state, and an on-chain component for communication between the two. The main tools we use will be: * [Zokrates](https://zokrates.github.io/) for zero-knowledge proofs and their verification. * [Typescript](https://www.typescriptlang.org/) for both the server and the client. @@ -48,13 +48,12 @@ We need several tables in the database to implement the functionality we need. - The game identifier - x - y - The value is a single number. It's 255 if a bomb was detected. Otherwise, it is the number of bombs around that location plus one. We cannot use just the number of bombs, because by default all storage in the EVM and all row values in MUD are zero. We need to distinguish between "the player didn't dig here yet" and "the player dug here, and found there are zero bombs around". + The value is a single number. It's 255 if a bomb was detected. Otherwise, it is the number of bombs around that location plus one. We cannot use just the number of bombs, because by default all storage in the EVM and all row values in MUD are zero. We need to distinguish between "the player haven;t dug here yet" and "the player dug here, and found there are zero bombs around". In addition, communication between the client and server happens through the on-chain component. This is also implemented using tables, but those are [off-chain tables](https://mud.dev/store/tables#types-of-tables), meaning the data is only available off-chain in the form of log events. 4. `PendingGame`: Unserviced requests to start a new game. 5. `PendingDig`: Unserviced requests to dig in a specific place in a specific game. -6. `PendingDigResults`: Responses to dig requests. These include the proof of the result, and optionally also the map (if the result is that the player blew up and the game is over). ### Execution and data flows {#execution-data-flows} @@ -115,38 +114,40 @@ Clients do not *have* to run this flow, the game works without it, but without t ### Hashing the map {#hashing-map} -We could find a JavaScript or Solidity code to implement [the best Zokrates hash function](https://zokrates.github.io/toolbox/stdlib.html#pedersen-hashes). However, then we'd have to ensure the input format is exactly the same as that calculated by Zokrates. It is easier to just use a Zokrates program to calculate the hash of a map. So we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). +We can use [this JavaScript code](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-Onchain/tree/solutions/exercise) to implement [Poseidon](https://www.poseidon-hash.info), the Zokrates hash function we use. However, while this would be faster, it would also be more complicated than just using the Zokrates hash function twice. This is a tutorial, and so the code is optimized for simplicity, not for performance. Therefore, we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). + ### The hash function {#hash-function} This is the function that calculates the hash of a map. We'll go over this code line by line. ``` -from "hashes/pedersen/512bitBool.zok" import main as pederhash; -import "utils/casts/bool_256_to_u32_8.zok" as bool_256_to_u32_8; +import "hashes/poseidon/poseidon.zok" as poseidon; +import "utils/pack/bool/pack128.zok" as pack128; ``` -These two lines import two functions from the [Zokrates standard library](https://zokrates.github.io/toolbox/stdlib.html). [The first function](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/hashes/pedersen/512bitBool.zok) is a [Pedersen hash](https://iden3-docs.readthedocs.io/en/latest/_downloads/4b929e0f96aef77b75bb5cfc0f832151/Pedersen-Hash.pdf).It takes 512 bits of input, and returns a 256 bit long hash. [The second function](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/utils/casts/bool_256_to_u32_8.zok) lets us cast the 256-bit hash value to an array of eight 32-bit values. +These two lines import two functions from the [Zokrates standard library](https://zokrates.github.io/toolbox/stdlib.html). [The first function](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/hashes/poseidon/poseidon.zok) is a [Poseidon hash](https://www.poseidon-hash.info/). It takes an array of [`field` elements](https://zokrates.github.io/language/types.html#field) and returns a `field`. + +The field element in Zokrates is typically less than 256 bits long, but not by much. To simplify the code, we restrict the map to be up to 512 bits, and hash an array of four fields, and in each field we use only 128 bits. [The `pack128` function](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/utils/pack/bool/pack128.zok) changes an array of 128 bits into a `field` for this purpose. + ``` -def hashMap(bool[${width+2}][${height+2}] map) -> u32[8] { + def hashMap(bool[${width+2}][${height+2}] map) -> field { ``` -This line starts a function definition. `hashMap` gets a single parameter called `map`, a two dimensional `bool`(ean) array. The size of the map is `width+2` by `height+2` for reasons that are explained below. +This line starts a function definition. `hashMap` gets a single parameter called `map`, a two dimensional `bool`(ean) array. The size of the map is `width+2` by `height+2` for reasons that are [explained below](#why-map-border). -We also use `${width+2}` and `${height+2}`. This is because the Zokrates programs are stored in this application as [Template Strings](https://www.w3schools.com/js/js_string_templates.asp). Code between `${` and `}` is evaluated by JavaScript, and this way the program can be used for different map sizes. +We can use `${width+2}` and `${height+2}` because the Zokrates programs are stored in this application as [Template Strings](https://www.w3schools.com/js/js_string_templates.asp). Code between `${` and `}` is evaluated by JavaScript, and this way the program can be used for different map sizes. The map parameter has a one location wide border all around it without any bombs, which is the reason we need to add two to the width and height. -The map parameter has a one location wide border all around it without any bombs, which is the reason we need to add two to the width and height. This is necessary because of the way Zokrates handles if statements, [as explained below](#why-map-border). - -The return value is an array of eight unsigned 32-bit values, the hash. +The return value is a `field` that contains the hash. ``` bool[512] mut map1d = [false; 512]; ``` -The map is two-dimensional. However, the input to the hash function needs to be a 512-value boolean array. Here we define a variable for it. By default Zokrates variables are constants, but we need to assign values to this array in a loop. +The map is two-dimensional. However, the `pack128` function does not work with two-dimensional arrays. So we first flatten the map into a 512-byte array, using `map1d`. By default Zokrates variables are constants, but we need to assign values to this array in a loop, so we define it as [`mut`](https://zokrates.github.io/language/variables.html#mutability). -We need to initialize the array, Zokrates doesn't have `undefined`. The `[false; 512]` expression means [an array of 512 `false` values](https://zokrates.github.io/language/types.html#declaration-and-initialization). +We need to initialize the array because Zokrates doesn't have `undefined`. The `[false; 512]` expression means [an array of 512 `false` values](https://zokrates.github.io/language/types.html#declaration-and-initialization). ``` u32 mut counter = 0; @@ -158,7 +159,7 @@ We also need a counter to distinguish between the bits we already filled in `map for u32 x in 0..${width+2} { ``` -This is for you declare a [for loop](https://zokrates.github.io/language/control_flow.html#for-loops) in Zokrates. A Zokrates for loop has to have fixed bounds, because while it appears to be a loop, the compiler actually "unrolls" it. The expression `${width+2}` is a compile time constant because `width` is set by the TypeScript code before it calls the compiler. +This is how you declare a [`for` loop](https://zokrates.github.io/language/control_flow.html#for-loops) in Zokrates. A Zokrates `for` loop has to have fixed bounds, because while it appears to be a loop, the compiler actually "unrolls" it. The expression `${width+2}` is a compile time constant because `width` is set by the TypeScript code before it calls the compiler. ``` for u32 y in 0..${height+2} { @@ -171,13 +172,23 @@ This is for you declare a [for loop](https://zokrates.github.io/language/control For every location in the map, put that value in the `map1d` array and increment the counter. ``` - return bool_256_to_u32_8(pederhash(map1d)); + field[4] hashMe = [ + pack128(map1d[0..128]), + pack128(map1d[128..256]), + pack128(map1d[256..384]), + pack128(map1d[384..512]) + ]; +``` + +The `pack128` to create an array of four `field` values from `map1d`. + +``` + return poseidon(hashMe); } ``` -The hash function is imported as `pederhash`. It takes an array of 512 booleans, and returns an array of 256 booleans. We then use `bool_256_to_u32_8` to convert the array into a smaller array of just eight 32-bit values. +And use `poseidon` to convert this array to a hash. -Ideally, we'd prefer to return the hash as a single 256-bit value. However, Zokrates does not work with those values. The primary arithmetic type of Zokrates is [`field`](https://zokrates.github.io/language/types.html#field), whose value is between zero and a large (254-bit) prime number. It cannot return a single 256-bit value, so we use an array instead. ### The hash program {#hash-program} @@ -186,8 +197,8 @@ The server needs to call `hashMap` directly to create game identifiers. However, ``` ${hashFragment} -def main(bool[${width+2}][${height+2}] map) -> u32[8] { - return hashMap(map); +def main(bool[${width+2}][${height+2}] map) -> field { + return hashMap(map); } ``` @@ -206,9 +217,9 @@ def map2mineCount(bool[${width+2}][${height+2}] map, u32 x, u32 y) -> u8 { -Zero-knowlege proofs use [arithmetic circuits](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785), which don't have an easy equivalent to an `if` statement. Instead, they use the equivalent of the [conditional operator](https://en.wikipedia.org/wiki/Ternary_conditional_operator). If `a` can be either zero or one, you can calculate `if a { b } else { c }` as `(1-a)b+ac`. +Zero-knowlege proofs use [arithmetic circuits](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785), which don't have an easy equivalent to an `if` statement. Instead, they use the equivalent of the [conditional operator](https://en.wikipedia.org/wiki/Ternary_conditional_operator). If `a` can be either zero or one, you can calculate `if a { b } else { c }` as `ab+(1-a)c`. -Because of this issue, a Zokrates `if` statement always evaluates both branches. For example, if you have this code: +Because of this, a Zokrates `if` statement always evaluates both branches. For example, if you have this code: ``` bool[5] arr = [false; 5]; @@ -216,17 +227,17 @@ u32 index=10; return if index>4 { 0 } else { arr[index] } ``` -It will error out, because it needs to calculate `arr[10]`, even though that value will be multiplied by zero. +It will error out, because it needs to calculate `arr[10]`, even though that value will be later multiplied by zero. This is the reason we need a one location wide border all around the map. We need to calculate the total number of mines around a location, and that means we need to see the location one row above and below, to the left and to the right, of the location where we're digging. Which means those location have to exist in the map array that Zokrates is provided. ``` -def main(private bool[${width+2}][${height+2}] map, u32 x, u32 y) -> (u32[8], u8) { +def main(private bool[${width+2}][${height+2}] map, u32 x, u32 y) -> (field, u8) { ``` By default Zokrates proofs include their inputs. It does no good to know there are five mines around a spot unless you actually know which spot it is (and you can't just match it to your request, because then the prover could use different values and not tell you about it). However, we need to keep the map a secret, while providing it to Zokrates. The solution is to use a `private` parameter, one that is *not* revealed by the proof. -This opens another venue for abuse. The prover could use the correct coordinates, but create a map with any desired number of mines around the location, and possibly at the location itself. To prevent this abuse, we make the zero knowledge proof include the hash of the map, which is the game identifier. +This opens another venue for abuse. The prover could use the correct coordinates, but create a map with any any number of mines around the location, and possibly at the location itself. To prevent this abuse, we make the zero knowledge proof include the hash of the map, which is the game identifier. ``` return (hashMap(map), @@ -255,9 +266,7 @@ If the player hasn't hit a mine, add the mine counts for the area around the loc Zokrates has a command line interface, but in this program we use it in the [TypeScript code](https://zokrates.github.io/toolbox/zokrates_js.html). Using [TypeScript](https://www.typescriptlang.org/), which gets compiled to JavaScript, lets us use the same code on the server and the client. -The library that contains the Zokrates definitions is called `zero-knowledge.ts`. - -** GOON LINK TO GITHUB GOES HERE *** +The library that contains the Zokrates definitions is called [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts). ```typescript import { initialize as zokratesInitialize } from "zokrates-js"; @@ -269,7 +278,7 @@ Import the [Zokrates JavaScript bindings](https://zokrates.github.io/toolbox/zok export const zkFunctions = async (width: number, height: number) : Promise => { ``` -Similar to Zokrates itself, we also export only one function, which is also [asynchronous](https://www.w3schools.com/js/js_async.asp). When it eventually returns, it provides three functions as we'll see below. +Similar to Zokrates itself, we also export only one function, which is also [asynchronous](https://www.w3schools.com/js/js_async.asp). When it eventually returns, it provides several functions as we'll see below. ```typescript const zokrates = await zokratesInitialize() @@ -279,7 +288,8 @@ Initialize Zokrates, get everything we need from the library. ```typescript const hashFragment = ` - from "hashes/pedersen/512bitBool.zok" import main as pederhash; + import "utils/pack/bool/pack128.zok" as pack128; + import "hashes/poseidon/poseidon.zok" as poseidon; . . . @@ -301,18 +311,17 @@ Initialize Zokrates, get everything we need from the library. ` ``` -Next we have the three Zokrates programs we saw above. +Next we have the hash function and two Zokrates programs we saw above. ```typescript const digCompiled = zokrates.compile(digProgram) const hashCompiled = zokrates.compile(hashProgram) ``` -Here we compile those programs. We could save some resources by saving the compiled version as files and only recompiling when needed (when the map size changes), but that would be more complicated. This program is opitimized for simplicity, it's not production-level code but a tutorial. +Here we compile those programs. ```typescript // Create the keys for zero knowledge verification. - // Doing this here is simple, but it might be insecure. // On a production system you'd want to use a setup ceremony. // (https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). const keySetupResults = zokrates.setup(digCompiled.program, "") @@ -320,26 +329,23 @@ Here we compile those programs. We could save some resources by saving the compi const proverKey = keySetupResults.pk ``` -On a production system we'd use a more complicated [setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony), but this is good enough for a demonstration. It's not a problem that the users know the prover key - they still cannot use it to prove things unless they are true. +On a production system we'd use a more complicated [setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony), but this is good enough for a demonstration. It's not a problem that the users know the prover key - they still cannot use it to prove things unless they are true. Because we specify the entropy (the second parameter, `""`), the results are always going to be the same. -```typescript - const joinHashArray = function(arr: string[]): string { - return "0x"+arr.map(x => x.slice(2)).reduce((a,b) => a+b) - } -``` +**Note:** Compilation of Zokrates programs and key creation are slow processes. There is no need to repeat them every time, just when map size changes. On a production system you'd do them once, and then store the output. The only reason I am not doing it here is for the sake of simplicity. -The Zokrates [hash program](hash-program) returns an array of eight 32-bit values. However, on the EVM it is easier to handle a single 256-bit value. Here we combine those values, provided as hexadecimal strings, into a single hexadecimal string. We could have done this in Zokrates, but Zokrates is a lot more resource intensive, so it's best to limit it to where it is necessary. ```typescript const calculateMapHash = function(hashMe: boolean[][]): string { - return joinHashArray(JSON.parse( - zokrates.computeWitness(hashCompiled, [hashMe]).output) - ) + return "0x" + + BigInt(zokrates.computeWitness(hashCompiled, [hashMe]).output.slice(1,-1)) + .toString(16).padStart(64, "0") } ``` [`computeWitness`](https://zokrates.github.io/toolbox/zokrates_js.html#computewitnessartifacts-args-options) actually runs the Zokrates program. It returns a structure with two fields: `output`, which is the output of the program as a JSON string, and `witness`, which is the information needed to create the a zero knowledge proof of the result. Here we just need the output. +The output is a string of the form `"31337"`, a decimal number enclosed in quotation marks. But the output we need for `viem` is a hexadecimal number of the form `0x60A7`. So we use `.slice(1,-1)` to remove the quotation marks and then `BigInt` to run the remaining string, which is a decimal number, to a [`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt). `.toString(16)` converts this `BigInt` into a hexadecimal string, and `"0x"+` adds the marker for hexadecimal numbers. + ```typescript // Dig and return a zero knowledge proof of the result // (server-side code) @@ -375,49 +381,16 @@ Execute the dig program. Use [`generateProof`](https://zokrates.github.io/toolbox/zokrates_js.html#generateproofprogram-witness-provingkey-entropy) and return the proof. - -```typescript - // Verify a dig's results (client-side code) - const verifyDig = function(hashOfMap: string, digResultProof: any) : any { -``` - -Verify the dig results in TypeScript. We don't actually use this function, because we made a [conscious design choice](#where-verification) to verify onchain. It is provided here for completeness. - -```typescript - const hashInProof = "0x" + digResultProof.inputs.slice(2,-1) - .map((x: string) => x.slice(-8)).reduce((a: string, b: string) => a+b) -``` - -The fields in the proofs (it's called `.input`, but it is both inputs and outputs) are provided as strings that contain 256-bit numbers in hexadecimal. The first two values are `x` and `y`. The last value is the number of bombs. We remove them because they aren't part of calculating the hash. Next, we remove all but the last eight hex digits (the ones that contain the 32-bit value we get from the hash function) of the hash values and put them together. - -```typescript - // The proof used the wrong map - if (hashInProof != hashOfMap) - return false -``` - -We could have compared the hashes in the Zokrates program, but we try to limit the use of Zokrates to where it is needed to save on resources. It is a lot cheaper to do the comparison in the TypeScript. - ```typescript - if (!zokrates.verify(verifierKey, digResultProof)) - return false + const solidityVerifier = ` + // Map size: ${width} x ${height} + \n${zokrates.exportSolidityVerifier(verifierKey)} + ` ``` -If the verification failed, this isn't a result we can trust. To reality check this function, create fake `digResultProof` values and see that the verification fails. - -```typescript - return { - x: parseInt(digResultProof.inputs[0]), - y: parseInt(digResultProof.inputs[1]), - bombs: parseInt(digResultProof.inputs[digResultProof.inputs.length-1]) - } - } -``` +A Solidity verifier. -If the proof is trustworthy, return the `x`, `y`, and number of bombs (or 255 if we blew up). - -```typescript - const solidityVerifier = zokrates.exportSolidityVerifier(verifierKey) +```typescript const formatProof = (proof: any) => zokrates.utils.formatProof(proof) ``` @@ -427,7 +400,6 @@ These two definitions are used for verifiying Zokrates proofs on the blockchain. ```typescript return { zkDig, - verifyDig, calculateMapHash, solidityVerifier, formatProof @@ -437,6 +409,7 @@ These two definitions are used for verifiying Zokrates proofs on the blockchain. Finally, return everything that other code might need. + ## The on-chain component {#onchain} This is, @@ -462,6 +435,12 @@ When the client requests a new game, ## Design considerations {#design} +### Why zero-knowlege {#why-zero-knowledge} + +### Why Zokrates? {#why-zokrates} + +As opposed to other systems like circum + ### Creating the verifier and prover keys (#key-creation) ### Where to verify {#where-verification} @@ -469,3 +448,12 @@ When the client requests a new game, ### Flatten the map in TypeScript or Zokrates? {#where-flatten} ## Conclusion: when is this the appropriate technique {#conclusion} + +- Long running game +- Some centralization acceptable + +### Acknowledgements {#acknowledgements} + +- Alvaro Alonso read a draft of this article and cleared up some of my misunderstandings about Zokrates. + +Any remaining errors are my responsibility. \ No newline at end of file From 3a0a14c9e702cd5da3bd90e8028e5fb46ee604a2 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sat, 17 Aug 2024 14:10:59 -0500 Subject: [PATCH 09/39] gWIP --- .../developers/tutorials/secret-state/index.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 3d4f473726f..faa4e876920 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -388,28 +388,19 @@ Use [`generateProof`](https://zokrates.github.io/toolbox/zokrates_js.html#genera ` ``` -A Solidity verifier. - -```typescript - const formatProof = (proof: any) => zokrates.utils.formatProof(proof) -``` - -These two definitions are used for verifiying Zokrates proofs on the blockchain. - +A Solidity verifier, which gets deployed to the blockchain. ```typescript return { zkDig, calculateMapHash, solidityVerifier, - formatProof } } ``` Finally, return everything that other code might need. - ## The on-chain component {#onchain} This is, From 8239dec34aa59a5ab502c80f0ce28472703c6a77 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 20 Aug 2024 20:47:50 -0500 Subject: [PATCH 10/39] WIP --- .../tutorials/secret-state/index.md | 191 ++++++++++-------- 1 file changed, 112 insertions(+), 79 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index faa4e876920..d9b012ff95f 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -28,86 +28,134 @@ After reading this article you will know how to create this kind of secret state This application is written using [MUD](https://mud.dev/), a framework that lets us store data onchain using a [key-value database](https://aws.amazon.com/nosql/key-value/) and synchronize that data automatically with off-chain components. In addition to synchronization, MUD makes it easy to provide access control, and for other users to [extend](https://mud.dev/guides/extending-a-world) our application. +### Running the minesweeper example {#running-minesweeper-example} + +To run the minesweeper example: + +1. Make sure you [have the prerequisites installed](https://mud.dev/quickstart#prerequisites): [Node](https://mud.dev/quickstart#prerequisites), [Foundry](https://book.getfoundry.sh/getting-started/installation), [`git`](https://git-scm.com/downloads), and [`pnpm`](https://git-scm.com/downloads). + +2. Clone the repository. + + ```sh copy + git clone https://github.com/qbzzt/20240901-secret-state.git + ``` + +3. Install the packages. + + ```sh copy + cd 20240901-secret-state/ + pnpm install + ``` + +4. Start the program (including an [anvil](https://book.getfoundry.sh/anvil/) blockchain) and wait. + + ```sh copy + pnpm dev + ``` + + Note that the startup takes a long time. To see the progress, first use the down arrow to scroll to the *contracts* tab to see the MUD contracts being deployed. When you get the message *Waiting for file changes…*, the contracts are deployed and further progress will happen in the *server* tab. There, you wait until you get the message *Verifier address: 0x....*. + +5. Now you can browse to [the client](http://localhost:3000), click **New Game** and start playing. + + ### Tables {#tables} -We need several tables in the database to implement the functionality we need. +We need [several tables](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts) on-chain. -1. `Configuration`: This table is a singleton, it has no key. It is used to hold game configuration information: - - `height`: The height of a minefield - - `width`: The width of a minefield - - `numberOfBombs`: The number of bombs in each minefield +- `Configuration`: This table is a singleton, it has no key. It is used to hold game configuration information: + - `height`: The height of a minefield + - `width`: The width of a minefield + - `numberOfBombs`: The number of bombs in each minefield - The verifier key used to verify zero knowledge proofs is also part of the configuration, but because of the way the Solidity-Zokrates interface works it is inside a separate contract. +- `VerifierAddress`: This table is also a singleton. It is used to hold one part of the configuration, the address of the verifier contract (`verifier`). We could have put this information in the `Configuration` table, but it is set by a different component, the server, so it's easier to put it in a separate table. -2. `PlayerGame`: The key is the player's address. The data is: - - `gameId`: 32 byte value that is the hash of the map the player is playing on (the game identifier). - - `win`: a boolean that is whether the player won the game. - - `lose`: a boolean that is whether the player lost the game. - - `digNumber`: the number of successful digs in the game. -3. `Map`: The key is a tuple of three values: - - The game identifier - - x - - y - The value is a single number. It's 255 if a bomb was detected. Otherwise, it is the number of bombs around that location plus one. We cannot use just the number of bombs, because by default all storage in the EVM and all row values in MUD are zero. We need to distinguish between "the player haven;t dug here yet" and "the player dug here, and found there are zero bombs around". +- `PlayerGame`: The key is the player's address. The data is: + - `gameId`: 32 byte value that is the hash of the map the player is playing on (the game identifier). + - `win`: a boolean that is whether the player won the game. + - `lose`: a boolean that is whether the player lost the game. + - `digNumber`: the number of successful digs in the game. -In addition, communication between the client and server happens through the on-chain component. This is also implemented using tables, but those are [off-chain tables](https://mud.dev/store/tables#types-of-tables), meaning the data is only available off-chain in the form of log events. +- `GamePlayer`: This table holds the reverse mapping, from `gameId` to player address. -4. `PendingGame`: Unserviced requests to start a new game. -5. `PendingDig`: Unserviced requests to dig in a specific place in a specific game. +- `Map`: The key is a tuple of three values: + - The game identifier + - x + - y + + The value is a single number. It's 255 if a bomb was detected. Otherwise, it is the number of bombs around that location plus one. We cannot just use the number of bombs, because by default all storage in the EVM and all row values in MUD are zero. We need to distinguish between "the player haven't dug here yet" and "the player dug here, and found there are zero bombs around". + +In addition, communication between the client and server happens through the on-chain component. This is also implemented using tables. + +- `PendingGame`: Unserviced requests to start a new game. +- `PendingDig`: Unserviced requests to dig in a specific place in a specific game. This is an [offchain table](https://mud.dev/store/tables#types-of-tables), meaning that it does not get written to EVM storage, it's only readable offline using events. ### Execution and data flows {#execution-data-flows} These flows coordinate execution between the client, the on-chain component, and the server. +#### Initialization {#initialization-flow} + +When you run `pnpm dev`, these steps happen: + +1. [`mprocs`](https://github.com/pvolok/mprocs) runs four components: + - [Anvil](https://book.getfoundry.sh/anvil/), which runs a local blockchain + - [Contracts](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/contracts), which compiles (if needed) and deploys the contracts for MUD + - [Client](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/client), which runs [Vite](https://vitejs.dev/) to serve the UI and client code to web browsers. + - [Server](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/server), which performs the server actions + +2. After the `contracts` package deploys the MUD contracts and then runs [the `PostDeploy.s.sol` script](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol). This script sets the configuration. The code from github specified [a 10x5 minefield with eight mines in it](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol#L23). + +3. [The server](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts) starts by [setting up MUD](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L6). Among other things, this activates data synchronization, so that a copy of the relevant tables exists in the server's memory. + +4. The server subscribes a function to be executed [when the `Configuration` table changes](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L23). [This function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L24-L168) is called when `PostDeploy.s.sol` executes. + +5. When the server initialization function has the configuration, [it calls `zkFunctions`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L34-L35) to initialize [the zero-knowledge part of the server](#using-zokrates-from-typescript). This cannot happen until we get the configuration because the zero-knowledge functions have to have the width and height of the minefield as constants. + +6. After the zero-knowledge part of the server is initialized, the next step is to [deploy the zero-knowledge verification contract to the blockchain](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L42-L53) and set the verified address in MUD. + +7. Finally, we subscribe to updates so we'll see when a player requests either [to start a new game](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71) or to [dig in an existing game](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73-L108). + + #### New game {#new-game-flow} -1. The client sends a new game request to the on-chain component. -2. The on-chain component adds the client's address to the `PendingGame` table. -3. The server detects that there is a new entry in the `PendingGame` table. Ultimately this is done through [events](/developers/tutorials/logging-events-smart-contracts/), but MUD abstracts it for us. -4. The server creates a new game, calculates the map hash for the game identifier, and adds this information to `gamesInProgress`. -5. The server sends the on-chain component the hash of the game identifier and the identity of the user whose request has been serviced. -6. The on-chain component adds the game information to `PlayerGame`. -7. The client identifies that its address was added to the `PlayerGame` table, and starts displaying the board to the player. +This is what happens when the user requests a new game. +1. If there is no game in progress, or there is one but with a gameId of zero, the client displays a [new game button](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175). When the user presses this button, [React runs the `newGame` function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L96). -#### Dig {#dig-flow} +2. [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L43-L46) is a `System` call. In MUD all calls are routed through the `World`, and in most cases you call `__`. In this case, the call is to `app__newGame`, which MUD then routes to [`newGame` in `GameSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L16-L22). -1. The client sends a dig request, comprised of the game identifier and the x and y coordinates of the location to dig, to the on-chain component. -2. The on-chain component verifies the dig request is legitimate: - - The client is the player for this game according to `PlayerGame`. - - The location has not been dug already (according to `Map`). -3. The on-chain component adds this entry to `PendingDig` -4. The server detects the new entry in `PendingDig` and retrieves the map from `gamesInProgress`. -5. The server calls the Zokrates library with the map and the dig location. This library then returns a proof with the following values: - - The x and y coordinates of the dig location - - Hash of the map, which is the game identifier - - Either 255 if there is a bomb in the location, or the number of bombs in an eight location area around the location if there isn't. -6. If the game is over (either because the user found a bomb, or because the user dug in `width*height - bombNumber` places), the server deletes the game from `gamesInProgress`. -7. The server sends the on-chain component the proof, and optionally (if game over) the map. -8. The on-chain component verifies the proof. The process only continues if the proof verifies. -9. The on-chain component checks if it's game over, either because `digNumber` is equal to `width*height - numberOfBombs` or because the dig found a bomb, note that fact in `PlayerGame`. -10. The on-chain component updates `Map` with the new information. This change is automatically synchronized to the client by MUD. The on-chain component also increments `PlayerGame`'s `digNumber`. -11. The client displays the new information to the player. -12. If the game is over, the client informs the player of that fact. +3. The on-chain function checks that the player does not have a game in progress, and if there isn't one [adds the request to the `PendingGame` table](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L21). +4. The server detects the change in `PendingGame` and [runs the subscribed function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71). This function calls [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L110-L114), which in turn calls [`createGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L116-L144). -#### Verify setup artifacts {#setup-artifact-flow} +5. The first thing `createGame` does is [create a random map with the appropriate number of mines](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L120-L135). Then, it calls [`makeMapBorders`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L147-L166) to create a map with blank borders, which is necessary for Zokrates. Finally, `createGame` calls [`calculateMapHash`](#calculateMapHash), to get the hash of the map, which is used as the game ID. + +6. The `newGame` function adds the new game to `gamesInProgress`. + +7. The last thing the server does is call [`app__newGameResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L38-L43), which is on-chain. This function is in a different `System`, [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol), to enable access control. Access control is defined in the [MUD configuration file](https://mud.dev/config), [`mud.config.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts#L67-L72). + + The access list only allows a single address to call the `System`. This restricts access to the server functions to a single address, so nobody can impersonate the server. + +8. The on-chain component updates the relevant tables: + - Create the game in `PlayerGame`. + - Set the reverse mapping in `GamePlayer`. + - Remove the request from `PendingGame`. -To verify the integrity of this dapp, it is not enough to verify the Solidity code. Another attack vector is the Zokrates program. This flow can be used by a client to verify that the Zokrates program is the one expected. +9. The server identifies the change in `PendingGame`, but does not do anything because [`wantsGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L58-L60) is false. + +10. On the client [`gameRecord`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L143-L148) is set to the `PlayerGame` entry for the player's address. When `PlayerGame` changes, `gameRecord` changes too. + +11. If there is a value in `gameRecord`, and the game hasn't been won or lost, the client [displays the map](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190). + + + +#### Dig {#dig-flow} -1. The client sends an "artifact request" to the on-chain component. -2. The on-chain component responds with: - - The verifier key - - The Zokrates programs. Technically there are two of them, [as explained below](#zokrates-programs): one for calculating map hashes and one for creating verified dig results. - - The Zokrates configuration - - The version of Solidity -3. The client compiles the verified dig results program and compares it to the verification function online. This is a multi-stage process. - A. The client compiles the Zokrates code into an arithmetic circuit with constraints (that's the form that zk-SNARK actually uses). - B. The client creates Solidity code from that arithmetic circuit with the constraints. - C. The client compiles that Solidity code into EVM code. - D. The client reads the code from the appropriate contract online and verifies it is identical. -Clients do not *have* to run this flow, the game works without it, but without this step you can't know if the zero knowledge proofs actually prove what you need. + + +#### Verify setup artifacts {#setup-artifact-flow} + ## Using Zokrates {#using-zokrates} @@ -333,7 +381,7 @@ On a production system we'd use a more complicated [setup ceremony](https://zokr **Note:** Compilation of Zokrates programs and key creation are slow processes. There is no need to repeat them every time, just when map size changes. On a production system you'd do them once, and then store the output. The only reason I am not doing it here is for the sake of simplicity. - + ```typescript const calculateMapHash = function(hashMe: boolean[][]): string { return "0x" + @@ -401,30 +449,15 @@ A Solidity verifier, which gets deployed to the blockchain. Finally, return everything that other code might need. -## The on-chain component {#onchain} - -This is, - -#### - -## The server {#server} - -The server needs to respond to these requests: - -- New game. When a player requests to start a new game, the server creates a new map, stores it, and provides the player with the hash of the map. -- Dig. A dig request contains the hash of the map and the x and y coordinates. In response, the server may provide one of two things: - - If there is no bomb in `(x,y)` the server provides the number of bombs around that location, as well as a zero-knowledge proof that verifies that there is a map with that hash has that number of bombs around that location. - - If there is a bomb in the location the server provides a zero-knowledge proof, which sets the number of bombs to 255 (a special flag value that means "boom"), as well as the full map. The server also deletes the map as no longer needed. - -### New game request {#new-game-request} +## Security tests {#security-tests} -When the client requests a new game, +Security tests are important because a functionality bug will eventually reveal itself. But if the application is insecure, that is likely to remain hidden for a long time before it is revealed by somebody cheating and getting away with resources that belong to others. -### Dig request {#dig-request} +### Permissions {#premissions} -## The client {#client} +Blockchain code is assumed to -## Design considerations {#design} +## Design decisions {#design} ### Why zero-knowlege {#why-zero-knowledge} From fc38e9f1ea34ed821aef255aecaa13a9ca54d9b5 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sat, 24 Aug 2024 14:45:23 -0500 Subject: [PATCH 11/39] WIP --- .../developers/tutorials/secret-state/index.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index d9b012ff95f..2f513092131 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -151,15 +151,25 @@ This is what happens when the user requests a new game. #### Dig {#dig-flow} +1. The player [clicks the map cell's button](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L188), which calls [the `dig` function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L33-L36). This function calls [`dig` on-chain](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L24-L32). +2. The on-chain component [performs a number of sanity checks](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L25-L30), and if successful adds the dig request to [`PendingDig`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L31). +3. The server [detects the change in `PendingDig`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73). [If it is valid](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L75-L84), it [calls the zero-knowledge code](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L86-L95) (explained below) to generate both the result and a proof that it is valid. -#### Verify setup artifacts {#setup-artifact-flow} +4. [The server](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L97-L107) calls [`digResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L45-L64) on-chain. +5. `digResponse` does two things. First, it checks [the zero knowledge proof](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L47-L61). Then, if the proof is correct, it calls [`processDigResult`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L67-L86) to actually process the result. + +6. `processDigResult` checks if the game has been [lost](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L76-L78) or [won](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L83-L86), and [updates `Map`, the on-chain map](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L80). + +7. The client picks up the updates automatically and [updates the map displayed to the player](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190), and if relevant tells the player if it's a win or a lose. ## Using Zokrates {#using-zokrates} +In the flows explained above we skipped over the zero-knowledge parts, treating them as a black box. Now let's open it (slightly, we aren't going to get into the math) to see that portion works. + ### Hashing the map {#hashing-map} We can use [this JavaScript code](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-Onchain/tree/solutions/exercise) to implement [Poseidon](https://www.poseidon-hash.info), the Zokrates hash function we use. However, while this would be faster, it would also be more complicated than just using the Zokrates hash function twice. This is a tutorial, and so the code is optimized for simplicity, not for performance. Therefore, we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). @@ -185,7 +195,7 @@ The field element in Zokrates is typically less than 256 bits long, but not by m This line starts a function definition. `hashMap` gets a single parameter called `map`, a two dimensional `bool`(ean) array. The size of the map is `width+2` by `height+2` for reasons that are [explained below](#why-map-border). -We can use `${width+2}` and `${height+2}` because the Zokrates programs are stored in this application as [Template Strings](https://www.w3schools.com/js/js_string_templates.asp). Code between `${` and `}` is evaluated by JavaScript, and this way the program can be used for different map sizes. The map parameter has a one location wide border all around it without any bombs, which is the reason we need to add two to the width and height. +We can use `${width+2}` and `${height+2}` because the Zokrates programs are stored in this application as [template strings](https://www.w3schools.com/js/js_string_templates.asp). Code between `${` and `}` is evaluated by JavaScript, and this way the program can be used for different map sizes. The map parameter has a one location wide border all around it without any bombs, which is the reason we need to add two to the width and height. The return value is a `field` that contains the hash. @@ -457,6 +467,8 @@ Security tests are important because a functionality bug will eventually reveal Blockchain code is assumed to +### Zero-knowledge abuses {#zero-knowledge-abuses} + ## Design decisions {#design} ### Why zero-knowlege {#why-zero-knowledge} From 9b88975571e8c25c9340ffd978633398c5d47a38 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sat, 24 Aug 2024 22:21:14 -0500 Subject: [PATCH 12/39] WIP --- .../tutorials/secret-state/index.md | 91 ++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 2f513092131..d9f162b6a22 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -465,10 +465,95 @@ Security tests are important because a functionality bug will eventually reveal ### Permissions {#premissions} -Blockchain code is assumed to +There is one privileged entity in this game, the server. It is the only user allowed to call the functions in [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol). We can use [`cast`](https://book.getfoundry.sh/cast/) to verify calls to permissioned functions are only allowed as the server account. + +[The server's private key is in `setupNetwork.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/mud/setupNetwork.ts#L52). + +1. On the computer that runs `anvil` (the blockchain), set these environment variables. + + ```sh copy + WORLD_ADDRESS=0x8d8b6b8414e1e3dcfd4168561b9be6bd3bf6ec4b + UNAUTHORIZED_KEY=0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a + AUTHORIZED_KEY=0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d + ``` + +2. Use `cast` to attempt to set the verifier address as an unauthorized address. + + ```sh copy + cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $UNAUTHORIZED_KEY + ``` + + Not only does `cast` report a failure, but you can open **MUD Dev Tools**, click **Tables**, and select **app__VerifierAddress**. See that the address is not zero. + +3. Set the verifier address as the server's address. + + ```sh copy + cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $AUTHORIZED_KEY + ``` + + The address in **app__VerifiedAddress** should now be zero. + +All MUD functions in the same `System` go through the same access control, so I consider this test sufficient. If you don't, you can check the other functions in [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol). ### Zero-knowledge abuses {#zero-knowledge-abuses} +The math to verify Zokrates is beyond the scope of this tutorial (and my skills). However, we can run various checks on the zero-knowledge code to verify that if it is not done correctly it fails. All of these tests are going to require us to change [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) and restart the entire application. IT is not sufficient to restart the server process, because it puts the application in an impossible state (the player has a game in progress, but the game is no longer available). + +#### Wrong answer {#wrong-answer} + +The simplest possibility is to provide the wrong answer in the zero-knowledge proof. To do that, we go inside `zkDig` and [modify line 91](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L91): + +```ts + proof.inputs[3] = "0x"+'1'.padStart(64, "0") +``` + +This means we'll always claim there is one bomb, regardless of the correct answer. Try to play with this version, and you'll see in the **server** tab of the `pnpm dev` screen this error: + +``` + cause: { + code: 3, + message: 'execution reverted: revert: Zero knowledge verification fail', + data: '0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000 +000000000000000000000000000000000000000000000000205a65726f206b6e6f776c6564676520766572696669636174696f6 +e206661696c' + }, +``` + +So this kind of cheat fails. + +#### Wrong proof {#wrong-proof} + +What happens if we provide the correct information, but just have the wrong proof data? Now, replace line 91 with: + +```ts + proof.proof = { + a: [ + "0x"+'1'.padStart(64, "0"), + "0x"+'2'.padStart(64, "0") + ], + b: [ + [ + "0x"+'1'.padStart(64, "0"), + "0x"+'2'.padStart(64, "0") + ], + [ + "0x"+'1'.padStart(64, "0"), + "0x"+'2'.padStart(64, "0") + ] + ], + c: [ + "0x"+'1'.padStart(64, "0"), + "0x"+'2'.padStart(64, "0") + ] + } +``` + +It still fails, but now it fails without a reason because it happens during the verifier call. + +### How can a user verify the zero trust code? {#user-verify-zero-trust} + +The onchain definitions are relatively easy to verify. + ## Design decisions {#design} ### Why zero-knowlege {#why-zero-knowledge} @@ -477,12 +562,16 @@ Blockchain code is assumed to As opposed to other systems like circum +### When to compile Zokrates {#when-compile-zokrates} + ### Creating the verifier and prover keys (#key-creation) ### Where to verify {#where-verification} ### Flatten the map in TypeScript or Zokrates? {#where-flatten} + + ## Conclusion: when is this the appropriate technique {#conclusion} - Long running game From a0b52009f16e985abd574b33f4e030a6c3cf3987 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Sun, 25 Aug 2024 19:24:52 -0500 Subject: [PATCH 13/39] WIP --- .../tutorials/secret-state/index.md | 73 ++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index d9f162b6a22..e63e5faca3a 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -552,7 +552,78 @@ It still fails, but now it fails without a reason because it happens during the ### How can a user verify the zero trust code? {#user-verify-zero-trust} -The onchain definitions are relatively easy to verify. +On-chain definitions are relatively easy to verify. Typically, the develop publishes the source code to a block explorer, and the block explorer verifies that the source code does compile to the code in the [contract deployment transaction](https://ethereum.org/en/developers/docs/smart-contracts/deploying/). In the case of MUD `System`s this is [slightly more complicated](https://mud.dev/cli/verify), but not by much. + +This is harder with zero-knowledge. The verifier includes some constants and runs some calculations on them. This doesn't tell you what is being proved. + +```solidity + function verifyingKey() pure internal returns (VerifyingKey memory vk) { + vk.alpha = Pairing.G1Point(uint256(0x0f43f4fe7b5c2326fed4ac6ed2f4003ab9ab4ea6f667c2bdd77afb068617ee16), uint256(0x25a77832283f9726935219b5f4678842cda465631e72dbb24708a97ba5d0ce6f)); + vk.beta = Pairing.G2Point([uint256(0x2cebd0fbd21aca01910581537b21ae4fed46bc0e524c055059aa164ba0a6b62b), uint256(0x18fd4a7bc386cf03a95af7163d5359165acc4e7961cb46519e6d9ee4a1e2b7e9)], [uint256(0x11449dee0199ef6d8eebfe43b548e875c69e7ce37705ee9a00c81fe52f11a009), uint256(0x066d0c83b32800d3f335bb9e8ed5e2924cf00e77e6ec28178592eac9898e1a00)]); +``` + +The solution, at least until block explorers get around to adding Zokrates verification to their user interfaces, is for the application developers to make available the Zokrates programs, and for at least some users to compile them themselves with the appropriate verification key. + +To do so: + +1. [Install Zokrates](https://zokrates.github.io/gettingstarted.html). +2. Create a file, `dig.zok`, with the Zokrates program. The code below assumes you kept the original map size, 10x5. + + ```zokrates + import "utils/pack/bool/pack128.zok" as pack128; + import "hashes/poseidon/poseidon.zok" as poseidon; + + def hashMap(bool[12][7] map) -> field { + bool[512] mut map1d = [false; 512]; + u32 mut counter = 0; + + for u32 x in 0..12 { + for u32 y in 0..7 { + map1d[counter] = map[x][y]; + counter = counter+1; + } + } + + field[4] hashMe = [ + pack128(map1d[0..128]), + pack128(map1d[128..256]), + pack128(map1d[256..384]), + pack128(map1d[384..512]) + ]; + + return poseidon(hashMe); + } + + + // The number of mines in location (x,y) + def map2mineCount(bool[12][7] map, u32 x, u32 y) -> u8 { + return if map[x+1][y+1] { 1 } else { 0 }; + } + + def main(private bool[12][7] map, u32 x, u32 y) -> (field, u8) { + return (hashMap(map) , + if map2mineCount(map, x, y) > 0 { 0xFF } else { + map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) + + map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) + + map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1) + } + ); + } + ``` + +3. Compile the Zokrates code and create the verification key. The verification key has to be created with the same entropy used in the original server, [in this case an empty string](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L67). + + ```sh copy + zokrates compile --input dig.zok + zokrates setup -e "" + ``` + +4. Create the verifier on your own, and verify it is functionally identical to the one on the blockchain (the server adds a comment, but that's not important). + + ```sh copy + zokrates export-verifier + diff verifier.sol ~/20240901-secret-state/packages/contracts/src/verifier.sol + ``` ## Design decisions {#design} From c0140e4e25cfac355d25dc6dead00b6c59789d30 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 27 Aug 2024 21:13:12 -0500 Subject: [PATCH 14/39] WIP --- public/content/developers/tutorials/secret-state/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index e63e5faca3a..3515a8280d5 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -10,7 +10,7 @@ published: 2024-08-15 *There are no secrets on the blockchain*. Everything that is posted on the blockchain is open to everybody to read. This is necessary, because the blockchain is based on anybody being able to verify it. However, games often rely on secret state. For example, the game of [minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)) makes absolutely no sense if you can just go on a blockchain explorer and see the map. -The simplest solution is to use a [server component](/developers/tutorials/server-components/) to hold the secret state. However, we don't want to trust that server component's honesty. Luckily, we don't need to. The server can provide a hash of the state, and use [zero-knowledge proofs](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) to prove that the state used to calculate the result of a move is the correct one. +The simplest solution is to use a [server component](/developers/tutorials/server-components/) to hold the secret state. However, the reason we use blockchain is to prevent cheating by the game developer. We need to ensure the server component's honesty. The server can provide a hash of the state, and use [zero-knowledge proofs](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) to prove that the state used to calculate the result of a move is the correct one. After reading this article you will know how to create this kind of secret state holding server, a client for showing the state, and an on-chain component for communication between the two. The main tools we use will be: @@ -652,4 +652,4 @@ As opposed to other systems like circum - Alvaro Alonso read a draft of this article and cleared up some of my misunderstandings about Zokrates. -Any remaining errors are my responsibility. \ No newline at end of file +Any remaining errors are my responsibility. From 5ed8fc2bf0a43b0d0e285db982fb6cb74792f2f1 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 27 Aug 2024 21:15:23 -0500 Subject: [PATCH 15/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 3515a8280d5..9ed2c07ac0a 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -1,6 +1,6 @@ --- title: Using zero-knowledge for a secret state -description: Onchain games are limited because they cannot keep any hidden information. After reading this tutorial, a reader will be able to combine zero-knowledge proofs and server components to create verifiable games with a secret state, offchain, component. The technique to do this will be demonstrated by creating a minesweeper game. +description: On-chain games are limited because they cannot keep any hidden information. After reading this tutorial, a reader will be able to combine zero-knowledge proofs and server components to create verifiable games with a secret state, offchain, component. The technique to do this will be demonstrated by creating a minesweeper game. author: Ori Pomerantz tags: ["server", "offchain", "centralized", "zero-knowledge", "zokrates", "mud"] skill: intermediate @@ -26,7 +26,7 @@ After reading this article you will know how to create this kind of secret state [Minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)) is a game that includes a secret map with a minefield. The player chooses to dig in a specific location. If that location has a mine, it's game over. Otherwise, the player gets the number of mines in the eight squares surrounding that location. -This application is written using [MUD](https://mud.dev/), a framework that lets us store data onchain using a [key-value database](https://aws.amazon.com/nosql/key-value/) and synchronize that data automatically with off-chain components. In addition to synchronization, MUD makes it easy to provide access control, and for other users to [extend](https://mud.dev/guides/extending-a-world) our application. +This application is written using [MUD](https://mud.dev/), a framework that lets us store data on-chain using a [key-value database](https://aws.amazon.com/nosql/key-value/) and synchronize that data automatically with off-chain components. In addition to synchronization, MUD makes it easy to provide access control, and for other users to [extend](https://mud.dev/guides/extending-a-world) our application. ### Running the minesweeper example {#running-minesweeper-example} @@ -172,7 +172,7 @@ In the flows explained above we skipped over the zero-knowledge parts, treating ### Hashing the map {#hashing-map} -We can use [this JavaScript code](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-Onchain/tree/solutions/exercise) to implement [Poseidon](https://www.poseidon-hash.info), the Zokrates hash function we use. However, while this would be faster, it would also be more complicated than just using the Zokrates hash function twice. This is a tutorial, and so the code is optimized for simplicity, not for performance. Therefore, we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). +We can use [this JavaScript code](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-on-chain/tree/solutions/exercise) to implement [Poseidon](https://www.poseidon-hash.info), the Zokrates hash function we use. However, while this would be faster, it would also be more complicated than just using the Zokrates hash function twice. This is a tutorial, and so the code is optimized for simplicity, not for performance. Therefore, we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). ### The hash function {#hash-function} From 4c0faec7d4b007458da75a17ca9d1e1c3fa7a2c6 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 27 Aug 2024 21:45:53 -0500 Subject: [PATCH 16/39] WIP --- .../tutorials/secret-state/index.md | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 9ed2c07ac0a..25faf109c61 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -26,7 +26,7 @@ After reading this article you will know how to create this kind of secret state [Minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)) is a game that includes a secret map with a minefield. The player chooses to dig in a specific location. If that location has a mine, it's game over. Otherwise, the player gets the number of mines in the eight squares surrounding that location. -This application is written using [MUD](https://mud.dev/), a framework that lets us store data on-chain using a [key-value database](https://aws.amazon.com/nosql/key-value/) and synchronize that data automatically with off-chain components. In addition to synchronization, MUD makes it easy to provide access control, and for other users to [extend](https://mud.dev/guides/extending-a-world) our application. +This application is written using [MUD](https://mud.dev/), a framework that lets us store data on-chain using a [key-value database](https://aws.amazon.com/nosql/key-value/) and synchronize that data automatically with off-chain components. In addition to synchronization, MUD makes it easy to provide access control, and for other users to [extend](https://mud.dev/guides/extending-a-world) our application permissionlessly. ### Running the minesweeper example {#running-minesweeper-example} @@ -55,14 +55,14 @@ To run the minesweeper example: Note that the startup takes a long time. To see the progress, first use the down arrow to scroll to the *contracts* tab to see the MUD contracts being deployed. When you get the message *Waiting for file changes…*, the contracts are deployed and further progress will happen in the *server* tab. There, you wait until you get the message *Verifier address: 0x....*. -5. Now you can browse to [the client](http://localhost:3000), click **New Game** and start playing. +5. Now you can browse to [the client](http://localhost:3000), click **New Game**, and start playing. ### Tables {#tables} We need [several tables](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts) on-chain. -- `Configuration`: This table is a singleton, it has no key. It is used to hold game configuration information: +- `Configuration`: This table is a singleton, it has no key and single record. It is used to hold game configuration information: - `height`: The height of a minefield - `width`: The width of a minefield - `numberOfBombs`: The number of bombs in each minefield @@ -87,7 +87,7 @@ We need [several tables](https://github.com/qbzzt/20240901-secret-state/blob/mai In addition, communication between the client and server happens through the on-chain component. This is also implemented using tables. - `PendingGame`: Unserviced requests to start a new game. -- `PendingDig`: Unserviced requests to dig in a specific place in a specific game. This is an [offchain table](https://mud.dev/store/tables#types-of-tables), meaning that it does not get written to EVM storage, it's only readable offline using events. +- `PendingDig`: Unserviced requests to dig in a specific place in a specific game. This is an [offchain table](https://mud.dev/store/tables#types-of-tables), meaning that it does not get written to EVM storage, it's only readable off-chain using events. ### Execution and data flows {#execution-data-flows} @@ -103,26 +103,26 @@ When you run `pnpm dev`, these steps happen: - [Client](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/client), which runs [Vite](https://vitejs.dev/) to serve the UI and client code to web browsers. - [Server](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/server), which performs the server actions -2. After the `contracts` package deploys the MUD contracts and then runs [the `PostDeploy.s.sol` script](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol). This script sets the configuration. The code from github specified [a 10x5 minefield with eight mines in it](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol#L23). +2. The `contracts` package deploys the MUD contracts and then runs [the `PostDeploy.s.sol` script](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol). This script sets the configuration. The code from github specifies [a 10x5 minefield with eight mines in it](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol#L23). 3. [The server](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts) starts by [setting up MUD](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L6). Among other things, this activates data synchronization, so that a copy of the relevant tables exists in the server's memory. -4. The server subscribes a function to be executed [when the `Configuration` table changes](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L23). [This function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L24-L168) is called when `PostDeploy.s.sol` executes. +4. The server subscribes a function to be executed [when the `Configuration` table changes](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L23). [This function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L24-L168) is called after `PostDeploy.s.sol` executes and modifies the table. 5. When the server initialization function has the configuration, [it calls `zkFunctions`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L34-L35) to initialize [the zero-knowledge part of the server](#using-zokrates-from-typescript). This cannot happen until we get the configuration because the zero-knowledge functions have to have the width and height of the minefield as constants. -6. After the zero-knowledge part of the server is initialized, the next step is to [deploy the zero-knowledge verification contract to the blockchain](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L42-L53) and set the verified address in MUD. +6. After the zero-knowledge part of the server is initialized, the next step is to [deploy the zero-knowledge verification contract to the blockchain](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L42-L53) and set the verifiee address in MUD. 7. Finally, we subscribe to updates so we'll see when a player requests either [to start a new game](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71) or to [dig in an existing game](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73-L108). #### New game {#new-game-flow} -This is what happens when the user requests a new game. +This is what happens when the player requests a new game. -1. If there is no game in progress, or there is one but with a gameId of zero, the client displays a [new game button](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175). When the user presses this button, [React runs the `newGame` function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L96). +1. If there is no game in progress for this player, or there is one but with a gameId of zero, the client displays a [new game button](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175). When the user presses this button, [React runs the `newGame` function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L96). -2. [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L43-L46) is a `System` call. In MUD all calls are routed through the `World`, and in most cases you call `__`. In this case, the call is to `app__newGame`, which MUD then routes to [`newGame` in `GameSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L16-L22). +2. [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L43-L46) is a `System` call. In MUD all calls are routed through the `World` contract, and in most cases you call `__`. In this case, the call is to `app__newGame`, which MUD then routes to [`newGame` in `GameSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L16-L22). 3. The on-chain function checks that the player does not have a game in progress, and if there isn't one [adds the request to the `PendingGame` table](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L21). @@ -159,7 +159,7 @@ This is what happens when the user requests a new game. 4. [The server](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L97-L107) calls [`digResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L45-L64) on-chain. -5. `digResponse` does two things. First, it checks [the zero knowledge proof](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L47-L61). Then, if the proof is correct, it calls [`processDigResult`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L67-L86) to actually process the result. +5. `digResponse` does two things. First, it checks [the zero knowledge proof](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L47-L61). Then, if the proof checks out, it calls [`processDigResult`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L67-L86) to actually process the result. 6. `processDigResult` checks if the game has been [lost](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L76-L78) or [won](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L83-L86), and [updates `Map`, the on-chain map](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L80). @@ -168,12 +168,11 @@ This is what happens when the user requests a new game. ## Using Zokrates {#using-zokrates} -In the flows explained above we skipped over the zero-knowledge parts, treating them as a black box. Now let's open it (slightly, we aren't going to get into the math) to see that portion works. +In the flows explained above we skipped over the zero-knowledge parts, treating them as a black box. Now let's crank it open and see how that code is written. ### Hashing the map {#hashing-map} -We can use [this JavaScript code](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-on-chain/tree/solutions/exercise) to implement [Poseidon](https://www.poseidon-hash.info), the Zokrates hash function we use. However, while this would be faster, it would also be more complicated than just using the Zokrates hash function twice. This is a tutorial, and so the code is optimized for simplicity, not for performance. Therefore, we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). - +We can use [this JavaScript code](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-on-chain/tree/solutions/exercise) to implement [Poseidon](https://www.poseidon-hash.info), the Zokrates hash function we use. However, while this would be faster, it would also be more complicated than just using the Zokrates hash function to do it. This is a tutorial, and so the code is optimized for simplicity, not for performance. Therefore, we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). ### The hash function {#hash-function} @@ -238,14 +237,14 @@ For every location in the map, put that value in the `map1d` array and increment ]; ``` -The `pack128` to create an array of four `field` values from `map1d`. +The `pack128` to create an array of four `field` values from `map1d`. In Zokrates `array[a..b]` means the slice of the array that starts at `a` and ends at `b-1`. ``` return poseidon(hashMe); } ``` -And use `poseidon` to convert this array to a hash. +Use `poseidon` to convert this array to a hash. ### The hash program {#hash-program} @@ -295,7 +294,7 @@ def main(private bool[${width+2}][${height+2}] map, u32 x, u32 y) -> (field, u8) By default Zokrates proofs include their inputs. It does no good to know there are five mines around a spot unless you actually know which spot it is (and you can't just match it to your request, because then the prover could use different values and not tell you about it). However, we need to keep the map a secret, while providing it to Zokrates. The solution is to use a `private` parameter, one that is *not* revealed by the proof. -This opens another venue for abuse. The prover could use the correct coordinates, but create a map with any any number of mines around the location, and possibly at the location itself. To prevent this abuse, we make the zero knowledge proof include the hash of the map, which is the game identifier. +This opens another venue for abuse. The prover could use the correct coordinates, but create a map with any number of mines around the location, and possibly at the location itself. To prevent this abuse, we make the zero knowledge proof include the hash of the map, which is the game identifier. ``` return (hashMap(map), @@ -322,7 +321,7 @@ If the player hasn't hit a mine, add the mine counts for the area around the loc ### Using Zokrates from TypeScript {#using-zokrates-from-typescript} -Zokrates has a command line interface, but in this program we use it in the [TypeScript code](https://zokrates.github.io/toolbox/zokrates_js.html). Using [TypeScript](https://www.typescriptlang.org/), which gets compiled to JavaScript, lets us use the same code on the server and the client. +Zokrates has a command line interface, but in this program we use it in the [TypeScript code](https://zokrates.github.io/toolbox/zokrates_js.html). The library that contains the Zokrates definitions is called [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts). @@ -330,7 +329,7 @@ The library that contains the Zokrates definitions is called [`zero-knowledge.ts import { initialize as zokratesInitialize } from "zokrates-js"; ``` -Import the [Zokrates JavaScript bindings](https://zokrates.github.io/toolbox/zokrates_js.html). We only need the [`initialize`](https://zokrates.github.io/toolbox/zokrates_js.html#initialize) function because it returns a promise that resolves to all the Zokrates definitions we need. +Import the [Zokrates JavaScript bindings](https://zokrates.github.io/toolbox/zokrates_js.html). We only need the [`initialize`](https://zokrates.github.io/toolbox/zokrates_js.html#initialize) function because it returns a promise that resolves to all the Zokrates definitions. ```typescript export const zkFunctions = async (width: number, height: number) : Promise => { @@ -387,7 +386,7 @@ Here we compile those programs. const proverKey = keySetupResults.pk ``` -On a production system we'd use a more complicated [setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony), but this is good enough for a demonstration. It's not a problem that the users know the prover key - they still cannot use it to prove things unless they are true. Because we specify the entropy (the second parameter, `""`), the results are always going to be the same. +On a production system we might use a more complicated [setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony), but this is good enough for a demonstration. It's not a problem that the users can know the prover key - they still cannot use it to prove things unless they are true. Because we specify the entropy (the second parameter, `""`), the results are always going to be the same. **Note:** Compilation of Zokrates programs and key creation are slow processes. There is no need to repeat them every time, just when map size changes. On a production system you'd do them once, and then store the output. The only reason I am not doing it here is for the sake of simplicity. @@ -446,7 +445,7 @@ Use [`generateProof`](https://zokrates.github.io/toolbox/zokrates_js.html#genera ` ``` -A Solidity verifier, which gets deployed to the blockchain. +A Solidity verifier, a smart contract we can deploy to the blockchain and use to verify proofs generated by `digCompiled.program`. ```typescript return { @@ -483,7 +482,7 @@ There is one privileged entity in this game, the server. It is the only user all cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $UNAUTHORIZED_KEY ``` - Not only does `cast` report a failure, but you can open **MUD Dev Tools**, click **Tables**, and select **app__VerifierAddress**. See that the address is not zero. + Not only does `cast` report a failure, but you can open **MUD Dev Tools** in the game on the browser, click **Tables**, and select **app__VerifierAddress**. See that the address is not zero. 3. Set the verifier address as the server's address. @@ -497,7 +496,7 @@ All MUD functions in the same `System` go through the same access control, so I ### Zero-knowledge abuses {#zero-knowledge-abuses} -The math to verify Zokrates is beyond the scope of this tutorial (and my skills). However, we can run various checks on the zero-knowledge code to verify that if it is not done correctly it fails. All of these tests are going to require us to change [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) and restart the entire application. IT is not sufficient to restart the server process, because it puts the application in an impossible state (the player has a game in progress, but the game is no longer available). +The math to verify Zokrates is beyond the scope of this tutorial (and my abilities). However, we can run various checks on the zero-knowledge code to verify that if it is not done correctly it fails. All of these tests are going to require us to change [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) and restart the entire application. IT is not sufficient to restart the server process, because it puts the application in an impossible state (the player has a game in progress, but the game is no longer available to the server). #### Wrong answer {#wrong-answer} @@ -552,7 +551,7 @@ It still fails, but now it fails without a reason because it happens during the ### How can a user verify the zero trust code? {#user-verify-zero-trust} -On-chain definitions are relatively easy to verify. Typically, the develop publishes the source code to a block explorer, and the block explorer verifies that the source code does compile to the code in the [contract deployment transaction](https://ethereum.org/en/developers/docs/smart-contracts/deploying/). In the case of MUD `System`s this is [slightly more complicated](https://mud.dev/cli/verify), but not by much. +Smart contracts are relatively easy to verify. Typically, the developer publishes the source code to a block explorer, and the block explorer verifies that the source code does compile to the code in the [contract deployment transaction](https://ethereum.org/en/developers/docs/smart-contracts/deploying/). In the case of MUD `System`s this is [slightly more complicated](https://mud.dev/cli/verify), but not by much. This is harder with zero-knowledge. The verifier includes some constants and runs some calculations on them. This doesn't tell you what is being proved. @@ -618,7 +617,7 @@ To do so: zokrates setup -e "" ``` -4. Create the verifier on your own, and verify it is functionally identical to the one on the blockchain (the server adds a comment, but that's not important). +4. Create the Solidity verifier on your own, and verify it is functionally identical to the one on the blockchain (the server adds a comment, but that's not important). ```sh copy zokrates export-verifier From 06a0dc00e250f0f65fdd661636bc844d7a7c484b Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 13:34:48 -0500 Subject: [PATCH 17/39] Update index.md --- .../developers/tutorials/secret-state/index.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 25faf109c61..4edf11544e2 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -3,9 +3,9 @@ title: Using zero-knowledge for a secret state description: On-chain games are limited because they cannot keep any hidden information. After reading this tutorial, a reader will be able to combine zero-knowledge proofs and server components to create verifiable games with a secret state, offchain, component. The technique to do this will be demonstrated by creating a minesweeper game. author: Ori Pomerantz tags: ["server", "offchain", "centralized", "zero-knowledge", "zokrates", "mud"] -skill: intermediate +skill: advanced lang: en -published: 2024-08-15 +published: 2024-09-15 --- *There are no secrets on the blockchain*. Everything that is posted on the blockchain is open to everybody to read. This is necessary, because the blockchain is based on anybody being able to verify it. However, games often rely on secret state. For example, the game of [minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)) makes absolutely no sense if you can just go on a blockchain explorer and see the map. @@ -624,10 +624,19 @@ To do so: diff verifier.sol ~/20240901-secret-state/packages/contracts/src/verifier.sol ``` + ## Design decisions {#design} +In any sufficiently complex application there are competing design goals that require trade-offs. Let's look at some of the tradeoffs and why the current solution is preferable to other options. + ### Why zero-knowlege {#why-zero-knowledge} +For minesweeper you don't really need zero-knowledge. The server can always hold the map, and then just reveal all of it when the game is over. Then, at the end of the game, the smart contract can calculate the map hash, verify that it matches, and if it doesn't penalize the server or disregard the game completely. + +I didn't use this simpler solution because it would only work for short games with a well defined end state. When a game is potentially infinite (such as the case with [autonomous worlds](https://0xparc.org/blog/autonomous-worlds)), you need a solution that proves the state *without* revealing it. + +As a tutorial this article needed a short game that is easy to understand, but this technique is most useful for longer games. + ### Why Zokrates? {#why-zokrates} As opposed to other systems like circum @@ -640,8 +649,6 @@ As opposed to other systems like circum ### Flatten the map in TypeScript or Zokrates? {#where-flatten} - - ## Conclusion: when is this the appropriate technique {#conclusion} - Long running game From e19b387df2ab4938e614291f3f454c84bccc5c44 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 14:31:34 -0500 Subject: [PATCH 18/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 4edf11544e2..157cd89669c 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -78,9 +78,9 @@ We need [several tables](https://github.com/qbzzt/20240901-secret-state/blob/mai - `GamePlayer`: This table holds the reverse mapping, from `gameId` to player address. - `Map`: The key is a tuple of three values: - - The game identifier - - x - - y + - `gameId`: 32 byte value that is the hash of the map the player is playing on (the game identifier). + - `x` coordinate + - `y` coordinate The value is a single number. It's 255 if a bomb was detected. Otherwise, it is the number of bombs around that location plus one. We cannot just use the number of bombs, because by default all storage in the EVM and all row values in MUD are zero. We need to distinguish between "the player haven't dug here yet" and "the player dug here, and found there are zero bombs around". From c1304442b490dc81496a143d99c19e6e8eae3618 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 14:47:56 -0500 Subject: [PATCH 19/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 157cd89669c..0eb1c0e8ad7 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -163,7 +163,7 @@ This is what happens when the player requests a new game. 6. `processDigResult` checks if the game has been [lost](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L76-L78) or [won](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L83-L86), and [updates `Map`, the on-chain map](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L80). -7. The client picks up the updates automatically and [updates the map displayed to the player](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190), and if relevant tells the player if it's a win or a lose. +7. The client picks up the updates automatically and [updates the map displayed to the player](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190), and if applicable tells the player if it's a win or a lose. ## Using Zokrates {#using-zokrates} @@ -391,6 +391,7 @@ On a production system we might use a more complicated [setup ceremony](https:// **Note:** Compilation of Zokrates programs and key creation are slow processes. There is no need to repeat them every time, just when map size changes. On a production system you'd do them once, and then store the output. The only reason I am not doing it here is for the sake of simplicity. + ```typescript const calculateMapHash = function(hashMe: boolean[][]): string { return "0x" + From 7349bcb6aaa98766f069c8f165259e07e80bc956 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 14:48:50 -0500 Subject: [PATCH 20/39] Update index.md --- .../developers/tutorials/secret-state/index.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 0eb1c0e8ad7..62b158215aa 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -393,11 +393,13 @@ On a production system we might use a more complicated [setup ceremony](https:// ```typescript - const calculateMapHash = function(hashMe: boolean[][]): string { - return "0x" + - BigInt(zokrates.computeWitness(hashCompiled, [hashMe]).output.slice(1,-1)) - .toString(16).padStart(64, "0") - } + +const calculateMapHash = function(hashMe: boolean[][]): string { + return "0x" + + BigInt(zokrates.computeWitness(hashCompiled, [hashMe]).output.slice(1,-1)) + .toString(16).padStart(64, "0") +} + ``` [`computeWitness`](https://zokrates.github.io/toolbox/zokrates_js.html#computewitnessartifacts-args-options) actually runs the Zokrates program. It returns a structure with two fields: `output`, which is the output of the program as a JSON string, and `witness`, which is the information needed to create the a zero knowledge proof of the result. Here we just need the output. From f0a21482efa582ae668f49ec0b75de75150cfd12 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 14:50:02 -0500 Subject: [PATCH 21/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 62b158215aa..7281b285825 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -390,7 +390,7 @@ On a production system we might use a more complicated [setup ceremony](https:// **Note:** Compilation of Zokrates programs and key creation are slow processes. There is no need to repeat them every time, just when map size changes. On a production system you'd do them once, and then store the output. The only reason I am not doing it here is for the sake of simplicity. - + ```typescript From 47473316ee7daa56f51c6287274e17e0ddd8d8f3 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 14:54:41 -0500 Subject: [PATCH 22/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 7281b285825..60774e911e5 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -393,16 +393,14 @@ On a production system we might use a more complicated [setup ceremony](https:// ```typescript - const calculateMapHash = function(hashMe: boolean[][]): string { return "0x" + BigInt(zokrates.computeWitness(hashCompiled, [hashMe]).output.slice(1,-1)) .toString(16).padStart(64, "0") } - ``` -[`computeWitness`](https://zokrates.github.io/toolbox/zokrates_js.html#computewitnessartifacts-args-options) actually runs the Zokrates program. It returns a structure with two fields: `output`, which is the output of the program as a JSON string, and `witness`, which is the information needed to create the a zero knowledge proof of the result. Here we just need the output. +The [`computeWitness`](https://zokrates.github.io/toolbox/zokrates_js.html#computewitnessartifacts-args-options) function actually runs the Zokrates program. It returns a structure with two fields: `output`, which is the output of the program as a JSON string, and `witness`, which is the information needed to create the a zero knowledge proof of the result. Here we just need the output. The output is a string of the form `"31337"`, a decimal number enclosed in quotation marks. But the output we need for `viem` is a hexadecimal number of the form `0x60A7`. So we use `.slice(1,-1)` to remove the quotation marks and then `BigInt` to run the remaining string, which is a decimal number, to a [`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt). `.toString(16)` converts this `BigInt` into a hexadecimal string, and `"0x"+` adds the marker for hexadecimal numbers. From 9ec419900e3f46fc8de94eb4d0fa60ec82e82509 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 14:55:47 -0500 Subject: [PATCH 23/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 60774e911e5..924cc996575 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -463,7 +463,7 @@ Finally, return everything that other code might need. Security tests are important because a functionality bug will eventually reveal itself. But if the application is insecure, that is likely to remain hidden for a long time before it is revealed by somebody cheating and getting away with resources that belong to others. -### Permissions {#premissions} +### Permissions {#permissions} There is one privileged entity in this game, the server. It is the only user allowed to call the functions in [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol). We can use [`cast`](https://book.getfoundry.sh/cast/) to verify calls to permissioned functions are only allowed as the server account. From b130d70b234dc93ea7dcfaff04dc46394e21d66f Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 15:10:21 -0500 Subject: [PATCH 24/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 924cc996575..147c5486318 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -634,16 +634,20 @@ In any sufficiently complex application there are competing design goals that re For minesweeper you don't really need zero-knowledge. The server can always hold the map, and then just reveal all of it when the game is over. Then, at the end of the game, the smart contract can calculate the map hash, verify that it matches, and if it doesn't penalize the server or disregard the game completely. -I didn't use this simpler solution because it would only work for short games with a well defined end state. When a game is potentially infinite (such as the case with [autonomous worlds](https://0xparc.org/blog/autonomous-worlds)), you need a solution that proves the state *without* revealing it. +I didn't use this simpler solution because it only works for short games with a well defined end state. When a game is potentially infinite (such as the case with [autonomous worlds](https://0xparc.org/blog/autonomous-worlds)), you need a solution that proves the state *without* revealing it. As a tutorial this article needed a short game that is easy to understand, but this technique is most useful for longer games. ### Why Zokrates? {#why-zokrates} -As opposed to other systems like circum +[Zokrates](https://zokrates.github.io/) isn't the only zero-knowledge library available, but it is similar to a normal, [imperative](https://en.wikipedia.org/wiki/Imperative_programming) programming language and supports boolean variables. + +For your application, with different requirements, you might prefer to use [Circum](https://docs.circom.io/getting-started/installation/) or [Cairo](https://www.cairo-lang.org/tutorials/getting-started-with-cairo/). ### When to compile Zokrates {#when-compile-zokrates} + + ### Creating the verifier and prover keys (#key-creation) ### Where to verify {#where-verification} From 7950d34df6377fdd701e61d0fd31ae224ed9079e Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 15:28:00 -0500 Subject: [PATCH 25/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 147c5486318..299593a3690 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -646,14 +646,22 @@ For your application, with different requirements, you might prefer to use [Circ ### When to compile Zokrates {#when-compile-zokrates} +In this program we compile the Zokrates programs [every time the server starts](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L60-L61). This is clearly a waste of resources, but this is a tutorial, optimized for simplicity. +If I were writing a production-level application, I'd check if I have a file with the compiled Zokrates programs at this minefield size, and if so use that. ### Creating the verifier and prover keys (#key-creation) +[Key creation](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L63-L69) is another pure calculation that needn't be done more than once for a given minefield size. Again, it is done only once for the sake of simplicity. + +Additionally, we could use [a setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). The advantage of a setupc ceremony is that you need either the entropy or some intermediate result from each participant to cheat on the zero-knowlege proof. If at least one ceremony participant is honest, the zero-knowledge proofs are safe. However, here we rely on [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau), with + ### Where to verify {#where-verification} ### Flatten the map in TypeScript or Zokrates? {#where-flatten} +### Where to store maps {#where-store-maps} + ## Conclusion: when is this the appropriate technique {#conclusion} - Long running game From 3256006cc41acdc5c25ff27672faa0f172318aff Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 15:36:00 -0500 Subject: [PATCH 26/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 299593a3690..f589057f5cc 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -648,13 +648,15 @@ For your application, with different requirements, you might prefer to use [Circ In this program we compile the Zokrates programs [every time the server starts](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L60-L61). This is clearly a waste of resources, but this is a tutorial, optimized for simplicity. -If I were writing a production-level application, I'd check if I have a file with the compiled Zokrates programs at this minefield size, and if so use that. +If I were writing a production-level application, I'd check if I have a file with the compiled Zokrates programs at this minefield size, and if so use that. The same is true for deploying a verifier contract onchain. ### Creating the verifier and prover keys (#key-creation) [Key creation](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L63-L69) is another pure calculation that needn't be done more than once for a given minefield size. Again, it is done only once for the sake of simplicity. -Additionally, we could use [a setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). The advantage of a setupc ceremony is that you need either the entropy or some intermediate result from each participant to cheat on the zero-knowlege proof. If at least one ceremony participant is honest, the zero-knowledge proofs are safe. However, here we rely on [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau), with +Additionally, we could use [a setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). The advantage of a setup ceremony is that you need either the entropy or some intermediate result from each participant to cheat on the zero-knowlege proof. If at least one ceremony participant is honest and deletes that information, the zero-knowledge proofs are safe from certain attacks. However, there is *no mechanism* to verify that information has been deleted from everywhere. If zero-knowledge proofs are critically important, you want to participate in the setup ceremony. + +Here we rely on [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau), which had dozens of participants. It is probably safe enough, and much simpler. ### Where to verify {#where-verification} From bd7f069f6eff0347b099ac98650e0eebfaecdca0 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 15:38:24 -0500 Subject: [PATCH 27/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index f589057f5cc..e2545f2642f 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -650,7 +650,7 @@ In this program we compile the Zokrates programs [every time the server starts]( If I were writing a production-level application, I'd check if I have a file with the compiled Zokrates programs at this minefield size, and if so use that. The same is true for deploying a verifier contract onchain. -### Creating the verifier and prover keys (#key-creation) +### Creating the verifier and prover keys {#key-creation} [Key creation](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L63-L69) is another pure calculation that needn't be done more than once for a given minefield size. Again, it is done only once for the sake of simplicity. From c4e5cabe9887feb76d6a7a77c034753909dfcda4 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 2 Sep 2024 19:00:37 -0500 Subject: [PATCH 28/39] Update index.md --- .../content/developers/tutorials/secret-state/index.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index e2545f2642f..1ab8b886300 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -648,7 +648,7 @@ For your application, with different requirements, you might prefer to use [Circ In this program we compile the Zokrates programs [every time the server starts](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L60-L61). This is clearly a waste of resources, but this is a tutorial, optimized for simplicity. -If I were writing a production-level application, I'd check if I have a file with the compiled Zokrates programs at this minefield size, and if so use that. The same is true for deploying a verifier contract onchain. +If I were writing a production-level application, I'd check if I have a file with the compiled Zokrates programs at this minefield size, and if so use that. The same is true for deploying a verifier contract on-chain. ### Creating the verifier and prover keys {#key-creation} @@ -656,12 +656,18 @@ If I were writing a production-level application, I'd check if I have a file wit Additionally, we could use [a setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). The advantage of a setup ceremony is that you need either the entropy or some intermediate result from each participant to cheat on the zero-knowlege proof. If at least one ceremony participant is honest and deletes that information, the zero-knowledge proofs are safe from certain attacks. However, there is *no mechanism* to verify that information has been deleted from everywhere. If zero-knowledge proofs are critically important, you want to participate in the setup ceremony. -Here we rely on [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau), which had dozens of participants. It is probably safe enough, and much simpler. +Here we rely on [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau), which had dozens of participants. It is probably safe enough, and much simpler. We also don't add entropy to the during key creation, which makes it easier for users to [verify the zero-knowledge configuration](#user-verify-zero-trust). ### Where to verify {#where-verification} +We can verify the zero-knowledge proofs either on-chain (which costs gas) or in the client (using [`verify`](https://zokrates.github.io/toolbox/zokrates_js.html#verifyverificationkey-proof)). I chose the first, because this lets you [verify the verifier](#user-verify-zero-trust) once and then trust that if doesn't change as long as the contract address for it stays the same. If verification was done on the client, you'd have to verify the code you receive each time you download the client. + +Also, while this game is single player, a lot of blockchain games are multi-player. On-chain verification means you only verify the zero-knowledge proof once. Doing it in the client would require each client to verify independently. + ### Flatten the map in TypeScript or Zokrates? {#where-flatten} +In general, when processing can be done either in TypeScript or Zokrates, it is better to do it TypeScript, which is a lot faster, and does not require zero-knowledge proofs. This is the reason, for example, that the + ### Where to store maps {#where-store-maps} ## Conclusion: when is this the appropriate technique {#conclusion} From 1f35a15d4d61358836f29ce32963123789f521d8 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 3 Sep 2024 14:47:22 -0500 Subject: [PATCH 29/39] Update index.md --- .../tutorials/secret-state/index.md | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 1ab8b886300..882cc152d38 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -666,14 +666,31 @@ Also, while this game is single player, a lot of blockchain games are multi-play ### Flatten the map in TypeScript or Zokrates? {#where-flatten} -In general, when processing can be done either in TypeScript or Zokrates, it is better to do it TypeScript, which is a lot faster, and does not require zero-knowledge proofs. This is the reason, for example, that the +In general, when processing can be done either in TypeScript or Zokrates, it is better to do it TypeScript, which is a lot faster, and does not require zero-knowledge proofs. This is the reason, for example, that we don't provide Zokrates with the hash and make it verify that it is correct. Hashing has to be done inside Zokrates, but the match between the returned hash and the hash on-chain can happen outside it. + +However, we still [flatten the map in Zokrates](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L15-L20), whereas we could have done it in TypeScript. The reason is that the other options are, in my opinion, worse. + +- Provide a one dimensional array of boolean to the Zokrates code, and use an expression such as `x*(height+2) ++y` to get the two dimensional map. This would make [the code](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L44-L47) somewhat more complicated, so I decided the performance gain isn't worth it for a tutorial. + +- Send Zokrates both the one dimensional array and the two dimensional array. However, this solution doesn't gain us anything. The Zokrates code would have to verify that the one dimensional array it is provided really is the correct representation of the two dimensional array. So there wouldn't be any performance gain. + +- Flatten the two dimensional array in Zokrates. This is the simplest option, so I chose it. ### Where to store maps {#where-store-maps} +In this application [`gamesInProgress`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L20) is simply a variable in memory. This means that if you server dies and needs to be restarted, all the information it stored is lost. Not only are players unable to continue their game, they cannot even start a new game because the onchain component thinks they still have a game in progress. + +This is clearly bad design for a production system, in which you'd store this information in a database. The only reason I used a variable here is because this is a tutorial and simplicity is the main consideration. + ## Conclusion: when is this the appropriate technique {#conclusion} -- Long running game -- Some centralization acceptable +So, now you know how to write a game with a server that stores secret state that doesn't belong on-chain. But in what cases should you do it? There are two main considerations. + +- *Long running game*: [As mentioned above](#why-zero-knowledge), in a short game you can just publish the state once the game is over and have everything verified then. But that is not an option when the game takes a long or indefinite time, and the state needs to stay secret. + +- *Some centralization acceptable*: Zero-knowledge proofs can verify integrity, that an entity is not faking the results. What they can't do is ensure that the entity will still be available and answer messages. In situations where availability also needs to be decentralized, zero-knowledge proofs are not a sufficient solution, and you need [multi-party computation](https://en.wikipedia.org/wiki/Secure_multi-party_computation). + ### Acknowledgements {#acknowledgements} From 4d537c96a51877c0d6c62ca102b4602f868294f7 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 3 Sep 2024 14:48:08 -0500 Subject: [PATCH 30/39] Update index.md --- public/content/developers/tutorials/secret-state/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 882cc152d38..066eea79df4 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -683,7 +683,7 @@ In this application [`gamesInProgress`](https://github.com/qbzzt/20240901-secret This is clearly bad design for a production system, in which you'd store this information in a database. The only reason I used a variable here is because this is a tutorial and simplicity is the main consideration. -## Conclusion: when is this the appropriate technique {#conclusion} +## Conclusion: When is this the appropriate technique? {#conclusion} So, now you know how to write a game with a server that stores secret state that doesn't belong on-chain. But in what cases should you do it? There are two main considerations. From 1027ef374fad111ed5d6dc5ed97c501913026ee2 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Mon, 17 Feb 2025 14:47:52 -0800 Subject: [PATCH 31/39] chore: add to allow list Temporary; will be deemed unnecessary and removed with PR #14926 --- src/lib/utils/md.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/utils/md.ts b/src/lib/utils/md.ts index d5dd3712a2d..940a69690c8 100644 --- a/src/lib/utils/md.ts +++ b/src/lib/utils/md.ts @@ -186,6 +186,7 @@ const getPostSlugs = (dir: string, files: string[] = []) => { "/developers/tutorials/reverse-engineering-a-contract", "/developers/tutorials/run-node-raspberry-pi", "/developers/tutorials/scam-token-tricks", + "/developers/tutorials/secret-state/", "/developers/tutorials/secure-development-workflow", "/developers/tutorials/send-token-ethersjs", "/developers/tutorials/sending-transactions-using-web3-and-alchemy", From dc51c65853f1cce2c151c5058f3f52f04d17918e Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Mon, 17 Feb 2025 14:55:32 -0800 Subject: [PATCH 32/39] fix: element id targets --- public/content/developers/tutorials/secret-state/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 066eea79df4..7400998eda8 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -272,7 +272,7 @@ def map2mineCount(bool[${width+2}][${height+2}] map, u32 x, u32 y) -> u8 { } ``` - +#### Why map border {#why-map-border} Zero-knowlege proofs use [arithmetic circuits](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785), which don't have an easy equivalent to an `if` statement. Instead, they use the equivalent of the [conditional operator](https://en.wikipedia.org/wiki/Ternary_conditional_operator). If `a` can be either zero or one, you can calculate `if a { b } else { c }` as `ab+(1-a)c`. @@ -390,7 +390,7 @@ On a production system we might use a more complicated [setup ceremony](https:// **Note:** Compilation of Zokrates programs and key creation are slow processes. There is no need to repeat them every time, just when map size changes. On a production system you'd do them once, and then store the output. The only reason I am not doing it here is for the sake of simplicity. - +#### `calculateMapHash` {#calculateMapHash} ```typescript const calculateMapHash = function(hashMe: boolean[][]): string { From c961500836a6f9713fbe254797e81e7ba0c83505 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Mon, 17 Feb 2025 14:58:50 -0800 Subject: [PATCH 33/39] chore: onchain/offchain recent codebase update --- .../tutorials/secret-state/index.md | 231 ++++++++---------- 1 file changed, 107 insertions(+), 124 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 7400998eda8..897f69237a2 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -1,6 +1,6 @@ --- title: Using zero-knowledge for a secret state -description: On-chain games are limited because they cannot keep any hidden information. After reading this tutorial, a reader will be able to combine zero-knowledge proofs and server components to create verifiable games with a secret state, offchain, component. The technique to do this will be demonstrated by creating a minesweeper game. +description: onchain games are limited because they cannot keep any hidden information. After reading this tutorial, a reader will be able to combine zero-knowledge proofs and server components to create verifiable games with a secret state, offchain, component. The technique to do this will be demonstrated by creating a minesweeper game. author: Ori Pomerantz tags: ["server", "offchain", "centralized", "zero-knowledge", "zokrates", "mud"] skill: advanced @@ -8,25 +8,25 @@ lang: en published: 2024-09-15 --- -*There are no secrets on the blockchain*. Everything that is posted on the blockchain is open to everybody to read. This is necessary, because the blockchain is based on anybody being able to verify it. However, games often rely on secret state. For example, the game of [minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)) makes absolutely no sense if you can just go on a blockchain explorer and see the map. +_There are no secrets on the blockchain_. Everything that is posted on the blockchain is open to everybody to read. This is necessary, because the blockchain is based on anybody being able to verify it. However, games often rely on secret state. For example, the game of [minesweeper]() makes absolutely no sense if you can just go on a blockchain explorer and see the map. The simplest solution is to use a [server component](/developers/tutorials/server-components/) to hold the secret state. However, the reason we use blockchain is to prevent cheating by the game developer. We need to ensure the server component's honesty. The server can provide a hash of the state, and use [zero-knowledge proofs](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) to prove that the state used to calculate the result of a move is the correct one. -After reading this article you will know how to create this kind of secret state holding server, a client for showing the state, and an on-chain component for communication between the two. The main tools we use will be: +After reading this article you will know how to create this kind of secret state holding server, a client for showing the state, and an onchain component for communication between the two. The main tools we use will be: -* [Zokrates](https://zokrates.github.io/) for zero-knowledge proofs and their verification. -* [Typescript](https://www.typescriptlang.org/) for both the server and the client. -* [Node](https://nodejs.org/en) for the server. -* [Viem](https://viem.sh/) for communication with the Blockchain. -* [MUD](https://mud.dev/) for on-chain data management. Proper disclosure: While I'm writing this on my own time for Ethereum Foundation, my day job is working for [Lattice](https://lattice.xyz/) which makes this framework. -* [React](https://react.dev/) for the user interface of the client. -* [Vite](https://vitejs.dev/) for serving the client code. +- [Zokrates](https://zokrates.github.io/) for zero-knowledge proofs and their verification. +- [Typescript](https://www.typescriptlang.org/) for both the server and the client. +- [Node](https://nodejs.org/en) for the server. +- [Viem](https://viem.sh/) for communication with the Blockchain. +- [MUD](https://mud.dev/) for onchain data management. Proper disclosure: While I'm writing this on my own time for Ethereum Foundation, my day job is working for [Lattice](https://lattice.xyz/) which makes this framework. +- [React](https://react.dev/) for the user interface of the client. +- [Vite](https://vitejs.dev/) for serving the client code. ## Minesweeper example {#minesweeper} -[Minesweeper](https://en.wikipedia.org/wiki/Minesweeper_(video_game)) is a game that includes a secret map with a minefield. The player chooses to dig in a specific location. If that location has a mine, it's game over. Otherwise, the player gets the number of mines in the eight squares surrounding that location. +[Minesweeper]() is a game that includes a secret map with a minefield. The player chooses to dig in a specific location. If that location has a mine, it's game over. Otherwise, the player gets the number of mines in the eight squares surrounding that location. -This application is written using [MUD](https://mud.dev/), a framework that lets us store data on-chain using a [key-value database](https://aws.amazon.com/nosql/key-value/) and synchronize that data automatically with off-chain components. In addition to synchronization, MUD makes it easy to provide access control, and for other users to [extend](https://mud.dev/guides/extending-a-world) our application permissionlessly. +This application is written using [MUD](https://mud.dev/), a framework that lets us store data onchain using a [key-value database](https://aws.amazon.com/nosql/key-value/) and synchronize that data automatically with offchain components. In addition to synchronization, MUD makes it easy to provide access control, and for other users to [extend](https://mud.dev/guides/extending-a-world) our application permissionlessly. ### Running the minesweeper example {#running-minesweeper-example} @@ -53,51 +53,52 @@ To run the minesweeper example: pnpm dev ``` - Note that the startup takes a long time. To see the progress, first use the down arrow to scroll to the *contracts* tab to see the MUD contracts being deployed. When you get the message *Waiting for file changes…*, the contracts are deployed and further progress will happen in the *server* tab. There, you wait until you get the message *Verifier address: 0x....*. + Note that the startup takes a long time. To see the progress, first use the down arrow to scroll to the _contracts_ tab to see the MUD contracts being deployed. When you get the message _Waiting for file changes…_, the contracts are deployed and further progress will happen in the _server_ tab. There, you wait until you get the message _Verifier address: 0x...._. 5. Now you can browse to [the client](http://localhost:3000), click **New Game**, and start playing. - ### Tables {#tables} -We need [several tables](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts) on-chain. +We need [several tables](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts) onchain. - `Configuration`: This table is a singleton, it has no key and single record. It is used to hold game configuration information: - `height`: The height of a minefield - `width`: The width of a minefield - `numberOfBombs`: The number of bombs in each minefield - - `VerifierAddress`: This table is also a singleton. It is used to hold one part of the configuration, the address of the verifier contract (`verifier`). We could have put this information in the `Configuration` table, but it is set by a different component, the server, so it's easier to put it in a separate table. - `PlayerGame`: The key is the player's address. The data is: - - `gameId`: 32 byte value that is the hash of the map the player is playing on (the game identifier). - - `win`: a boolean that is whether the player won the game. - - `lose`: a boolean that is whether the player lost the game. - - `digNumber`: the number of successful digs in the game. + + - `gameId`: 32 byte value that is the hash of the map the player is playing on (the game identifier). + - `win`: a boolean that is whether the player won the game. + - `lose`: a boolean that is whether the player lost the game. + - `digNumber`: the number of successful digs in the game. - `GamePlayer`: This table holds the reverse mapping, from `gameId` to player address. - `Map`: The key is a tuple of three values: + - `gameId`: 32 byte value that is the hash of the map the player is playing on (the game identifier). - `x` coordinate - `y` coordinate - + The value is a single number. It's 255 if a bomb was detected. Otherwise, it is the number of bombs around that location plus one. We cannot just use the number of bombs, because by default all storage in the EVM and all row values in MUD are zero. We need to distinguish between "the player haven't dug here yet" and "the player dug here, and found there are zero bombs around". -In addition, communication between the client and server happens through the on-chain component. This is also implemented using tables. +In addition, communication between the client and server happens through the onchain component. This is also implemented using tables. - `PendingGame`: Unserviced requests to start a new game. -- `PendingDig`: Unserviced requests to dig in a specific place in a specific game. This is an [offchain table](https://mud.dev/store/tables#types-of-tables), meaning that it does not get written to EVM storage, it's only readable off-chain using events. +- `PendingDig`: Unserviced requests to dig in a specific place in a specific game. This is an [offchain table](https://mud.dev/store/tables#types-of-tables), meaning that it does not get written to EVM storage, it's only readable offchain using events. ### Execution and data flows {#execution-data-flows} -These flows coordinate execution between the client, the on-chain component, and the server. +These flows coordinate execution between the client, the onchain component, and the server. #### Initialization {#initialization-flow} When you run `pnpm dev`, these steps happen: 1. [`mprocs`](https://github.com/pvolok/mprocs) runs four components: + - [Anvil](https://book.getfoundry.sh/anvil/), which runs a local blockchain - [Contracts](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/contracts), which compiles (if needed) and deploys the contracts for MUD - [Client](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/client), which runs [Vite](https://vitejs.dev/) to serve the UI and client code to web browsers. @@ -115,7 +116,6 @@ When you run `pnpm dev`, these steps happen: 7. Finally, we subscribe to updates so we'll see when a player requests either [to start a new game](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71) or to [dig in an existing game](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73-L108). - #### New game {#new-game-flow} This is what happens when the player requests a new game. @@ -124,19 +124,20 @@ This is what happens when the player requests a new game. 2. [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L43-L46) is a `System` call. In MUD all calls are routed through the `World` contract, and in most cases you call `__`. In this case, the call is to `app__newGame`, which MUD then routes to [`newGame` in `GameSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L16-L22). -3. The on-chain function checks that the player does not have a game in progress, and if there isn't one [adds the request to the `PendingGame` table](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L21). +3. The onchain function checks that the player does not have a game in progress, and if there isn't one [adds the request to the `PendingGame` table](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L21). 4. The server detects the change in `PendingGame` and [runs the subscribed function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71). This function calls [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L110-L114), which in turn calls [`createGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L116-L144). 5. The first thing `createGame` does is [create a random map with the appropriate number of mines](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L120-L135). Then, it calls [`makeMapBorders`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L147-L166) to create a map with blank borders, which is necessary for Zokrates. Finally, `createGame` calls [`calculateMapHash`](#calculateMapHash), to get the hash of the map, which is used as the game ID. -6. The `newGame` function adds the new game to `gamesInProgress`. +6. The `newGame` function adds the new game to `gamesInProgress`. -7. The last thing the server does is call [`app__newGameResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L38-L43), which is on-chain. This function is in a different `System`, [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol), to enable access control. Access control is defined in the [MUD configuration file](https://mud.dev/config), [`mud.config.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts#L67-L72). +7. The last thing the server does is call [`app__newGameResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L38-L43), which is onchain. This function is in a different `System`, [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol), to enable access control. Access control is defined in the [MUD configuration file](https://mud.dev/config), [`mud.config.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts#L67-L72). The access list only allows a single address to call the `System`. This restricts access to the server functions to a single address, so nobody can impersonate the server. -8. The on-chain component updates the relevant tables: +8. The onchain component updates the relevant tables: + - Create the game in `PlayerGame`. - Set the reverse mapping in `GamePlayer`. - Remove the request from `PendingGame`. @@ -147,32 +148,29 @@ This is what happens when the player requests a new game. 11. If there is a value in `gameRecord`, and the game hasn't been won or lost, the client [displays the map](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190). - - #### Dig {#dig-flow} -1. The player [clicks the map cell's button](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L188), which calls [the `dig` function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L33-L36). This function calls [`dig` on-chain](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L24-L32). +1. The player [clicks the map cell's button](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L188), which calls [the `dig` function](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L33-L36). This function calls [`dig` onchain](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L24-L32). -2. The on-chain component [performs a number of sanity checks](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L25-L30), and if successful adds the dig request to [`PendingDig`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L31). +2. The onchain component [performs a number of sanity checks](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L25-L30), and if successful adds the dig request to [`PendingDig`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L31). 3. The server [detects the change in `PendingDig`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73). [If it is valid](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L75-L84), it [calls the zero-knowledge code](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L86-L95) (explained below) to generate both the result and a proof that it is valid. -4. [The server](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L97-L107) calls [`digResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L45-L64) on-chain. +4. [The server](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L97-L107) calls [`digResponse`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L45-L64) onchain. 5. `digResponse` does two things. First, it checks [the zero knowledge proof](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L47-L61). Then, if the proof checks out, it calls [`processDigResult`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L67-L86) to actually process the result. -6. `processDigResult` checks if the game has been [lost](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L76-L78) or [won](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L83-L86), and [updates `Map`, the on-chain map](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L80). +6. `processDigResult` checks if the game has been [lost](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L76-L78) or [won](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L83-L86), and [updates `Map`, the onchain map](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L80). 7. The client picks up the updates automatically and [updates the map displayed to the player](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190), and if applicable tells the player if it's a win or a lose. - ## Using Zokrates {#using-zokrates} In the flows explained above we skipped over the zero-knowledge parts, treating them as a black box. Now let's crank it open and see how that code is written. ### Hashing the map {#hashing-map} -We can use [this JavaScript code](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-on-chain/tree/solutions/exercise) to implement [Poseidon](https://www.poseidon-hash.info), the Zokrates hash function we use. However, while this would be faster, it would also be more complicated than just using the Zokrates hash function to do it. This is a tutorial, and so the code is optimized for simplicity, not for performance. Therefore, we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). +We can use [this JavaScript code](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-onchain/tree/solutions/exercise) to implement [Poseidon](https://www.poseidon-hash.info), the Zokrates hash function we use. However, while this would be faster, it would also be more complicated than just using the Zokrates hash function to do it. This is a tutorial, and so the code is optimized for simplicity, not for performance. Therefore, we need two different Zokrates programs, one to just calculate the hash of a map (`hash`) and one to actually create a zero-knowledge proof of the result of the dig in a location on the map (`dig`). ### The hash function {#hash-function} @@ -187,7 +185,6 @@ These two lines import two functions from the [Zokrates standard library](https: The field element in Zokrates is typically less than 256 bits long, but not by much. To simplify the code, we restrict the map to be up to 512 bits, and hash an array of four fields, and in each field we use only 128 bits. [The `pack128` function](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/utils/pack/bool/pack128.zok) changes an array of 128 bits into a `field` for this purpose. - ``` def hashMap(bool[${width+2}][${height+2}] map) -> field { ``` @@ -246,7 +243,6 @@ The `pack128` to create an array of four `field` values from `map1d`. In Zokrate Use `poseidon` to convert this array to a hash. - ### The hash program {#hash-program} The server needs to call `hashMap` directly to create game identifiers. However, Zokrates can only call the `main` function on a program to start, so we create a program with a `main` that calls the hash function. @@ -292,7 +288,7 @@ This is the reason we need a one location wide border all around the map. We nee def main(private bool[${width+2}][${height+2}] map, u32 x, u32 y) -> (field, u8) { ``` -By default Zokrates proofs include their inputs. It does no good to know there are five mines around a spot unless you actually know which spot it is (and you can't just match it to your request, because then the prover could use different values and not tell you about it). However, we need to keep the map a secret, while providing it to Zokrates. The solution is to use a `private` parameter, one that is *not* revealed by the proof. +By default Zokrates proofs include their inputs. It does no good to know there are five mines around a spot unless you actually know which spot it is (and you can't just match it to your request, because then the prover could use different values and not tell you about it). However, we need to keep the map a secret, while providing it to Zokrates. The solution is to use a `private` parameter, one that is _not_ revealed by the proof. This opens another venue for abuse. The prover could use the correct coordinates, but create a map with any number of mines around the location, and possibly at the location itself. To prevent this abuse, we make the zero knowledge proof include the hash of the map, which is the game identifier. @@ -311,8 +307,8 @@ We use 255 as a special value in case the location itself has a bomb. ``` map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) + map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) + - map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1) - } + map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1) + } ); } ``` @@ -326,7 +322,7 @@ Zokrates has a command line interface, but in this program we use it in the [Typ The library that contains the Zokrates definitions is called [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts). ```typescript -import { initialize as zokratesInitialize } from "zokrates-js"; +import { initialize as zokratesInitialize } from "zokrates-js" ``` Import the [Zokrates JavaScript bindings](https://zokrates.github.io/toolbox/zokrates_js.html). We only need the [`initialize`](https://zokrates.github.io/toolbox/zokrates_js.html#initialize) function because it returns a promise that resolves to all the Zokrates definitions. @@ -338,13 +334,13 @@ export const zkFunctions = async (width: number, height: number) : Promise Similar to Zokrates itself, we also export only one function, which is also [asynchronous](https://www.w3schools.com/js/js_async.asp). When it eventually returns, it provides several functions as we'll see below. ```typescript - const zokrates = await zokratesInitialize() +const zokrates = await zokratesInitialize() ``` Initialize Zokrates, get everything we need from the library. ```typescript - const hashFragment = ` +const hashFragment = ` import "utils/pack/bool/pack128.zok" as pack128; import "hashes/poseidon/poseidon.zok" as poseidon; . @@ -353,14 +349,14 @@ Initialize Zokrates, get everything we need from the library. } ` - const hashProgram = ` +const hashProgram = ` ${hashFragment} . . . ` - const digProgram = ` +const digProgram = ` ${hashFragment} . . @@ -371,19 +367,19 @@ Initialize Zokrates, get everything we need from the library. Next we have the hash function and two Zokrates programs we saw above. ```typescript - const digCompiled = zokrates.compile(digProgram) - const hashCompiled = zokrates.compile(hashProgram) +const digCompiled = zokrates.compile(digProgram) +const hashCompiled = zokrates.compile(hashProgram) ``` Here we compile those programs. ```typescript - // Create the keys for zero knowledge verification. - // On a production system you'd want to use a setup ceremony. - // (https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). - const keySetupResults = zokrates.setup(digCompiled.program, "") - const verifierKey = keySetupResults.vk - const proverKey = keySetupResults.pk +// Create the keys for zero knowledge verification. +// On a production system you'd want to use a setup ceremony. +// (https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). +const keySetupResults = zokrates.setup(digCompiled.program, "") +const verifierKey = keySetupResults.vk +const proverKey = keySetupResults.pk ``` On a production system we might use a more complicated [setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony), but this is good enough for a demonstration. It's not a problem that the users can know the prover key - they still cannot use it to prove things unless they are true. Because we specify the entropy (the second parameter, `""`), the results are always going to be the same. @@ -391,12 +387,15 @@ On a production system we might use a more complicated [setup ceremony](https:// **Note:** Compilation of Zokrates programs and key creation are slow processes. There is no need to repeat them every time, just when map size changes. On a production system you'd do them once, and then store the output. The only reason I am not doing it here is for the sake of simplicity. #### `calculateMapHash` {#calculateMapHash} - + ```typescript -const calculateMapHash = function(hashMe: boolean[][]): string { - return "0x" + - BigInt(zokrates.computeWitness(hashCompiled, [hashMe]).output.slice(1,-1)) - .toString(16).padStart(64, "0") +const calculateMapHash = function (hashMe: boolean[][]): string { + return ( + "0x" + + BigInt(zokrates.computeWitness(hashCompiled, [hashMe]).output.slice(1, -1)) + .toString(16) + .padStart(64, "0") + ) } ``` @@ -405,8 +404,8 @@ The [`computeWitness`](https://zokrates.github.io/toolbox/zokrates_js.html#compu The output is a string of the form `"31337"`, a decimal number enclosed in quotation marks. But the output we need for `viem` is a hexadecimal number of the form `0x60A7`. So we use `.slice(1,-1)` to remove the quotation marks and then `BigInt` to run the remaining string, which is a decimal number, to a [`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt). `.toString(16)` converts this `BigInt` into a hexadecimal string, and `"0x"+` adds the marker for hexadecimal numbers. ```typescript - // Dig and return a zero knowledge proof of the result - // (server-side code) +// Dig and return a zero knowledge proof of the result +// (server-side code) ``` The zero knowledge proof includes the public inputs (`x` and `y`) and results (hash of the map and number of bombs). @@ -420,9 +419,7 @@ The zero knowledge proof includes the public inputs (`x` and `y`) and results (h It's a problem to check if an index is out of bounds in Zokrates, so we do it here. ```typescript - const runResults = zokrates.computeWitness(digCompiled, - [map, `${x}`, `${y}`] - ) +const runResults = zokrates.computeWitness(digCompiled, [map, `${x}`, `${y}`]) ``` Execute the dig program. @@ -440,7 +437,7 @@ Execute the dig program. Use [`generateProof`](https://zokrates.github.io/toolbox/zokrates_js.html#generateproofprogram-witness-provingkey-entropy) and return the proof. ```typescript - const solidityVerifier = ` +const solidityVerifier = ` // Map size: ${width} x ${height} \n${zokrates.exportSolidityVerifier(verifierKey)} ` @@ -471,27 +468,27 @@ There is one privileged entity in this game, the server. It is the only user all 1. On the computer that runs `anvil` (the blockchain), set these environment variables. - ```sh copy - WORLD_ADDRESS=0x8d8b6b8414e1e3dcfd4168561b9be6bd3bf6ec4b - UNAUTHORIZED_KEY=0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a - AUTHORIZED_KEY=0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d - ``` + ```sh copy + WORLD_ADDRESS=0x8d8b6b8414e1e3dcfd4168561b9be6bd3bf6ec4b + UNAUTHORIZED_KEY=0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a + AUTHORIZED_KEY=0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d + ``` 2. Use `cast` to attempt to set the verifier address as an unauthorized address. - ```sh copy - cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $UNAUTHORIZED_KEY - ``` + ```sh copy + cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $UNAUTHORIZED_KEY + ``` - Not only does `cast` report a failure, but you can open **MUD Dev Tools** in the game on the browser, click **Tables**, and select **app__VerifierAddress**. See that the address is not zero. + Not only does `cast` report a failure, but you can open **MUD Dev Tools** in the game on the browser, click **Tables**, and select **app\_\_VerifierAddress**. See that the address is not zero. 3. Set the verifier address as the server's address. - ```sh copy - cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $AUTHORIZED_KEY - ``` + ```sh copy + cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $AUTHORIZED_KEY + ``` - The address in **app__VerifiedAddress** should now be zero. + The address in **app\_\_VerifiedAddress** should now be zero. All MUD functions in the same `System` go through the same access control, so I consider this test sufficient. If you don't, you can check the other functions in [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol). @@ -504,7 +501,7 @@ The math to verify Zokrates is beyond the scope of this tutorial (and my abiliti The simplest possibility is to provide the wrong answer in the zero-knowledge proof. To do that, we go inside `zkDig` and [modify line 91](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L91): ```ts - proof.inputs[3] = "0x"+'1'.padStart(64, "0") +proof.inputs[3] = "0x" + "1".padStart(64, "0") ``` This means we'll always claim there is one bomb, regardless of the correct answer. Try to play with this version, and you'll see in the **server** tab of the `pnpm dev` screen this error: @@ -526,26 +523,14 @@ So this kind of cheat fails. What happens if we provide the correct information, but just have the wrong proof data? Now, replace line 91 with: ```ts - proof.proof = { - a: [ - "0x"+'1'.padStart(64, "0"), - "0x"+'2'.padStart(64, "0") - ], - b: [ - [ - "0x"+'1'.padStart(64, "0"), - "0x"+'2'.padStart(64, "0") - ], - [ - "0x"+'1'.padStart(64, "0"), - "0x"+'2'.padStart(64, "0") - ] - ], - c: [ - "0x"+'1'.padStart(64, "0"), - "0x"+'2'.padStart(64, "0") - ] - } +proof.proof = { + a: ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")], + b: [ + ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")], + ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")], + ], + c: ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")], +} ``` It still fails, but now it fails without a reason because it happens during the verifier call. @@ -572,7 +557,7 @@ To do so: ```zokrates import "utils/pack/bool/pack128.zok" as pack128; import "hashes/poseidon/poseidon.zok" as poseidon; - + def hashMap(bool[12][7] map) -> field { bool[512] mut map1d = [false; 512]; u32 mut counter = 0; @@ -605,26 +590,25 @@ To do so: if map2mineCount(map, x, y) > 0 { 0xFF } else { map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) + map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) + - map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1) - } + map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1) + } ); } - ``` + ``` 3. Compile the Zokrates code and create the verification key. The verification key has to be created with the same entropy used in the original server, [in this case an empty string](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L67). - ```sh copy - zokrates compile --input dig.zok - zokrates setup -e "" - ``` + ```sh copy + zokrates compile --input dig.zok + zokrates setup -e "" + ``` 4. Create the Solidity verifier on your own, and verify it is functionally identical to the one on the blockchain (the server adds a comment, but that's not important). - - ```sh copy - zokrates export-verifier - diff verifier.sol ~/20240901-secret-state/packages/contracts/src/verifier.sol - ``` + ```sh copy + zokrates export-verifier + diff verifier.sol ~/20240901-secret-state/packages/contracts/src/verifier.sol + ``` ## Design decisions {#design} @@ -634,13 +618,13 @@ In any sufficiently complex application there are competing design goals that re For minesweeper you don't really need zero-knowledge. The server can always hold the map, and then just reveal all of it when the game is over. Then, at the end of the game, the smart contract can calculate the map hash, verify that it matches, and if it doesn't penalize the server or disregard the game completely. -I didn't use this simpler solution because it only works for short games with a well defined end state. When a game is potentially infinite (such as the case with [autonomous worlds](https://0xparc.org/blog/autonomous-worlds)), you need a solution that proves the state *without* revealing it. +I didn't use this simpler solution because it only works for short games with a well defined end state. When a game is potentially infinite (such as the case with [autonomous worlds](https://0xparc.org/blog/autonomous-worlds)), you need a solution that proves the state _without_ revealing it. As a tutorial this article needed a short game that is easy to understand, but this technique is most useful for longer games. ### Why Zokrates? {#why-zokrates} -[Zokrates](https://zokrates.github.io/) isn't the only zero-knowledge library available, but it is similar to a normal, [imperative](https://en.wikipedia.org/wiki/Imperative_programming) programming language and supports boolean variables. +[Zokrates](https://zokrates.github.io/) isn't the only zero-knowledge library available, but it is similar to a normal, [imperative](https://en.wikipedia.org/wiki/Imperative_programming) programming language and supports boolean variables. For your application, with different requirements, you might prefer to use [Circum](https://docs.circom.io/getting-started/installation/) or [Cairo](https://www.cairo-lang.org/tutorials/getting-started-with-cairo/). @@ -648,25 +632,25 @@ For your application, with different requirements, you might prefer to use [Circ In this program we compile the Zokrates programs [every time the server starts](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L60-L61). This is clearly a waste of resources, but this is a tutorial, optimized for simplicity. -If I were writing a production-level application, I'd check if I have a file with the compiled Zokrates programs at this minefield size, and if so use that. The same is true for deploying a verifier contract on-chain. +If I were writing a production-level application, I'd check if I have a file with the compiled Zokrates programs at this minefield size, and if so use that. The same is true for deploying a verifier contract onchain. ### Creating the verifier and prover keys {#key-creation} [Key creation](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L63-L69) is another pure calculation that needn't be done more than once for a given minefield size. Again, it is done only once for the sake of simplicity. -Additionally, we could use [a setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). The advantage of a setup ceremony is that you need either the entropy or some intermediate result from each participant to cheat on the zero-knowlege proof. If at least one ceremony participant is honest and deletes that information, the zero-knowledge proofs are safe from certain attacks. However, there is *no mechanism* to verify that information has been deleted from everywhere. If zero-knowledge proofs are critically important, you want to participate in the setup ceremony. +Additionally, we could use [a setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). The advantage of a setup ceremony is that you need either the entropy or some intermediate result from each participant to cheat on the zero-knowlege proof. If at least one ceremony participant is honest and deletes that information, the zero-knowledge proofs are safe from certain attacks. However, there is _no mechanism_ to verify that information has been deleted from everywhere. If zero-knowledge proofs are critically important, you want to participate in the setup ceremony. Here we rely on [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau), which had dozens of participants. It is probably safe enough, and much simpler. We also don't add entropy to the during key creation, which makes it easier for users to [verify the zero-knowledge configuration](#user-verify-zero-trust). ### Where to verify {#where-verification} -We can verify the zero-knowledge proofs either on-chain (which costs gas) or in the client (using [`verify`](https://zokrates.github.io/toolbox/zokrates_js.html#verifyverificationkey-proof)). I chose the first, because this lets you [verify the verifier](#user-verify-zero-trust) once and then trust that if doesn't change as long as the contract address for it stays the same. If verification was done on the client, you'd have to verify the code you receive each time you download the client. +We can verify the zero-knowledge proofs either onchain (which costs gas) or in the client (using [`verify`](https://zokrates.github.io/toolbox/zokrates_js.html#verifyverificationkey-proof)). I chose the first, because this lets you [verify the verifier](#user-verify-zero-trust) once and then trust that if doesn't change as long as the contract address for it stays the same. If verification was done on the client, you'd have to verify the code you receive each time you download the client. -Also, while this game is single player, a lot of blockchain games are multi-player. On-chain verification means you only verify the zero-knowledge proof once. Doing it in the client would require each client to verify independently. +Also, while this game is single player, a lot of blockchain games are multi-player. onchain verification means you only verify the zero-knowledge proof once. Doing it in the client would require each client to verify independently. ### Flatten the map in TypeScript or Zokrates? {#where-flatten} -In general, when processing can be done either in TypeScript or Zokrates, it is better to do it TypeScript, which is a lot faster, and does not require zero-knowledge proofs. This is the reason, for example, that we don't provide Zokrates with the hash and make it verify that it is correct. Hashing has to be done inside Zokrates, but the match between the returned hash and the hash on-chain can happen outside it. +In general, when processing can be done either in TypeScript or Zokrates, it is better to do it TypeScript, which is a lot faster, and does not require zero-knowledge proofs. This is the reason, for example, that we don't provide Zokrates with the hash and make it verify that it is correct. Hashing has to be done inside Zokrates, but the match between the returned hash and the hash onchain can happen outside it. However, we still [flatten the map in Zokrates](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L15-L20), whereas we could have done it in TypeScript. The reason is that the other options are, in my opinion, worse. @@ -685,12 +669,11 @@ This is clearly bad design for a production system, in which you'd store this in ## Conclusion: When is this the appropriate technique? {#conclusion} -So, now you know how to write a game with a server that stores secret state that doesn't belong on-chain. But in what cases should you do it? There are two main considerations. - -- *Long running game*: [As mentioned above](#why-zero-knowledge), in a short game you can just publish the state once the game is over and have everything verified then. But that is not an option when the game takes a long or indefinite time, and the state needs to stay secret. +So, now you know how to write a game with a server that stores secret state that doesn't belong onchain. But in what cases should you do it? There are two main considerations. -- *Some centralization acceptable*: Zero-knowledge proofs can verify integrity, that an entity is not faking the results. What they can't do is ensure that the entity will still be available and answer messages. In situations where availability also needs to be decentralized, zero-knowledge proofs are not a sufficient solution, and you need [multi-party computation](https://en.wikipedia.org/wiki/Secure_multi-party_computation). +- _Long running game_: [As mentioned above](#why-zero-knowledge), in a short game you can just publish the state once the game is over and have everything verified then. But that is not an option when the game takes a long or indefinite time, and the state needs to stay secret. +- _Some centralization acceptable_: Zero-knowledge proofs can verify integrity, that an entity is not faking the results. What they can't do is ensure that the entity will still be available and answer messages. In situations where availability also needs to be decentralized, zero-knowledge proofs are not a sufficient solution, and you need [multi-party computation](https://en.wikipedia.org/wiki/Secure_multi-party_computation). ### Acknowledgements {#acknowledgements} From 8d19c0308148a6c565a4d12e9d28fe3cae7b25b2 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 17 Feb 2025 20:41:16 -0600 Subject: [PATCH 34/39] @wackerow fixes Co-authored-by: Paul Wackerow <54227730+wackerow@users.noreply.github.com> --- .../content/developers/tutorials/secret-state/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 897f69237a2..8a073ae121f 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -69,7 +69,7 @@ We need [several tables](https://github.com/qbzzt/20240901-secret-state/blob/mai - `PlayerGame`: The key is the player's address. The data is: - - `gameId`: 32 byte value that is the hash of the map the player is playing on (the game identifier). + - `gameId`: 32-byte value that is the hash of the map the player is playing on (the game identifier). - `win`: a boolean that is whether the player won the game. - `lose`: a boolean that is whether the player lost the game. - `digNumber`: the number of successful digs in the game. @@ -78,7 +78,7 @@ We need [several tables](https://github.com/qbzzt/20240901-secret-state/blob/mai - `Map`: The key is a tuple of three values: - - `gameId`: 32 byte value that is the hash of the map the player is playing on (the game identifier). + - `gameId`: 32-byte value that is the hash of the map the player is playing on (the game identifier). - `x` coordinate - `y` coordinate @@ -270,7 +270,7 @@ def map2mineCount(bool[${width+2}][${height+2}] map, u32 x, u32 y) -> u8 { #### Why map border {#why-map-border} -Zero-knowlege proofs use [arithmetic circuits](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785), which don't have an easy equivalent to an `if` statement. Instead, they use the equivalent of the [conditional operator](https://en.wikipedia.org/wiki/Ternary_conditional_operator). If `a` can be either zero or one, you can calculate `if a { b } else { c }` as `ab+(1-a)c`. +Zero-knowledge proofs use [arithmetic circuits](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785), which don't have an easy equivalent to an `if` statement. Instead, they use the equivalent of the [conditional operator](https://en.wikipedia.org/wiki/Ternary_conditional_operator). If `a` can be either zero or one, you can calculate `if a { b } else { c }` as `ab+(1-a)c`. Because of this, a Zokrates `if` statement always evaluates both branches. For example, if you have this code: @@ -614,7 +614,7 @@ To do so: In any sufficiently complex application there are competing design goals that require trade-offs. Let's look at some of the tradeoffs and why the current solution is preferable to other options. -### Why zero-knowlege {#why-zero-knowledge} +### Why zero-knowledge {#why-zero-knowledge} For minesweeper you don't really need zero-knowledge. The server can always hold the map, and then just reveal all of it when the game is over. Then, at the end of the game, the smart contract can calculate the map hash, verify that it matches, and if it doesn't penalize the server or disregard the game completely. @@ -638,7 +638,7 @@ If I were writing a production-level application, I'd check if I have a file wit [Key creation](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L63-L69) is another pure calculation that needn't be done more than once for a given minefield size. Again, it is done only once for the sake of simplicity. -Additionally, we could use [a setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). The advantage of a setup ceremony is that you need either the entropy or some intermediate result from each participant to cheat on the zero-knowlege proof. If at least one ceremony participant is honest and deletes that information, the zero-knowledge proofs are safe from certain attacks. However, there is _no mechanism_ to verify that information has been deleted from everywhere. If zero-knowledge proofs are critically important, you want to participate in the setup ceremony. +Additionally, we could use [a setup ceremony](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony). The advantage of a setup ceremony is that you need either the entropy or some intermediate result from each participant to cheat on the zero-knowledge proof. If at least one ceremony participant is honest and deletes that information, the zero-knowledge proofs are safe from certain attacks. However, there is _no mechanism_ to verify that information has been deleted from everywhere. If zero-knowledge proofs are critically important, you want to participate in the setup ceremony. Here we rely on [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau), which had dozens of participants. It is probably safe enough, and much simpler. We also don't add entropy to the during key creation, which makes it easier for users to [verify the zero-knowledge configuration](#user-verify-zero-trust). From d6106a5e71ee1c0457288b869d99119a95dbac97 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 17 Feb 2025 21:33:23 -0600 Subject: [PATCH 35/39] Add tool versions and a few other updates --- .../tutorials/secret-state/index.md | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 8a073ae121f..ae4aee36ca3 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -5,7 +5,7 @@ author: Ori Pomerantz tags: ["server", "offchain", "centralized", "zero-knowledge", "zokrates", "mud"] skill: advanced lang: en -published: 2024-09-15 +published: 2025-03-15 --- _There are no secrets on the blockchain_. Everything that is posted on the blockchain is open to everybody to read. This is necessary, because the blockchain is based on anybody being able to verify it. However, games often rely on secret state. For example, the game of [minesweeper]() makes absolutely no sense if you can just go on a blockchain explorer and see the map. @@ -14,13 +14,15 @@ The simplest solution is to use a [server component](/developers/tutorials/serve After reading this article you will know how to create this kind of secret state holding server, a client for showing the state, and an onchain component for communication between the two. The main tools we use will be: -- [Zokrates](https://zokrates.github.io/) for zero-knowledge proofs and their verification. -- [Typescript](https://www.typescriptlang.org/) for both the server and the client. -- [Node](https://nodejs.org/en) for the server. -- [Viem](https://viem.sh/) for communication with the Blockchain. -- [MUD](https://mud.dev/) for onchain data management. Proper disclosure: While I'm writing this on my own time for Ethereum Foundation, my day job is working for [Lattice](https://lattice.xyz/) which makes this framework. -- [React](https://react.dev/) for the user interface of the client. -- [Vite](https://vitejs.dev/) for serving the client code. +| Tool | Purpose | Verified on version | +| --------------------------------------------- | ------------------------------------------------------- | ------------------: | +| [Zokrates](https://zokrates.github.io/) | Zero-knowledge proofs and their verification | 1.1.9 | +| [Typescript](https://www.typescriptlang.org/) | Programming language for both the server and the client | 5.4.2 | +| [Node](https://nodejs.org/en) | Running the server | 20.18.2 | +| [Viem](https://viem.sh/) | Communication with the Blockchain | 2.9.20 | +| [MUD](https://mud.dev/) | Onchain data management | 2.0.12 | +| [React](https://react.dev/) | Client user interface | 18.2.0 | +| [Vite](https://vitejs.dev/) | Serving the client code | 4.2.1 | ## Minesweeper example {#minesweeper} @@ -32,7 +34,7 @@ This application is written using [MUD](https://mud.dev/), a framework that lets To run the minesweeper example: -1. Make sure you [have the prerequisites installed](https://mud.dev/quickstart#prerequisites): [Node](https://mud.dev/quickstart#prerequisites), [Foundry](https://book.getfoundry.sh/getting-started/installation), [`git`](https://git-scm.com/downloads), and [`pnpm`](https://git-scm.com/downloads). +1. Make sure you [have the prerequisites installed](https://mud.dev/quickstart#prerequisites): [Node](https://mud.dev/quickstart#prerequisites), [Foundry](https://book.getfoundry.sh/getting-started/installation), [`git`](https://git-scm.com/downloads), [`pnpm`](https://git-scm.com/downloads), and [`mprocs`](https://github.com/pvolok/mprocs). 2. Clone the repository. @@ -47,15 +49,26 @@ To run the minesweeper example: pnpm install ``` -4. Start the program (including an [anvil](https://book.getfoundry.sh/anvil/) blockchain) and wait. + If Foundry was installed as part of `pnpm install`, you need to restart the command-line shell. + +4. Compile the contracts + + ```sh copy + cd packages/contracts + forge build + cd ../.. + ``` + + +5. Start the program (including an [anvil](https://book.getfoundry.sh/anvil/) blockchain) and wait. ```sh copy - pnpm dev + mprocs ``` Note that the startup takes a long time. To see the progress, first use the down arrow to scroll to the _contracts_ tab to see the MUD contracts being deployed. When you get the message _Waiting for file changes…_, the contracts are deployed and further progress will happen in the _server_ tab. There, you wait until you get the message _Verifier address: 0x...._. -5. Now you can browse to [the client](http://localhost:3000), click **New Game**, and start playing. +6. Now you can browse to [the client](http://localhost:3000), click **New Game**, and start playing. ### Tables {#tables} From 840afcdacd5101b115522289e145be0a6a476a86 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Mon, 17 Feb 2025 21:38:13 -0600 Subject: [PATCH 36/39] Added `mprocs` installation It won't hurt if it's already installed. --- public/content/developers/tutorials/secret-state/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index ae4aee36ca3..1a31ec82930 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -47,6 +47,7 @@ To run the minesweeper example: ```sh copy cd 20240901-secret-state/ pnpm install + npm install -g mprocs ``` If Foundry was installed as part of `pnpm install`, you need to restart the command-line shell. @@ -108,7 +109,7 @@ These flows coordinate execution between the client, the onchain component, and #### Initialization {#initialization-flow} -When you run `pnpm dev`, these steps happen: +When you run `mprocs`, these steps happen: 1. [`mprocs`](https://github.com/pvolok/mprocs) runs four components: From f6b36846898c65b0abe5b9871a1f8e695654ae72 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 18 Feb 2025 19:53:07 -0600 Subject: [PATCH 37/39] @wackerow edits. Co-authored-by: Paul Wackerow <54227730+wackerow@users.noreply.github.com> --- public/content/developers/tutorials/secret-state/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 1a31ec82930..e17f45577b9 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -508,7 +508,7 @@ All MUD functions in the same `System` go through the same access control, so I ### Zero-knowledge abuses {#zero-knowledge-abuses} -The math to verify Zokrates is beyond the scope of this tutorial (and my abilities). However, we can run various checks on the zero-knowledge code to verify that if it is not done correctly it fails. All of these tests are going to require us to change [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) and restart the entire application. IT is not sufficient to restart the server process, because it puts the application in an impossible state (the player has a game in progress, but the game is no longer available to the server). +The math to verify Zokrates is beyond the scope of this tutorial (and my abilities). However, we can run various checks on the zero-knowledge code to verify that if it is not done correctly it fails. All of these tests are going to require us to change [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) and restart the entire application. It is not sufficient to restart the server process, because it puts the application in an impossible state (the player has a game in progress, but the game is no longer available to the server). #### Wrong answer {#wrong-answer} From 64ee779216e09a0e7d49191c3c2351808bed3b4a Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 18 Feb 2025 19:57:19 -0600 Subject: [PATCH 38/39] Heading change --- public/content/developers/tutorials/secret-state/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index e17f45577b9..35999b7d9f4 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -681,7 +681,7 @@ In this application [`gamesInProgress`](https://github.com/qbzzt/20240901-secret This is clearly bad design for a production system, in which you'd store this information in a database. The only reason I used a variable here is because this is a tutorial and simplicity is the main consideration. -## Conclusion: When is this the appropriate technique? {#conclusion} +## Conclusion: Under what conditions is this the appropriate technique? {#conclusion} So, now you know how to write a game with a server that stores secret state that doesn't belong onchain. But in what cases should you do it? There are two main considerations. From 575aeeebd2c6b37e08d431d1ca04f94a3df7710c Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 18 Feb 2025 20:37:32 -0600 Subject: [PATCH 39/39] mproc screenshot and explanation --- .../tutorials/secret-state/index.md | 34 ++++++++++++++++++ .../tutorials/secret-state/mprocs.png | Bin 0 -> 588805 bytes 2 files changed, 34 insertions(+) create mode 100644 public/content/developers/tutorials/secret-state/mprocs.png diff --git a/public/content/developers/tutorials/secret-state/index.md b/public/content/developers/tutorials/secret-state/index.md index 35999b7d9f4..00eaec9f41c 100644 --- a/public/content/developers/tutorials/secret-state/index.md +++ b/public/content/developers/tutorials/secret-state/index.md @@ -69,6 +69,40 @@ To run the minesweeper example: Note that the startup takes a long time. To see the progress, first use the down arrow to scroll to the _contracts_ tab to see the MUD contracts being deployed. When you get the message _Waiting for file changes…_, the contracts are deployed and further progress will happen in the _server_ tab. There, you wait until you get the message _Verifier address: 0x...._. + If this step is successful, you will see the `mprocs` screen, with the different processes on the left and the console output for the currently selected process on the right. + + ![The mprocs screen](./mprocs.png) + + If there is a problem with `mprocs`, you can run the four processes manually, each in its own command line window: + + - **Anvil** + + ```sh + cd packages/contracts + anvil --base-fee 0 --block-time 2 + ``` + + - **Contracts** + + ```sh + cd packages/contracts + pnpm mud dev-contracts --rpc http://127.0.0.1:8545 + ``` + + - **Server** + + ```sh + cd packages/server + pnpm start + ``` + + - **Client** + + ```sh + cd packages/client + pnpm run dev + ``` + 6. Now you can browse to [the client](http://localhost:3000), click **New Game**, and start playing. ### Tables {#tables} diff --git a/public/content/developers/tutorials/secret-state/mprocs.png b/public/content/developers/tutorials/secret-state/mprocs.png new file mode 100644 index 0000000000000000000000000000000000000000..3364e25a6e2b744ad10e94368bb706f945ac3d75 GIT binary patch literal 588805 zcmce6Wn5dq@+eR!ZpDjRu|jZ%pruHQTcJ2bin|9W?poZ7v=l3rV!@$kDHM07xCRJG zUV7z!?|bjl`|?hHo87a!v$HdMW_D(FW3^tZ5aK<>LqkI&RDG$WgNBB~hlYl^i1Qd# zlO@{hf`&%$+CfoKOI1;kNz23aor9At8rsX)OharV-5->NCOXWRI7)JA`>#k+pUA1< z@LnY`aWmtRs3qXa4BAea_Q{S2~YQO8e&vPrQ{cZ#-6Hrnmdsqmeukxvb!w zz{_CIJqR-YZZF@{?xgb(T4y>SbGI}XZCmxiwxI{{^~Vpc=Q?6qkD}!8?J=CY8Tc1WvIJ_wq%EtV9U@PEP5Yp(k(emqDS{a*USiHxF z%nq9V^NVosMg!KJoBNlmb1R1suZ|JT4#7Oer!^PYYs9_iRG4U#THU!s??RoJTuz;j zB7MIUGIe7Mrr;`dTgK2ZqzccohRum<;eW7zs)B{ynzGUE*kbNS z+{-K8sUjtTV2T;90l2$s6;Y=9GZ!>EH!5*rY-prVyTV7Q?N&jauiA^C`1NWIVH*|q z(&7vOa$wx}e(F=7r?sryBc`AN#>~0{*1O%LtAxTLnEp*Q~(NeMvm$!*PLv;LRwzc={_2>^})+Lgs~E1=Bq$B`X;!lfQHYO&ta8yxX2g znMjQlYP>L}yB#2D@Ou)rCH}E7y%8U6^F3M%N&;wyMZ}G&l%0BL5g}Ya!@_ZV;Yn{o6=pmZ0cT8Fe8E)du?zj*`ziXz`-A&+`-wKKt$?vgzc?1sJ5;sVWVwp; zG!|bjDoU!hsr_N;WUo$rH9WD+561{Bg;m zl()0Dly_~wmo|mq@_W8(-9NrF=2P~c2LIe0 z#9pag-5jj^46K{{MLaV(WnQ*c1zJNBs~3t9$hNH?SkIR~H7aN@v&OPkA7r3|#WOqF z+flz4pL1)s%(H}~HfYzU&e)et(Uh54S2Ps4x47q=<8CpKMa3q^&VL%){`AB3`CH29 z%+W6v1-92YPjjQPxiwmITJl2p8%5Rmc?6g2eAe;q}eIkw+>E;@E-dEQsERofaQ8m!C)%t{|B97-MriVD-3=jDk07M*jBZE;$nTN-aM zJkpXfY=7R)-9CC#)tT2hAJP~+B;G5Y?4IWSd&@Exma{ zD|L}z$oTE$7EtQDzUkk8w_k%zz?I)!Js<g^#DH-=?59gfF{3=ORvi@ zsPz6_bk+yMq&b(m6V=&trF0*SfFtMKap>yq%0b_S>gC;P<@DT4)~U%cYLFeyV3iiL@tf!T!Zi2V%H;IS-@ApQu!7yLi?K7@s| zLEI4}Pbj}V+oqh1;aLBDaj&qVxEEbWs7oA=Uri85?n1?f@0ujXs=zv{yd2+@kf9{{ zB8<~)rmYG#H9I9#mOMaWU26Tss&MdiOaWD(Y!a!MjEnE`p&#;A|J;|%=?OV*P3%?w zO#foPm@2yJ`*cZ; zLB-B%DcJ(q0w7%LDKjsZv+trx2stEot!P4hEn}5q9ZwXe5FZ|4+slyJYG1Q&9OXN> zm~f(TI_8}tW87uDW87&~3)XoMlwu2ff0LJAmH$@a(RbDFu!~`T2Y(gz#WcDf3p9g5 z?7V%+Y<^X2Y<{Qy zu64X2uQ6z%vA4LFad*=b%hO~pXTn7KbR%fu!5KdV>j3`^RW87^t^U3CS!wRT%z#8Z zh|h!jjmgzq+9&pL^~8^SZ|-mN)?NR^iNx6sw0`vGUApH*)Z8xJ?2u)-nj*d{8C~dp z)^+ed7@`QL00xU~w8x!3HhA~d$$Y29any0s@yDOM_d#LNsvCf6(%R%1pYaj1x zUYMx2b|K9k;K$BAOHaSld>L&eYo&4mwXwPn-7(GsXHJCYjoU7#`F_++~%1g_WOp0P~cD`|x^%y&!uce&+_+_hY$grTe&?vxa-DcwlLid+$ zXQhxP(4}BC06MlUG&ebz?+m2!Iq6N72Np_9N`NlHp^+cs3#pP3{fN)!X-nl%qH`^* zz;;B?r4>3LXZ-T&ZW?`QSf+*H_JO zb3i9X&GAC++c0+)gz#>di5f#lHr6YHL>J+6Xh z3YS8w55K?CLo0Pa>kmZp+U!r24Ejhb?aPf%T1eQHe3wy}MTB^zU7!lN2=v0w_`+x5 z1q0C8d>{-dpqEBD7;&~ns_$OCLgPl2anLZ)pQ2%*O6aI0i%$DLy-bv~xz4#Y6>P?2l-pk8P5&-b^_2u&w;&b(|0|-b+NC5Z+0fK_O zs2;qY{w`jYe!MQ8tp6P3-{UCRdRlupxOq9ax-k76*V4+>+e?Op^5*2!4O!5PIf6b@MdL197Ze*pYnP5(jp zU!X?+0Ttwz5dLq_|7!X_LG?XtJrrG?QAoXH|FdBK0{-vDe*sDZ{?h(my!a=h|51zL zv@D)9;D1(47LTrj?ytW~=b)sihssf(+204l8TH5c&m2|8qTh8y+Tx<2$)Tw#$?N%{ z9|dD~n~7ZewsEYK2l9`sYAvvUvB^0FF)7^7s1|gM@hDQY<+U&|=`={Oc67B#-OG}EFY>+^Yw7{a}PvhCs3@+J?7Lo6_ z)}NjYp~rQLg#H{Pv#KB7lF&6%r2?u`S)F+TGD$B(d$xt1MuD`jw3(+!&m+yQ8m|xDu7sj#7biO4R@T~QXM+wXg$O^7Tl{oA2p zxomLI%Y9|@+ibI!1llFFqxW{lD$vxBO4v&u5NT>2SI9@c{`Ebx5n2>ORzU(!D?k;X zS!6~qDJ^qIPm_{VMmbgX7@}C0tC8nSX-tkEHfo;@7lFOMp?X_l&stg|CpSqPA4K<; zt99Rw<_}UZ&HC2P#Ne0kuc)T;Nr6_Eun=J*0Q+!IBk%twNVSL!qG#uW(yR_8C zEB4hC?6xJNyCMQ9x(FLW78xFINH$TylU`;$J_)o*l7j95-Z@~1@d%aU^b9hhto0t6 zEX)EW_U}3ik21K_ahZFZZ?TItkj1`eJ@-Y|K$#wr4`uDRz3)K9&l1SGISD>s4UZuV z(5$wI6-(Vo!xzjOA@4xbXk{>*M5&(T#arvG%a z=Ywse*ZY2yFCvU;v)%IkPc)|l25s+4p|r;r=8V6`!aHwmzW5*UiCT*q6N(P*HZJ zO*s2%{A_v=?kqI>iI+5foy;B7yfgYucKYuY77xb4z{yTgb8w14$)YG?@z&%Ju6|_w zNjztQ6@h*P`aC|1h!|LG1gTbR6xH)TI3rw7L07k*qPdOYJg}eTA?F{4c7flIV+zXW zV^M>%TAiAIyK9Kz*fb^x{c)7Mz}N^JZw1b~TVnW_8XdG#`c_?;=6<|m$q8VS@V76o zztZ`^;jYHY;eKM;2Mad4+d#Tm9pq&;E#j|e2AQ9&xH>1IN}-_(AX=o;12hUX zO@`>SJ56Y<5!mgny~%CEgxF#O!$64^p?}Wdbo)J#pZhy7;VtW=`CF-0&nyN==F+>Z zro&!Fgh=08k4u|r5R=<9)W_@4yHA@G-8|qxzK?YP_H~Z=wJz>gu$%k|Hq47zr1tb~ zNr*Lh!91$>9uh5oHF=0#`zcu~{o@UYOLG-@3qB~ihFF|++{N8!UJYDL-WQ=*1QA7a z3#TO#?0&OnJcbejL+2mnc9Fj{<5t*{SeO0nO|hb7kbc5J(9e$MV~AXMW(fOAbWu*< zrRDo%AfhVfPMlkT*l)(}oa0kdgX53!*ygXS#rW(#vGH|r_KA`BI?Gs){B1-yJ$0$H zD#`aveEP0uom9tScc(Q78blN_&;hCOkKaS6(^j2%!I-E#?PC%1&pbwBJnrZE%(*tV zw1@{quB)=m4W$E(GWi<4{^zI$^xT^m?|JP<(-Oi5Veo6 z`xd?m1HF+{#ia-uHCZ~fnC(Ab56tR#xGIpO6Z6*+-CA57R{W1wq4!YvQ_w8p)8UWT zY`F`Je`TyrcDJICMNyrd{hDV3SGJKGftoBW=)VZ*RP+23Vz3`bZfh{Wh{6vi)-pm? z|C{`G$go!%9P%&XOLY7OEC`H{kH}A35p(axJ`;>`NkYtmfT6dXqhrb<}OS;hp^IaW=r)?icdAXc+LgCF`)F(sW$9Yh+Ov> zNb|l3#aBjF3;5(cBe|t>GV&d043P~-$9M-a89)&2Pyc|QL^H;{i^PBx3igbH0&Nd2 zRcwSGOt3(Sl`RdB9YE}e{Byai7CbBMBVr^34hP@(kiH8;_QXLaRfRyN!~r?5h>CpqJA7%+MIx%hg^6_hGE^S+;kWw{6hkeA1=*7di@xSX+jB)ZSKFp zEk0DFtMI8Sno5S>j(y@&AnsC9rX!SHWsZEo>XD-TekjsiOv9t@waM65lydX^aPRBG zitX(U1Njw~UAk0%S9i%hI=P1utR;T{J6`Cz8d6k-&*{KkbuH8M6?unQFxlO!F!7TI z;r<~#)>1n!QD{@5Z3L>m7?x*{=qr-5;JjrCjVsbYnNdAiRU1VNT`XFT59-uB>oHST z$#Q2YQ~Km;4;h<^3Woe1F8wGl>d&m&W;a15|+CPbG`Ztj^$W}8X5J!qnPlj6oP3*yck;yF^ z(Oif)_j-;|eJ_g@>2hy(A069T_2C+L2zu{{;E1!kA9@!fRl31gzs`)GYk3I*`q_B~ ziMZ)HevATpah?a`9&mf*Pp5=yI;)Mf3rfwYBQL4j9Df)YG!^MMa1$9Zpl~)C`o%WF$G+aI_1)I} za)3(n$s`vVpW@;R4$ZfJo>>bF^K@Sqh+I*SsIflRGj5}A-i97ek$!7y=s-ca%gi0F zzk8JKU_aR;F}mDX$LFE`v5PE)7y2|^Q?O;_Qzh*(@%)yn1?2Tff$!7hnT65ijDv2M zT^%voL7mq1V|^MIvs~dXrlQ))A?6lJP=6d70v(V2)ec$3A3ec!ksz&Vrh3z^p_=#I zL;<+V?{Ho0=Njue36~8#X`0XGpb6R6!CN;@zxoIdmavWwFqb7S;m?A}md&tTT+v&1 zSCMZnWYBhwp$=h>o?zj%*!LpcUqY<1pxVO6{GXp-V;ncsg= z2ehn2&MYSKgd2l5b*;=KP&(PmU9q7!?@ztOIrkXE@GReN>Paq8ln*5H9F0-78yMdq z`~I^@LeRi@ogtLSg|qPO?7IKP?}PZ2xJe~ zJ;dAN%P|yvs~$&&=8Qvh4I@YPLu|G{`?{x7x5<(CWKZ{_ZytZODM`01E0a=mSB`VQ zS+6|qH@C#bV7@`5=-&2cVUPkw>b|>e1ib;*gY{&O!EV$3Qj+)DUHes%u%JWqR!4nF zzRikDpWf0iKIPdsarjxtIt{TB)d4qOgAkRL$0XKVQQ68rJ_h)x~>F1(=Y zadwvn-a2sQGhR8J=@Vp>Vq2RoG2>3l0$8PC{&^R5Jf#bANEn(IxaOt)u|$R)TC_%& zHGH~OT_&|T-M8EoNYI}%*zC>>Q3Zx(2RYkXo}uOkS&dyL5IXb zmws7^h_8~vqpQEx{u12`1mx|2hUq7FsIo5@pYs z`R?9GCqMfIDa<|$f$x1j=~oo>Dq3(xGc&zatL>4#sRfO@89walBiup!g`gztNrojh ziCgDYncFLADBN6QbKvQ6ciP=)vz^Oco3F#Ed0c<)9k;fgMalhx^`?_Ae8rWsmi(&- zBE+w~>m<)wOi9Qg!Q+HdT51JelvDeNG9$=q?|NlEnZPH{^`{I)6bbK};sJb6pkGV- zPMxklsqowj?hJR`;L#!An{8>IQ+XG~=gSoZXbwH%-*=3dWIZQ5pci@ZEA-HDw@J%$ zA1`~S1$dnyO3JXUH+o+*h)Z&BF28r!z`!GdrjX(4IVRtxl|^3gjF5%@5PNuq{FGH5 zVh5jGVwN8~(u_ZXWSfKuap(Ti5#?!9RtEjGN$u!i@aoT#Mdv-S%`zJNV~9Ms7|iv? zoFrwB=$xXH{gjb=P?xzQ{ziqKBFrFTzWp)I9@UlK2I*l5EuVi%!P@!D+*|Z~g^bS{ z)40qU9xX$2S3n8pyc8*@{ZQnO+b|i5C)E>S0FX;I>^?iyzk)>SDqrPp6cm>R&O0;( z^GBQA7u?hz&X&_dj%btK;yX&*huy_3nI}GP%em@9INXMT9zFbABX4y(cl5paJ=xA- z*87_1Lg5v^qP+6M+|cNoH}z*5$J6+O0Xy)!9^;czbInbvfW#H#M8RTP-I3HX{r!1K zExj4h?BPDoC$b^nc)Oh&g9Cn0L+cx)&+4~i*hXuM+f{Efm&?GH$Iyc6LQk@yydqm` zclnBsYo-!B4NSXBhMi~Nc00dJcQe715#JD87o`YhBBvY8 z3cV$15u%)bILjUnGdYfA&;gtW2NwF06=AuA207m#zrkED6d_vBmO_{&RM##QHY!{| z(o1SL68+K|UgZ6#Lm9S(YnDrCeL?Z;DRm#PRVehwKRq-f16q)YFp@g-``PIT%8`wr zr}A58vHk!|^rXLu-Yr!L@ev19)YzR!VYPcrnP!Br*}01xAzNi3=#+{C%Di9NFY7?D zASdL5N;H_PKD+p1UaNgMt>+i>pjSb{t`O+RiuFerW8UGSuYEf2%a~Z4<@3pdlM0B2 z_gp?|5BS-d{yJ`BuD*IDtD!!K@YswA%%Y#`kDR<2ru6PlU=M@5%08ZGM<|nj2)_zW z?d8N zmQCl_;#CLYWxXU0`3mz#b^jC!T=YQXTLfb16dcO9Gx|1G|93)$M$+?d5nQ2WRGx!q zp7-iBuh@0#ca!kHxrL1|8>S#r>0#}sTkQHdQaeMFZP9(i4H>W7g%bMDaTC8w%sXC( z3O#GPgmmRB*?A!c=l#XPcpNqqN@|vzX8Pb)SI%4UpI_i}^FQxPCFOW~L%`TdA^>PA z!m9*ygGF)hR$d1Pc+`*_1QthN~*|Y`vEx$BZ}{WRYHeu>ugUX(ixqZvENueTy{H-dCynI z!9^azqW4*_2#_{D>NC&SAIp6Cb1)|9bU%bc!nQqzsJVo@GKJVfwt9*0U=+0|rw4rq zGlP+0!?q9McI9r~8`0{k{;jTxrij8GtE`vmPQqHqW&XO!^w#?+Ff2LCX z&1s^ssDBN`6PB1VJB#}q!44dj+E&FWOSxQr9mcP?0|ORMB@J`6TaBY1d8Pm<+dc9l zu>NeK6ryMSmI4i8Ojjpkdpvl&sxORZ7_jNOcH;!ZOzo zdtNK1d4h`(du|CVkuoA|B9>Gkc)TY%(fp;IPQ#OC)mXFOFXrCw=!qmWkkTZx$gfCM z^Wq8H8;+dpCyl93s!bS*N`(&V7Z_iJGBMksA`r>@y>Gq&oo}SBd!oMM?@I^%lJ$rr z;?}loX)bkkC@m$dKr@`(wu+lv)6B}4=G*s-m4C*}HkDG?aLlbUvC z2S37EeUceF958)%&4&uCB_TG_PkgC@han^*YBdQDk5!aSV{7!4iSFpnBjI%uD?NmL z-|KnZ)z3;V>Khroudp%$loV5O;{icdRZ_dfgl||L+cir1UPWqxsm{X_N)7@&?^q8(=SBu4(S`n_1wK2TTwED7*Qb(Bw(SeU z*H1Ks6o_T;B@D^8wItM#z;>A2y66|0^2+BzyESgn1tL>5gTWWIq4Y5|;k3WYTkk)yhjzO5pDQSFI z5T^$r7%Lj7h2(Rz$AZc=NG>f5zV7}j;_5H>mq?t9Dm{D{Bfyk%$sHY^DmNZTpXJ8y zBl+`${<&$vZEsMB>_H5Dtvz%1P2SBHanva@DP7R6QY(fEj$S$h{;ac}2`qO13d6GQ z7$)_mpXa34{FTR=q`l%C%D!jTzouPsmlvGqWjWq6Gu{@Zo~ij$>(*qlNCx0_JA|HW zx6CsY0W`aV&S$tU*U};NsfVi)b=7q3azoBe{NlVACG=GGD!47QufWKGGBN`T4q=IJ zVT)j=0VyM+j+yc7#g%(9KI};c}GF7jjaI+&bj_h5T?s(<^lt`{1V+LGm(qI0t?$J}lx@?Fdg^ z(3xvIFS^3^i}`%>6GtxMBau)5LczwP0>ps*{V`Yrxe7loVitpwjbC;hFfOqjq5`R_ z$9u$$K)LR}>N+tr5r~RdKAXRNzvZesWPSubbL%thsM^f3_7l}2ceyh+jWUF&5JpwPGU}FcI~Bf z{n6HZljU8sfE`|?FBC(H80eSxZm6po-TWpVGEZ8K60}aOLf0b7ScD@ovM9;*JY6Tu zPFAx!69T@`hGj*4_-v-XoY-W0SfFe5#RY^kD_G{;^6`3mrmUY+M&&;VxoHU``*t4& zRW!Nsajwp1kprx~?s`}lv0`!y4jSgWhG+>b}2aw%?gw`$MA*7U>oev z`}V1y)De&K{f3;pU1|^HTWi*cD1%*`a_qHLnwf1cT4u!_t6aMU9{*&#xX3C?yG!Sg z-lv?V>8k>1BinqB*AW;J_l2smywN_5#gQU`$MbX7M+SG96wcRIpUFD&zkS=cJx!cH zC^HdRu4f%Cn*`v1n|)!yekq4UpQi7Y z@n^yh$QUqOs&$``>Tiu~w|+u4GU)wO62KFpax0 zp9E$b9~h23N9R^5#~zm9QX)VSu*gpkYeqp1imn(>)WOAlZbi6o6=+?R^pkbzC+D8z zar%uQ5nogLsE1eQtgy+3bp0iJrToB0L%@9BmH3l#E~9;X4tP;gmJ~cj`=l(gV6nDs zOT-sHiGQ7lv=I38J(9+JdH%S4kBP5{4+@l>3&y+@b)V+1M2>!FT>11le#Pct%Cwa+ zB!4ZStS~#U)!TPjOy&l{mks(uPgRvrY3@%O?^5Kh?iPVQ?l}nzxQr{?t(Y`EN$MkY zZCriR<5v`LJLocI_W89J-5}|n?9(NHH(8M@fRD5-6q!v->{ChK&`>X71`gc|*BSEH z!OM!}TtPMj694cqCESBYl|1YEA3d@U1ohX?p1D0dO&LxI5mg;&TgA)b%i8sq`n)?~4T}i?Z zzib=GMk8`s!ar9s&-EfGUg$>%=eI}jcBLj@%=r=_i*K6 zGdY=1x{f$KlEsuMUiEDaup6nLHo3nJ*S$33DyFao)Xs9EMS*;FqN zH)(F`2|k*~u1`k`EJ3i(=x?<8@|9;5Fx&qJX5uYtj-dn!_e{1xl z0=ykpG5jgoFmN-sX!UVoR_2&v(!-?c*-Xg&$U&)ftC!+^CE)v~kE7=b$GW#u0V4JB ztpGN}S{UmJX_fVqHh#!Ua~_${y3FCQpJ??&DKJ|=ktdbOL zGA@=T!=_?0rR;xxY*z__YKz(R;GMDWeDYa#yCF(4qo!Ip-zsuXhA5d_8LWcdbZeVT zjJWv*eP-JW7(Ou5pTL-;UIg4DLD=Z6ng*LM#;&kdiWstYF3+2L2x}vk^wvdB1l%fa z)OV-$A7zyQ$XC*Ks?V+N1lFT&emY-koxvd+`Ns{#r5;n!L(cNEA>6HBkrX>W;8{1Y zOzq5DSkNb#5(N#5vmhN?vRATekWgb%$>gWLTz^1O5Kb)&wL?fWPx-)YAV1fEwK#&yFNj3C0y&EuN5rD5ik^J1LO!-2Jv+ryQ9g<;W7%I&*#%A+%?KdD z7a7j==?atfj{C#0iVgUSPddT6Iv?P72(gyoBx9qPG8&@$3D%BBq4nQ7>zI*OfTT^V z?pR>tiNF0vTF@bn3r!)epy2?*`(S1k4j)+&nl0->g7dB(Q$}K|OggT=KV|=gc-bjem-`I7>%fY2A_CI-Q zeDugTDZY9-)7M=`#!wteE5kgH*=-H)a^cdAez}y((6=2+^~NW6sDqKQ}fg(tSUW}nc`*#<$>leqh&y;J64xzP6-Q)0U@M{sv*6Dx(j~y#oc?>LD#pD z(gR<6hm_}0jux_1PF4FW(inA4#Tu3NFe4_NnOI4z20a((%7vFB$oP2_IK%}aL=p41 ztn{2*aewzyVY>&1M&tn*?e3VlSx_NK`c|S)trqIoX20x~S%tD3=et7KSQ+(uK2sbO z<=gNXiaTJ#=>5rZoy(UPF7cd@?H$G;`DzvrlbIXkWbZ5XTM}NY+dhb$MM+OyQj)|v z84)M$#X&W4+E=wUWcIQ ze0p!?k>+^3JB{ZMDqL1j{e1cMp_Su4fMOBoXe0)W_w;#b`}yY-Fla;u`iDjNyvNZa z&Rk6!ro8+*@7g1)sKZ;?SZN;F6wUfBcY~~*z-rbo_el`G%o z-tK2&wj?*ts`2M^y2WQX60*Tsjwr!1PD=+QY({51S0nX^f($X6(v%TYWtc|hQ?s!p zY#x3SA&w*j$wvf7eGSdy*JD=qxQNt#NJ&%XQkXb{ibwERXP{@M{R?T(+m_vuvp0hv zl9mfd*@!l&9(}Dx$*K~E;S0o&rjKud8)hh&apfWo1_xHcd?*B8W+eH6cRC78O{7_4 zq|kvLz$nJ{92IJIf!o}m$CP|W@dcxCCyvj9x^Ua;1!^T9Q8#ib50~H-G{k4Ex|b{x zJ!%4nQA)(XFnxGU)Y?CC`HtR6ecyQ0t~64(c1t|Ut{`%kDsgs{T)_6aFX_pqjcoo- zR=*&S|0Ay{7zPwtQ5Neu;!*UU=3P(YJgj0~Sq4DzfRE_?5o9Mj4)O6v`O$oVE^~9v z5qE+VDgaBwb-yX}X;R5gns4{49x!6rh=E}Tu};rg|DF}-ylH14%SX+y=b(?9tk}o8 zM&PqyI^UDY>E6iaK;_}gCdkoUx>4hUQq?YMeY&&$vT!?)t~XO)BvkE({&1|kLN8|* zpUI`x{27(fyxlM!7*~7#Fwfw#{i=(X!8+#IlH) zXZ;z0{%~4;kR>_rlZ|#v=}w(~7WEZyjN1l!V?-B{+m@%R;jC$f&vB|E_93;xI} zwCOQ6pxIt&ZkBzb`f{F1#W!C&oSq#?1cJZ95Ybu-tW*wrzDsbxTpc9fey>y>2YmGwO)FNm4* zn#$Y`@8WubQBT>D9pa8%D+vSgB7PKPDM_WryeGWN^awg&;{dFUQY~!n9Y~f79_{FT zWcJ`xam<-4$}-Op(}enuEGkOO@w?#sjs<3Z%qkiMq$~Pg!Aty3a`}Mp?(|WrMd-RX_vNQ#HHG;;?8D3vhkCr^? zO!w#nq_K(opyC~4Hrj_-@~)!`XCgbpO(H|b(XrSf!DMhTPj zb+X}8rHfONh9P}GkKpVhQ^nv+ar~4zkrCZ^^wYAuYG)xb}yna)w{Z1*?RNQQJnXGiaY_U7uKeLmY}{KigVETC-zxF zk}kZGF2$aPg>5xUA?XaM9oUq7DO)ye5jXGelzu~tlJcsS-O*K)h0hULyr%0bB5rl> ze^e?-a=XaTz2Z1Isy26n0!2C6kqrb^c*n_IHUuHYFo2|sdMj);n8mI}889~U5;hb< zu3}C1B`MC29G|K;3E%c2I7hxixWYi{Y3gLL8e*QCk^fGM9;1W^UKdxkvGxU?ERueT zt5AU?P-!x^h0mi7X*9<{pGNyblp+K>Nxv-sUu<^fBNuNkS7kxeh$zT4=z6Jm9O8G| zbXOV8Ji$1!ODc+Ny0f!HEWCqEKNB9~fu-eUMAE-2U(ooiJ9-r#a#gv4_j0iPU_aq^ zr22z;Rqgz2p^xhReAj~t^Ji>l^ZS8QnYaRyeWNg~K)(U1l1J)YV`+l+m63IC&)ATh z=CdJu2H69|Mn4S-uWU7@;Kv&aCl80}6Yl!A=4a#MD`tP_Ot`jM#goD*0ZP$o-upji zSD@1?>Zd)Q4W;*YtrNAFgOR@dwT}}={g+1lgWdU}xfKYXw<(zK6E2_BhAoZgBh*D* zx<=G{{(w6%m){u<@7?GbKPdhtUoJ%V0hG!BFk1aBvq(aW$DG4#9)M@8A69;t&&P22 z2w)PRD|VCcV-kcB6JfmP=c4ia)AwKv8Qb|bJ12lVe_$4qmO+k;ru9BNu&OJvWu&CD z$5;I7$E|fT)5ND*{RMm%XaLf`oZO`I@O>^_jD@r5$I%HiPIvsSB&~;H0vkLdz(^}-i>o!2n2#Fb)%+_<8*vs_ z%EF?-5IZX@L{>plCT*v`WMQ(eDQBmuUck%H%2UvJRSfDVAkwZ()f))HLs*~Zd;hX@ zsFn2H;6BfzVkLW}$rh6Zoov9vv9A zveN(7=dju+G!bimk?SG;Ud8E6$Uzdmhn`aGLw5Tocmv+6l%k7%Exhc92xWrEcDq|U zIIvd{eHwy>Evco-_zMo)e9>RZ^W!~y?cTik9PlOi8iE#i4QvE981{!Qtfg807%Zw{ z6tLKGjbOoYdT2hUqJQLAT!c&yVY0bQMvEQ?j_fj?SK++)tdtraiwjUo>)GgK6Ofa3 zlB4oH1Q#ecty~OR^UO(|4%MP><6YkmBOm=U?D0bJ^^ld$Z}HCI@|uuSkX2zIjz^U}sa%WU38cwk zdZYXJ$Y78V(B;~Tf3_X;=(9{yO3VaP?c6w~3+gl$&1AJyW^!!HTC3{B{I*}qcTApk z#w6jK1|uqz*#d_eBdQyQ6ZU8_d;gtvl9nh^bNuQu`P&`wVC za?qr3VSMH|#C}7;ouki`I94D5}kx__b$=EzhbuBt=3xla=Oz zX-HPIt!T+c$#>H#YkcD{1vE${_9H2-c;#Y0rg=GXv6p88m@~;?NJk-$Pqlw5@uf@L zs*`5Oq(2fL47DzK)Q}iZz0K7Wh{Q~+uW?ddOUC5k2A2^>yy;T~?tJTo+vSi*22aGL!KS4@Gqfgs zot|NG2EDWKaNJtU_L@DE_0uHp`jz%;xH4o>+$F87h3z}AkmpKoeeNP8cXaYfQcqR< z%^X9w88j?daYIjbrR*nnixltNdsI{nBu(_Y&coM}sK!;9h!*7W)hpo`ebP7PkN2A+ z%{#D`l3|vCO#ZcQ&U#pZ8c&vP&DX^XW1>atElrV!kpl)XTF}VU)Ql-ou#?EC*K#X) zke7J0L#>|0{7BPznN7vatT|f-si#;WT5z>k2;vsVl??pee)RE&ze4t00R4^XhIZIc z2^hp5^N-L}lz;r0TbgG-IHeg=6Q3*2Qk;@+`5O_Rsoz66)=9+q_UXne6yhkI~Qnh)UGIh;&N{eAQpG!e>%}GKtR9@}9K=AKGoI=d~Cwhz1Ob zhv?HtmF`VSOy7D~F(KPAcGmZn?|F*0cxS_gcV$O_XS={xz z3wX-|Fa__ver|dz6cS36hiAUcSU+dsJF;=GWBTRQR*BdE{I(2{t6tpZoU7Z$V<@3_o=Ik&2^EV_$L?_-DawS>?2nA?9QAQkHcuI@=b;kaa5P_9x|& zdG(?+PMGa6pbz57aRheTIS~Myg3ri~z*^a$weU!MR+M$qRPTM%%3-jK9Ibb=Y(m}7 z*_#U4P*9Ep%YW8ysAZx^j=NooSa?mz*RRI1?inqpqn*0b{r6H5vHGO?g<@A7eyzwZ zl8Qdwny%$D>UuA}O0foF(CF)#_kRCPS%77j!tn~y%b0wZp6aA82_Mhb|BTDQEb^g& zae#=79iOT+ALkpdTvE2tKepz7?a=>Qw(5xaS1f4AAyd8%k^{Z)@6G8ruK+}FEL5`oAIO{rGWvBM% zaqrbS$AWJ@MKAXb-0DQQh4QojyU=;9um;sNm%n&z^bUw`-6VSrIxB~zh5~G&z+1$x z0h`i|o>1$+`9=^WC0|6AZZpaozXl<_tKFBe41v`_oDJcF|BJo1ii)G_`h5cgNpN>3 z!6k&?&}bmIOOOr@!4o6|X*9S)fCLZj4k19}?j*PbcXwzx#q)gM-tTvA&(%I-4=xy^ ztGa5{>RGF%{O7M8vvl&-?JnJ;AaMJ!A9)A=fK?uYI(=_zyJW4tADMXF+aEP}7rvTD zR7O+o#yAwv$Q-aXLihYW@|wzV+~mFaZoVpGf2^}g?(;~<3k}?)52k*Z+jD3asy^V* z7gDgFz6m%l|4z*^J{FD3ot%&j3T@+b-EHMC#8N4bbw_hP7ZH7_929>LGa>8eJ44Wc&^)SAhW2bs*gR?Bx(m%B z8F{f{2-L>bg+p%E-Are2F#j;Ue`^D4H?4MAEgTEr%z~`AEyv8d=5P)r{a|9tE%g?O ziI^>(*CZV7pJUE7w9eX4ij8POab&g*f$FFa%^cE4hG5?nVYRw2>OC8x;dnIP)8`zJ zae9Xl_|dNq{jGuNI6IhAL7Aj2WJw5b*(S_hd4XG?YnPV%A~(XHPf4z)q`&YL1*X|5 zDy=*lPeaPWPA#@|!y`it{*?!x?tfU!e@~JlU^p?@q3O{XVw*jWpKM%{o=q|l`N*uo z6~4bHRI^R}6=y0p?YB!58Hu9H*D4^3SVfzOrX`;)b9G{Bz-&F39*B9wBxfncUsCUf zuk$#v;qu00pfe;ySx@Y3)8E^lBw&J7vUzZD70QL+YTt&kdUgo*t}-3F8EhnRDFgW} z#?~DcX*8u|YTD%Tij0Tt)(B7?mX;ngRjm{YPYE4VFn-o>fF_w-tUKZdj8u{Cx!XAE zTiR>FB34@VoRFBN;wi%M(5`~k#YPuP6z)g1CCsU9Zp#)&^+GAV*ZzOzSIkAWL0hI7 z4J^x$38<$<2j==~>}O9o@-Cf2RlOUr8W%JWX7u!vI{nfAF-^;u57yIV&{V}=$1*(l z8>TI!IR>&sbnW&RY-f3z%!^`^_pU^(|NX>sXrHr*-yVbA<0U~)Dt&HtiQZNL#T$Yp zZbkNlU=O+KbOZ9!T$*qGgoU1uu@ecRZ(qFm@mUkq6?C=c<9T@umM!A*I+yP*-2kD9 z@f?(T7>7mbu|smOmJs}~Uw^TJyek*E2mjKNyXeSGEak;Uv`^StKxOgMH)P7kGl$fd zpMy98J&d#ECs7jlZ;efOI#aZNx|lVH0k+HrU=xUweVlx3A3S8p+D>q7rSFRlG}pJt z3pf-@;qI^^=3*!|LQ$3MHfzPENNja{P=50_lc<)}^OLvDKJ`D=<#wERBVHX%{VF?d z_H;asY=6aL9F{cbuYh$y!9YhZV(ZLhEL`?sRb~zjx>y(9+Bm1ydCC{@uY2}iUfTco zS03em(DWB6v^Cf$dA6Xg_RN)S#U2up6yq$EcEr8km?O)#akoU2eZx6!v6n z#Pj2cR#?fvAE|eAqn|VQebc-hdx@@lhx48OaOAm&1+(ku*)l4jYfzqzRv!#;nfqEy z^8;y6x@2SNs#vA_O*l7czquUQ8casTQJMpNDU2IY*?Wr0l(m~4Yu__L?4r`W?P?56 zub6AY{qh(%f_GIB5qBx}Yk`--#B%dyhUZgf>&@MoIIfog(Lmm#pMgH=!nS6HA+r4|v`vRqhUzre6KK2|`}Sjz+GM{*UJLqGhxNbu4`W7n z5(+>1_)FxxdfaftZZ8elOGeK6g>75yplKXLLt6dlJlokMf!_D;In$5f3ELd$Bz3ol zb(MRdeigwNYWc!P+KDA)WZ!BPl~mUrLAy_fifO^)*CN_{c$^xVY8;oMpF}?t zC;B9yB*vxnZ0v@~!+7@PVUv_t0~|%HL9<#ldF7|WY9I~is(nv=3#AxOR2(gNrzYVO z$d_dkQ*n+pYM?Sc&(;xviS`Ha7MtAM?@4!OtIv|(+a{M91S1ltI4;^(w|_Tgz5z#t zVE-!K769Dim!+H=iE2yyPIddUjHJy3V<0FDq7BrZ(!sMrifW1 zncBJd@2q~cl8*)efV{#)~x0P)^JaZC`^U2e_2+kjDVt8<{(VXRVkRW zpH&3@x%di;+5isE2{bp;ks($15GPlLPDye+i+6`1(kXilR*G(tSK?ypCmQ9*O*`21 zbRc(;CF7B&bozR(_9>Ln%O?c;162yR087&3m$s#YLzUQfQiYT?qEl$ z##x3yO5|mjYTVd|cPn{pyenY)eUt$ddVL)7v$^CUa*=MPKbr?lEFyA@gG zx_i(Dv8eAhmNP>qvwY7 zai|d6{&u2;8*U|U`~mhAP>*wX+BYGNW|nx53Vx6V%5Hgls%kqfS)z431iP(t4gK+^ z&orrrFU0KaVq6~6RL3`qUv;9U+pCD_XAesqJVl2sknY-Z$IA}@wM=ORaE=#iesEdX zbSKDFIh=_*=}N3kNVODs5Yl8*oPu2&`eX4ex{tD!8Adim>M+anOmOqV3Hw6 zW;Ocf00BhYRIR26IE1EHB3a$avow%8AA-{~p>Npp?OrtGTe5B(ejPyih&h3GWp&BSqCKUciu&}>DLZ(e_)>5Qh?4HV}1dWfL2f*i;xNG&S;23@S}J} zMCndpnX?vliHaiE+VMRfg&cm!i@K~s=~oh|DEGbKI&T#2YLL8dVgr_wPq04r5maEP zmwp@L;&5lD@0LI1xJl#hxX`ob&zM48;%_l)87e%DQ@`{|c18a;3xIYKPvSm4^*d_Y zV@UFS(hEhFD#hRTnf=)0PsNH4J(XqyR79EilSo(X7}4oQ5_xX6wls%XxG*H2Mg}Us z931xs!HGf!VSgAPslE=7+Co4_+LysmQB!h1u8i>y_pYd@Z*i=v%%bV5% zX)@XeniTIN&)EGYs%KrLd5v!_hmMYrqZfi{ahhj#rzqSq1PY)8$oX0!4fmNUj}^hc zHTqU>($vFpGJAtujzYo$w1kPK=}7~weRi*kyt##dALAJxM&&2I2lH^4& zW@htlDYeg3p+Pk4L9@~}@={IHnuMpy+#IYMh3~dDdR~SttSVe&r8lU4 z{DjQ!X8CyIiS9)%5zta)KiGjUcwuh5mnYrq4XbD`{}77RdzkD`jiOrd1kRgCdVX(S z!@1HO)fsp^I-FpaYmY==T;kXv9>1 z4ah&<+uR+Ge2+qM*MlB@rZo7IhAjyig!jDu;**+nQrXg(Sz^4=OypafOzWBdWH zAlG8Bz2B_{W^whdX=fYE#A&syqk7=kuH6_puF8~2k>38!j*MC005|zB%^`rNS=A3g zW+`p0_eh~Wr@wf}4UMcX`_QcP{m~Wi=rvRmppvh3;1x)YS58y!or2O+7e;m}*%1fm2xwB`jlma;-`kt}0M2;an&20Yo)wr0Ae(>x!yv0;fr9{q0iMY#j8Pn9Z^UPw| zY1d!vVuB^6r+rqvL>*s5R$ig;olP>MX$(}_tfKxg9NNCqE3Qik?S8$1zY|JJ{uFE- zpWd{NirpjMo1&8!3J84WGm(I7D|?ajXcXuKT6fMI=JlS%!o=g)J75-a&02PplBZ*$ zi3lOlw&6*9E`PhOJ|6+i<{fhDys=rd;N?DPB9yi5GhNsQ$M3d)DX)XQy-MyP*y>K_ zj~%ufX5UGS46Xut%$=Cl4ZDh1miI8|b^XX9-NGg5L>nI4IVR8!f7IhuCl9BFtm!$q zfVqnN-ObTLWQw2auZZ+4#nN)Rfr-&PMB7vr)P2*QU#5z?hl_n!Tqiv&yf|f*QbSg` z$dX`7W-$AJ$in2v=haVpHx%iX5bv8LC|x4G2ne{su39S{_pTNz=vkFX0a>Mp-DV;wnUK6OO=tpNyzaM>2F`^y z(PUL^J!037)i%m8k!xz`N%y(bU=IikziqgZY32GFgJyFYUBSt0RORw@TS_6fN2LYc zSOwm#m4ZBsP(eP$_Y z^7nn|6krSMoBMhn9;PH&V<10J11$W~Ci&(J$-67Fz8GTjt7?m&Qx#W1zy8WTglX{7 zp~s5op_Be+9l1EL_}Qwu!Cx0fTG_&R7WcTT6z(XX?zT4t%p8R7P(rg_-y@Y^ZX*)* z_D1{X5@apTE*MP}yD{HZi32;1gqfGJmA_+vB@H z+qz8LfrPH{>&h^!A2;u$;w)?-b6;z89v?TkT>YT4O@2iNejOQ(XLJJSUyX(5FL625 zbcisIGlcu#JJSPB6GRTQu{EE~Sc9fc*2Nr^jkcCCR&3P$`pX%AZY249j(6|O+3m@& zInkdVb$e)I^rlaXUZ|~y5 zS#GtE9@TMXmG{@K{;fEQ&~9{XZPq`+I1Po2xuh%x%QL;jdWD-rJ-Xc1kS>&BeGNhD z|5>9cqN9CCMN#{<$;9=()akUw?f2`#n8T$M$(MB)PO)O5gN!dx3B2Hjn}=y3^mJ;i zOn+bNVjr%!C`MnsbH!bMEg0BNWF&n%kUZg|w8{~+cHcsi$gfL8I&2h`=pTr%Lbvg% zNs^JH=n=Zb;eI!MCA0(v`dfLqd}|OX0B)sKrKcYhdpIa=sB- zALFy0G4;DMq-c3gBJy{FKVL-b4<_ztsXnht_-u^Yww_qEMsxEN11hw=C47f|Za zxeiDE79%caMlz}K7zc4k?C-($vC&yFh3Lz$Cyg-2Z@=~$EB|lUsgW>H9FU-lf%a zlg*@94Zo)99urU4b_O1eFltk|w^O}Y^I|+<#;1us-;l;`#%8O5k{m!cG4023j3ewU z3XVUUKO)B`E{x5+2`vl=#6k6my}%$@1Z5Hzy(_C zf6LBuKg^5)@dfB|j6sT2pOK##Fj-)M5&|eTHe*>=FcZPAW$@cddK{~9{#(@y$deD7 zZBh4YLDpOd6ly#CqZMT*@~ z_?z>1S`597h%w3*pSuaf4%%z}{CO+UhVg76gP`hjS#D1h57wLWpjz?ZVG0c4u)Xn| z=wF+#2`7zc{^@r;U5g>5RZ_XF`(g5=e`tKm-C{mJDfs@UTv@CIXL-&&6uh-%LB0IY zOdENk<@x*M$bh7Zj!Y@ZRg_hX@kI66SFF4)<)6`u(gsnQBNMp^+omQPTRd;WKhFI6 z3AFf+VDk^&@ZM|=9q}6IbW~(RF3w_2QT0A*;(4%9hJPIN>`5`a;IA2;I3jd|w47gO zIg#yxuPY9#OZ#lEhR%qb)K%a9-C1<%#htCU*XLnf!}uF<=eb7izp(tr^@oXEChOw2 zaXMe5d#b3qrk~bm3%vRnjiOx?I;oP{5=8w(pIbXrwQbe;PTw0wcy9scH6W=4J?cED z9L6=|bbz^b0o_#Z&p(NBn76Iul-KvJ{Nh=DMoaoa%z<%ca2*P6I>{M7ZQUm4$>x4G zMjt%_@>n4gEAr)Bk#-!6$_Ml$;17w*2E$8AV-Qhy+wIZz+#nz`<);_Qn{l1$?f%w) zK$$&y2Rx@q=m(TDVv!kQDL`#2aoZP8f)L7RWFGTm4~UJ(rX~Liq;GM6BpT3QfGS)n z4sm7wCmaC=Ks1yP`L(!9CngGMCB~C3tH9d6OrC|T^GR@>s0Q-cst-4oifB#HQK(1b z%6-B80BvRStGXj$ygFPbspHY3ye=UR@1mM#;6>K}EEfOt&J|*q?obM!1ogzrgeIV? zCIO6(NQY9M9DoFPF&Sji|oe#`Hn>&gAbEVSOI+6r?4Mzr*k(qY~=x3FubX zQrYwi@k*jbKT#cYfg}RI$L+j=bGs5}`eK8JK`Bm# z(hTyTdO%j3{zK3)oTBm5uGkUh3S?L{>sPLEEW?iCLGuZq4X#tfvywb+PFY-G9gW#^ zNxTU(;j4PI-T>IvJqKvHPbK=X?P`Y*k56Z7v`0v;ZVbjEIkL0u)rJqelQke~#Zku6 zYXuw&Gv-|VLcR&?7uWL?}YOXJJh5N~Q)YlCdcB@7SYc~v;4L?1byT9Y0*}zUIbmfY3 zGuRF@JS&UmYDqZo^(DnS3mKXcCQ}qG``FFpHLXZy`sS*w?J4GM=cXMEHVf^vi1}A> zdlu|U7H=>(B*vSrgb@9N*2>CG={6THsy@^=q3$uM&&H?*IyncH zXY^MYz)j-O4?m5l!f=93wB>5@|0%;gBOX8WeIsZB$$j+*s8bk1NDJia`#7m@51V17Z(zd$6@nU8Zq=r8i6{iuq6EE?e;Wif)YBt5$m$w8NeZuiH&|4F0>~H1R}@Dx0-}2y_$p@shpO>F%j)f)D~Tx=q4vttmGcXHy9qq ze-rAgMV522i9JlQX#l#) zfniss7REek?an*2@U3q8x`@O(Txfa;Z3(~sw5nVq8WGC{YCF`uHgZUQtBl0E-68OV zF;e%6tKxEXM2XRCobmYg$g3h3l#Ndf|?Q6Nv-JQ6X zQ1KG^CX>_e`b&q%_93Hq#B%qyq1@zrV#C+N)1%Uxy=80PTrS#{Ikf1qZoL-CFnjESv35y7tl~qeP0-^)yBxWX3(sz^+Sjl=n3!)YuIbj)M7bn5Pw*bs z*{7epLFt&e0s9>20jbQBPV_9+}dWvnO%4x|rim<>=IUz)(^hED@jXw>y!nP)# z-WtEcvVGJnKp5>9m&X30DvG5DkZf#-@d)r_nc`&K{~0-{*Sq^LIMaHS97ET%7c;XM z*uy!2Q_rpYl{*EBRKWPTj=x;BHzR2{O<>q$S^w+mT6>Wm5!6HBLdTssoxBX`ynASU zK1jeFmVN&lMwDNU6?8Z_NCj`;wl_wTKe=A(C2|qUmUf-Zv4T<{pmq(IN zcNX&y@f|TkhxEm-15ziIh})DodMo?n5ntXz=O5T{r!5-Cu&J^AalXtrWg~alj3GK( z%V!PdryXCTL4aPZqS=Mfyxj8jHyz4g{`-|eeTC~Tiv|}Xhbp?#4-zRUrr-m$zT7}B z;rXbHe$uQktVW;;XjA2qGkC7PO$8X@)qV(e?WewwPzkb8`USgl(>95wqc>ta zil5_F_CW0rT5NJ#qKuyy2TCuxGkj7-MOWiRjux{lR#8PN5_N_X&5fi1x!G@5JWvuX zdAp7Wa>1N9_`Iz;ZNa+_kyEv|{GMj)n)zUKrcxi%^LHCFlZ7~kjJ|S+5pAP0jJk%@ zg-O|`B<<<_JFk297j4pi?K{tfwh0Z_zWa26cLR6nFZK2zRsaGewy}BlJrM5Fdm~D& z;XvZn-#@B;jhKxC;B7`j1(8(`siXsVBgCHIE|7}(6V0ab<*m)!XbEE^gf?eLd$s1Y zj~-AcD9C5O25JipJyBj3?S=YnSmzh>yyEb=rs^UJsbzxau`~mPhq{#@dvA3%WBi^u zim58|pbQQL)1-WTes)cnwaDSIBgt`JOmJIcw=a@BaZv()B!YKuFBy98;k%?SDVE;o zmrwrA%4rk8@l5VJ|0+FBU(5XLm19%6-jXv^B0eAlk^9zh$heC&&7&F2J<`24< zEAPUeMo7_-2|RT9GIMxI|BBn=hVCVI|9grC`NLMz(0)^#;XZw9Xop}WwC|Kkx%!jz z<9P88^%s@Su`x#{>bUOSf1_4AW?OT=e&_cszTeC$Y`&*UJFE)gUDui~kotXge|7M; z?PS-?Y0U9XTJ3P@g=tVaSa!5EF32;H^hTRjzTzg{zix!0@v=JO;4XU2Lu}Op>DC5X zyfR?040bt15Q86B0))0>M++D3vU}}^`nF>r8E-d}Ru!y4zp!`jRd2OaPiy(n9>#S9 zdZ{x3eS1j$6ZkPvzfD99+TD1Is~}sPlCDSt`vGn%s1~_w(5pio!LCKc^nhb zWVNW)<{Ppfa5L|BWmGpVfm=jn3^xELuevm<@= zPvgh4l%;X2@fW}9(|XsZOvXm@O{(jObvnhTC{)$%k9n?PpBf{6kg}<3FMa60nXP6) z6Upabgv~8sG`);nWFfn?p}BNHA!8sgvWyLoW0~{zE(M; zWH_?~Q0(9n`rx9!e5iJo2*toh$N!s&yaSGVuD$FL3i%g0!ZZ|8w2-Btkf2^s1fg}& z=?7P4-|K8LPS}+0H{&$^D!Y#B6hwA{ACu^r&kcH+l~IzxUfOfy29=iT(1Ml~1CfMf;59*JnfS z*2I2=FUBJt^@B+-u5Ctuz_p@4G$MtnB70`h{K^f`68V!+$Fb;6iQ?)=oViahF-^zI zD{anj-yXU;v{zkfK{r>>e~Md5{sbk_GqOIeGT&a z=VfoHI=~UuP&WOw&b$qUY&3Pt=zzF^4WUw`mB;wWHC8I()q6-cSNNa-GIUbF0#=K_ z#4V}X%znj>(A|0gTfv5x+Hcp{vdBmsc|M#2z{(4VamWC=KObb!I%H<_aB-UYdP9W$ z5JwO~II{Bfl*Z|H@Q-bh1X6CD;0S8lbDx9s>|6`Pbq!X;7iV?bpNxsU_#R=gPPP^X zs)ppDTtsyr_Ph<&E!{ODo4n4ZBYA!eDneG{k~&Iz4tNyyK(fjt>xMJV%tp zoFtbV<{|!pdJJDJ=~IS9PGri5gGds`2wv+(y_2`}l>*T6v;U&ysSuBbO1;}j`cn}v z$O<6Rq~M}n&SjD4()(f(R*Q7mvRe-b|r4Cl7z?+oLZ;T+zVz!_irqK=icMlHfg~(pwzX_~z z3NcIJgdFdcRECxYf4Kwk|Ddbi@% z=oAA79DoZY2a@Mj-{F^2iCBuR4w|PW;;7G0zrioj689oI6g!q~7Ar z!PRoNJ4KC8<-7y^TOCL4l!B5BNyDJSX5ay3m9$4)5557S@#t&P$f5__V>egzr}>|c^IdT^Xa!`qiT{#o!GMSVzA3l_V2#=N0oUrf@@Xq#Gdlsj#GE7 zl%@js7~*}%Pmx#mnD;pA&R3u)z&xZW0|jqZW!W+Lh|o~8E?=+lKT=NjZJxbxKBuRK zP*Xz`-qAsnN4$Ih4asHY*9+(*Ce=|H!8>@?A=!fH)1D5(RlUv??32y8n^J~`)0qc+ zx-%W@;*C3AEyx;@gC;;HE%cTj;f=1niPiBhTdqwg6<{CD!t~32j35thfw17gG={da zki_T5KpQfUxDLqB#h1K~KXBLciHReu=!LD&lfD3S!#ht<_y<#^tOWkjmyeo%QzJm> zsH|V_3;=lcS4KBl%0uxr-TIq$TCHcgS7+HgNy02VZG-u5o9@$N+>fKv~#O?cq)KbUBh>i8Gwxya_go)#i(MQPu8gA|HRh_g_FAR7HnawzismW!6c_< zTJ0kt`*HJQy?MtAf-wb^B;&w>`vP69Jv%_%flAm+!3RS@=cZ8))4~6aAVj5Nk5!}u zDC_?q&>z_7Q&8j51dk23N=MN@7rd9X{vlTs93lERz5bUVDKj|lvCSK?56$}A8B|H- z!QJdC`r$7q&*Hbf>FWg7KZ;qyK?m@4N$7=spZY4&t1yC;loky6tHaF#F?yE)Xe?^hdxx#VW*&WJzt=$iqryO z8`#GFi$m{56t0~2{9w}1TT2S$WS1`xv{3UcG8+xlEt^eBbtF~VB)~N-xQS3VRU)!K zB+qoydEAh?*%@X;Gp#Mfmb{{MtHpF%Z7T28BOLtA2Pl66jJrAdS=CuHL*w47BnJu9 z%UQ@4K6x#a?j?SvOmA=2Q}o(@B_d|b{nHg_SB+Pigv3iU2kFl*qdZL0grC0tJh4o= zZhMhIe!O;feTGebfrd-|CY9mcx_Wy+hw5h{SL>?DXOoei$k(N2{=FA>#4PQnQSR-} zk1hLdG8x`qtsFpTnsq?Y>*-pQzyXIzC?Z@RVDh08ji<4q(a{h=gnmmVV|~>rd18&Q zTah18Um9Oa82RoCZAJE8N7z3r9yMe)M}3a8nps751AYSgNG_?d$4buzXy#>IbRNHI z7CFv>X%b?)=mclK4%_9m4O0VI#s7m6$9VxWL;KZaRGJY@-H=M^L6|}}881_d@gXfL zE=c@?A=R2z_J701Rog-rPRLCHtWyzQd^M5g3p_#bny^cdg$_5|NO8jak`z#f)Z<1e^t<{CXV&)o?> zpFDeiT%Jxe6{B!q`=3N>uqe)0bL^WdD z6{y+5d7~|N7_1>JOZ^T}{4@ZC{npR&N?}!s!p`PuhMF?}wID)DI`HR zd)a!5710=36tX_mapo!iKDqA7*v(?Y7U=4Q;D5OU{bi6~Ho!USx0+?(!I1Z{)*{cr z1m{{qrrY4F*FLLg&qRr?-f<^ZZ)|$=l%zqmIgY0>$o7M1wM>ov7Ysm* zUw_vb;t)AkBuV-qWSr(!b1whW*{WMB8oFuV@YGr90H)02_)e{L0}mu~0SA6g$+=fj zNJrmb#TO`0vQ)^xgyhig`B?&0OX^oZ!R?8~w@J#H^0&@xnMs4dUe=I@{E)5*y06mp zkLy~v<3WF;i11nYtA#881@ME3?sRhj_A+e`KMpbR$r5-|44|9x;p?N{M?O@t|3&n! zEJLI*58(75Oka&ms3XGS9AIkA!nWapNOtcrg@%gZR|Uv_vYk9JF1GDTWDcpxgW2gM z`guu;>tSp7W%V%;!UWjl))tY5JiI4;XE*uj9I-@z*Y%aPHe>cKj_E^B3eIz=?h&+o zpcbcj;tQmztpF0`e<5}%Z}#wvun##^_&so-zVq(kdd?1j+yXTO$SV9=i|pWvf_7DZ zoaf#?W+_hN72`=7K@wX`9gLZfTVRVAhSQSq%)&tLW`nmYx7O4@Pf(3Po`VT&zajp8 zd&&V^U3mo>ei@F|I)VgV_;QYna3b99NHBl6#<_demTG-`Y5@-o^$RvKJS@NmhGpEz=WF& z)&gv73z(L59`kd2Z$xiX%~3QI=w0)*E}xlk;jZ2j%}5xS2n%;Pz7%Z&1cM2X9jnhx zWgR1+T>xbJOj+MMf=BNqllZ}5DFquejDhdNt>iF+3`I}G55oLc!Ywa)i7-ryq_%U) zP?E{`_@LX_p(r{D;l=_+?BijhlU9U5vG-T`0)vV#+B8r)(*Dpp^50SzAReiV1_?}_^((G3yFa-Bym(mG7Wg+KLTD=sShSBui<&bb z+I@6_*`>eSjq86fJ#QAlcG>tYgkt+@?(ut&2<=spVu63v8?ARxVg>mNUOH0Ezd5<< zEs{y=wLp1*3%#9{|0l;;`&{-LF>n7!H*e(7w|Z2(Ru6NCo7xxc(+P* z%8SG6v-EPx4a&JG{7}s~Imqe`Md+mKz($?V&~?m>4)jZRZridpI#F__e~?~Y#QDc% zP`^nszP^Ve?MJ@ZNR0U{3wb+x5TV*9NZ4DCysfpKuC*R%8528Jxmh`Zu0kAL1bXAF zP`Z$vu2T4`kUs$>cBugb+fz!+FD7uT&A)MOtU|hwUy$`36BM#v(S2$Vo^!9FIn8)m z6?!*5_0p>u8_XFt67n)_F8IJFv)(+JCa2z^dmG9hGw1cO&=a!i^~Cg(7G9uEY(Gua z9W_ICnnj~2>vz&Tg=vDiAH4R_Ee>Q~sNy@jU{%v4Z36-hHsqXWMFLfL7~HQJg#`Pz zu-d--8F|VG+E0l{$m4i%L4Q^FHSQ42BKnpBvZq@VxwhJc9M@d%&#`7HD(FP^!er0e z!@_Tcrs=B@30@Y?m7t%l(lFlKhD)K8(bkz$&gz&I&D+Z_>NB^z_giqDMBWWCrIW&ETqv#!k&-_FNTO)*3#go1IJnx@E;`vBf`kHQGGg-AX$0c%8LHhsGuQk|!W?m$qRZ3}j1|P&3yy-`z!Ll9Z&ub`DzJ3h=ona2 znj->;YWU6J-w&m^eniMggk4?2IH}34RpY;u8Ae|Fq-5xc4{j{dvaA zT1q5p&`1BHFP2vN@}9Vi{68JeTUH&shuqgvf!^*O@z;LDU#uAUcs7PdH%CH{efS9B|i| zfr*nm`}{fBHIZiWKf1QhnHdyosacT1gsJvSns0>_BBcgQzrM% zfp2S*m}!Uihaxr6Ly(kqw0yBAAg^J8&=_1!N|}2I{JP#=O)Ydg8XJEdQ)zouBCBGh zJSTWWO>sTBeGanH*;6ViOWnxsmB>0XgPx(xIqtnK= zEeo7f`%%2;ySR$cJJQV|>4Nfh>B${*qKFNutXK^}UPbhcNnR3z-ZyglPi}LNRZt4Z zD&)b&iO+e-F%779)}+XYYkcAqBh2AB%4Kg=F1zoP4}&7+R`$pKEH*LVYQB3hGQSML zzY-O3bamGaJ|$yIX0YKS|6Mc8H_rFrM6CJ{EjpQS`o>rKrDHJ0M=$OnoS?+9vhm+o z;eW=_9eYRxWP%)FTozcjC80EtgH)ei2J+Z)R%8=WUAR+|4pGP;|L^Ay^N<;EcYK+t zt}{LUodZa0gIChXD|gDg7ir=1y~B-{x75B)Bt^T6J1Cg32d=u^Ysq$p1+=8Rw-jYH z#$$iK+LLBkke%a2#h>MOPcT(Fht!W6L-my3(pbkz_755M_2dmob;fvjZoVZulSNiN zPL;Monp3(fKe;b$QHcUoN1uQ$Drq=ZAr^>#mOiJ!;Ws80jKurA8K8^^9UU}=f2xZmQy(hOCOgQMGCDSW8NQrq|tWIE2 z2tlqYK0$J3fx7K1``YVN`(Gf7cvSEUSUXdJ5k_Bzay>VP>;6=6CEVi0`3#kw34o?T zijy8T{t@b^!=R)Hu0~{&)%lNhyW|OOS@wCx=+9QK=<%ekGn{apDbp9GpCpU!J9zMHw~*$T_Qe zsDu0jvZi`F?Hxd=>Oxq+rVc}qiGSp8kS9n3Vm@(`ZRnquUTdggPb_%%>93lewoac$ zo`qxo{1OpfT=t79p~6b8XegzW35H4KWK7Yw9eXwH48dFt|G#`3R2Z#LRka=%!sF)h0Vc>2+cCN=Ze3P#?#%!%$z_`FL@ptGTcTC!t zGzSG-_%5h}&z5uPBQ`2td4V=-jk3hXz7#XpR_u*KqO4hN!^Vtn875@->ygL6B^2Hn0hF+&%& z+xRCFW3(4*XtMOvM}i7O~y zAos?@b8Ik-t&KUBjYK%qe7%Zkte67wTli@iKqNFCT*}}T0dn|KitKrmrGU!WTm#;#Z6be@4!_vT$r_c(SwZoCoU)hW!FT3*o zZ49o^x`R9#gp4@1Ja2_ZHR_j0@rH(a7D8b|P?cC1j1W4sZZ`)x{A7hc26T_Y3o+Ji zzbE3}7eYcM##u5^5TIU26!HWzW{iY>)0gj`7p{clJZ)QK(`Gt5ciCLvHWB3EYJRNW z=D3mUY#5r%@u$9uqjZXoj`4z&IC7&KeIeXYU*0kyVv?h_z=QQ8I3)G=dlEL5yk)PZLb>w8;8!z zHAIo2u?t$gUMG|Rzer}1eU)uhUQz|E0@a5*P;z5vISfYiG6%PrbI5;rFE#X5*9>9? zc~3mY{}v~2Hi|JVAGPDCf-_wyR7Its;V_Lo%u<6Q6%c(JPGknM{& zb8TyZhwIU1=hs1dJ6-bh9{XPVd;ix7bB3ORVcY*4H|Z7mRiR)!_m3W_2-UO+OSy&K z5E=VRfrlZQL$Jv!_i!8+3qIwX<$cAdD;NHP8p^^QONK+|r7;73&pk*@9@R3M{yn7A z%Lo+9Jl(hBXefG)e5L;so$}=jGP+3eZh18d^zxUZ`0^QZJ zVT~=DLQ@yJQ{~bUtLl)uDK{kiTD=H{y#g^4UHv&mdg;9iM&8X#HMU)rm({nRT46 zgPoH(^{^wotzrUoag||V^4leK8OdjF;+o53%(-wW&ftBe@q16&tG-j zT*lZx2nAAeVpi3j+dB95Jbbkq(%Z4dXZg1@xc( z2Gm&&5HaM*edeMJ&pTDLl9ag$Cp`nzIKq*CF+r*S4|{JJ5Y_udjVdLAh)4=5g3^tI zQbR}!h%l7E2-01GNQ`v1bPV0yJ%XfwAV@3SAssW!%(;i(|GwYv$NS;^I5X!=o#*Vm z*V=3CCtCd9i*?syk{bue*w5Zg#DD)4}U-XG=iJ{Rh7tmYZT(N3?N}56R^vB6Q zL>`MHE*^_5Wy}vFjx99{m`xG+7z;qHFht%?xmw6lR?5w9^UdRGn`m8h)CMX9XRA=~ z!?q_V_nFeYb2bIqRr1Drt9%%Zzt(|36pC#F#;fwV3i1J~`A++HrqWO9@c8#K z-x2jLUu2LTycf+SK6J+vOTAmA2Z!$Rz0_|&WoabcYmk@sxi_naXQtM;wk1xfD}P6_ zQ_FaPBt9t1AJr(W|MF1PrS{Z!IkhT0wl#|K-kDNen4+oEPyybpYgi*C!u`u+wlWcVg*p{AtBCOW6Qo8-rGx)w6k7{I0RVZ7ih3f%W&02ktQKR zamX`!N3|jZZmv94Wor>LvY5|^S-N$6=iCA)fd-GW<#VaovaV^dCF+D%W)Yn;jv}TQ z&tZ1-t;O6%&jrB3Ap|H>kbl6n3<&Vs5h+`blQtG`9L#8Y-qTD?a=aRPI(|rFC-uc+ zyAikRHB~9JPd;t#dn33#<*)D1Ui}r@1c5yEVst*Pu+uAGO}I3R+&om#Z_jQ$%qj;jthqD&an9e3?}AbI!MF&)Zd@%S!7sm2AnAy4 zl^mVdZTC9t_;qUU@XqZ#7KW{$zj`+cNWu&|%DbFiKmVdLlaD9Q5d}?hR{OT{P}X+~ zHr)T3=*{r3-N>xU3?ho2K|%o6W7iE7GmUYZ{h4`hGZSI{H-!XX!086Zq~6I+iG9US zX9*Ux_BYIl|Ax-J@_WGcnbIy`#ynH~0~n|%PXrQfQc=bei>%tQ^dT7JUdxK+ifF#) zrR=!fD6?0qUL=6K8+pXW#yjKHnPa~#fs?k*7)2i3u`|>|wxC(`aqO`g|7R9JdJ8*m zay^BaSDL5?mB*_8;vKaa`m;wvQKWlnjK2G<=6^!J!EDJ^$yvOeM+6;oqzTt0MFeX- zZ#D}Ok=&##Xk|u@DRVHlOU4?#_0q(#FdApvO>>T|kK-|?E#TW)jSR5NzCEXtYrfhY zrOH|lOcbfB9&{{WPXBC56m40fj@P$`V7OzcZKT9gx44c!jNoPznC*$80?1{+MFH-n z0Sq?R?&*qNp+)A8-tl=cw&z%mEwY!&?1P;$ig?|KLjDgKzBrMPoPtnp!@&<~VQA5o zt)3(>QJKft+!f(n>cLOVrcO>y=mpLggQG|fHv57sw(|E?5sB`Q&?r(*T)L1Wg9xv5 zQaMB|Y4dr;kMaBZf0;_mzwcK2Emx*mZ^jhf?t7uabM+qEvav*}3dmQo7t~8n(sIt#6i9A&DD-^sQIFPqTkw1-HP)Ohy!KhpsTW$? zP!7JVsnsbFX{ajyw_F7L|LLr4^@F}r<;GS$mHn+#QpB_Clv*w0Sn3fdOjRG%9<8j* zM1oCM$WBv{G=dgC17Cw_x&QB!G58j8I6l!c5F7O{TAfW_6Wm4f(v{w7QtkQ;4G{nf_S}v zd&0kqSkXT#`lfVR+&uG|bi`AF$_pq3D%qf%?c}*WX|a>j?#J*SLKqvwJE|GH$9z05 zzaCv-O)$ApZ+^_udDJ>W`CgtR-d9rb&|{#y^MK#FHibrFPKODvID zUpje_d&fluSV`(LM|*z`^~fQRU6Ji4H6g4fQFKb?-9jaOT!Rbe=~ zl?k?6H}fe)@h>br(H%SQ#^WZ>s!HP05S(6&augQfwQ7TU^CU@~o=Lsjzi($a^CgN@ zeZ3LKXJb|{#ivz4`}NAA*j#tDG&Cu5=B-rlDC26PLYA!q>Xr_fCh6GMm-hzKz8&4?L;Q7pu)fcQBHiFq zBBkXqYs&XqFAcR+0#IA$MY#F3Q7JQ>)|K#>^`zzG42}1z-RsGDnd5I8o+gPgm`X}L zWIyj0flQtv`TAj}kSzENfJ^_csACwqOm|y37wQ$^9T=7;9S{374_huJo^6)CGg?O1 zf@6rKq-}QYx^>K!(F|UKX3p*n1g>lUg|msIO1%VxW9{Rk?AQ!nruWvPa!H-_SgyK> zL-NA?le5j8)C0?>Lm^q?k7QIP%tc>iRYIjkG=B;W4rc468=w z=F`E=RW$3I8kg-0r!iVv-M}@XqQr@c2l7@v+h8n8Nr9W<1{t?aaY2i*2So-n6*ah} zcDxJZOy@hW@|-f76?GHoPrU@&dsaGRv5O^Zk{ei*W1kQ1y2 zn29?Vc6HI5I9}g<-?FdoKjeP}-yCK}#L~i$i{B#PNv`e9&@)Ay6fH906E}Uh+m+w= zr!4qv^BZHdru7}8#%Rw>v=Ft#3s6$%vAPn(R+&GRX~`*To=cN{&+qY{$TH?NONR%e zg=Q{4PI5R9x*Vr9mASVIlBTw|Q z8`PQ&J}(5PSzT!X_QxMr{o6R15zW#=Ka%nkg8%qA!0oY?n=gduW?+oDK%zr&<|o{( zMu6<9e=Dhl?x`1K7@h-+0eX9mORtQnYdAENMZ~vdD}7h+yj_RTRmlAw!Wwu+^WjC^ z#6L!jgjW3z@cmNaM3V)0f33dtrGQ=hjaEkzDU0ESO!VfS3O*lTzLVZZ)$1ednFN>kT`(O5s zFcrf}gh}D`L=hFAH+;mvzyiNcn7#JDGvqEAPipK>suIIu3KrAg*+bcW=4>6&fj~uADlxMZ^3hJu|9DfeJQ~;4!M3id_e(V z?*f$PTRO3n8&P+GjSY}r_l`(FL|uN85)D3n0)Bv`jv;l;LtXhjf`vCK%q@|})@9P! zHD)ur$p)ZVck{!iWe#y#)jit@l}{^p!rVn117XB3)}|ems*_Fg@kp<@H3%N+n2n6z zmt;+uRz9S5futx6($3D&ycPJ}(vDG1U@dy-8m$!aQ1H3^Y%PoZpJo9`KfY=<1Dro$ zRT3p_z2r>u;SEvVKh=v@5M%5$RoJ39tafYUh0^KS2?BWdc~Q~=8>4{x%8@XU6Y@CC z;%CqExmK1627_exgM}zd%vu&ut{<}0L+D`mW;dRambcCD@vm19cw$#6!r&Z2k9EcD zRUFYCw>%k~6K0uEIgbNKvHx$@qTl9NgR`2fc7Lq}ck(rRW!S&0QsfPNRfU2tRcHR| zA$$jLtU)Q-7}pB%jNt0@f8szCv?F|fyt95E{oQ=kzogG*CtWI|uoHXq8^ANHh@FQz ze~4zJSJE&PWy_00D(`uH*P@&+(p!rt~ujuZ#mONH@4W>a- zA|$eTZ!^{ee-ue7nv~Sh)c-Q5k!55c%+cgfcX_Zrk(F2dTc32!szNU(Cdz-Tn2POs zNsMah?UWPR*Xxvz^()9&X@@5mDxm5&*||SX`HL8E>HOcX`+xu4|KBeL@BT?JMw64T zGqOL>3>X?ZwSL;)7et+zqc-#A3vJACV&}duzjgNSXQp43Yq%1^T{8702*8*!MM*1w}sNhTgWe#nUA@qpXRa!Aq5C$nm#7#Hu!A5iPw zaBA!Cpa1ySMHR#{TiYFP^1a~UF=!rmwH8IHYH)=>>x(Ksw;KTRAZY0{-!U09`IIZO4}U_P!&Wfj;;ABGVDhR-xBoxPxne zT{XDPSr-*}o@|(N5X_YGw{uk(iGS_%SoGPh1P}K-SNr^LOGp`&z)F@6BJD-h1U8L9 zr5pUO(?y^n6`vL+$t#j--%=!+5qv>j_VSG95sq5}Hfp-EQej)4ggjm;NJTM_R zlkw{HnrN_a{Y>aeBmnlmx@fwA?{Sg#SYdiVe4Fr3bG2sX*E=s?1rmc`T%CR)a=%n^ z3clV$I8Myi@rW|B-e)_<`m)Qq7ubeU#P+^7dzr^T%PQVJCG%>rUOnx+^J9tQhC@yx znlLwuO-fjl?4TPe{XRAHEcrYyesK?wd(Jn!U;G6IcMTYST;*+ROl^YZ*Msi6;hDXA zIR^Ih8Y$<0+1wYHV~zQd7{)%t@GuW#coV8-Axut-RAP$8nGz3UK?NYt+G z-I`n60mPBjiuh14voow50s=r6t0~6h&05VeQ79ReOyWSyO9U^$dwk<*gkDv6fMQPG zpE|V;Of*6K3N&qaN)hjxe-+p z4F@xNX`RE#`Qcav+lv|zE_jGJwfsjXQjjyO{=k8Ip^IeG} zqnPtGsU|+F{`BK_$+o>C+)M0iEx~W;C0UDUp6$24-`gf0!8)Guz-kPYS~~n-ainbe z1wOC$^l|f@#v1$s=5yx^UKep>KU#XcHS^g1=Z zvUR6)_yfJ5UMYR*liL9aNT2>_w{1l!LEbCdT{uhj{k|%{&yv8=4C6jzO>6!`6Wmkb zO;!|g3}P47_l$L@CkqP$FFg`$9zR=#E7ajq{+#s?X83=LB8~Zgo%jxXjUv_dV^Xhv}Q@KdS{XLZMbTob{$dPdK557+E_SPlFrSlRl=qk~g!1Kofbau?g8`d_hm z4Uz-^(~(EJF?#SGG%0;b^C+SQ7k-xfLZ@kiTZCzWbqaR-$uu@ze0wQ1 zB%j=8OKy8?wvI4QTg)t#mpeYrF6U}P6q(wI8wKplQbic9*w+!kWy~}@hDri&`KrR3 zod=`F;ml_P?o(msxmvQx;(ZSj?)1Pw4kn@6x$F09J#tn;23jZ1E*{avK=f6P%@%!N zuDkREoDZet%-MAda_Q%`7N*?QUB3y6yA<5dYd*1`$&B(|NPUNyazxIa1{0b%2sx+bu~XH zy*zMnl(au*^CR$5JzqY3?lw-@%*njm6J(4-A`PiEN6tk~PI`ijAgMZ25N!WZX(*XN zNBP}a?rMjt6_b*anYB6e5Cq;a?w|g++^2>9%f9HUSqMU1zVr&MI6a@el&0ZElH;WZ zc%pozmHoxe~!gzPJaDfSgof<*4|7{g*0w@)gO5r)yi%!~iW0 zvVoMKx#1SZ^xc0uV_ljfC`oWDoaDg}T{rONwmc6n(~ivJG?FVVbE<&14T0F+OHv>K z8|Ydq^7>9|?g~t=?;b8$h26&awq}f2+99$u()3Mf(zP`2J757>&L}6N45%!=Ozzl+ zBi%>J#+U0(UtNX#4I`aOsu}1HBjp0+B<|4{<2QF3VcAIyHrt*#;{=D2F)4|Zw1?eV z&(>9Tq}O&qDZ)Qyp@K!+{-Sz2O}58-KD`nm-yeAB&j9vW`F8w8w`D31Mw4hCIWiIm5lmlQ3*%S!>4 zg_Kzy-ePO9`qWR~zH?shW0OLa)Vtmi84Z=t%~%)JFq~;|Wvg`i#`n;5Nx=^RIX{V?lI6M75a6l^?ehcapnbNS~fy=7V6N{KwuO$V9il>M>yzooi?Q)774B=B2= z;Hz^<7@O0ItmSic!PwL~BVaO&)N?FZtUBig8}A-YK!j@TXc6M5nAR6XIwDL`npDR8 zICFdwcT4@7H5mW~fxW26k&W1<)$`eFp1!Lon{1@@1bvG+@;giDN0YBO%d_E&01l7( zyCk2r*@|BNiWmATob&5;r)ElBLmBg458*Ki7tqLEbi7(yN+?p=$V)@d;dpPo+(hv> zy9a}0A$2a%rwn$KeM;$_$8Sl-aGb*p*sY>Mz|~Ai{x(?FnPx*zP{^B-K6Qy9=%wup zC~wrcWUK?ZxuI;=Qucs?w+Z=o76TPnFBMFF(u?#lex+U=&qWZ;?kC99BN zmnezrRJ95Gjm`{0Kk~U)GI!tGIOQLQYF1|cj#L}vCSdF@uZGmoS-SD+M;0(Ad|gf- z8z5L@AJ+dKjFr(hfm;at+%l}CQ4Q6CdEcm38 z1d=hg8A!_Wtu%!l^tm4A7{)#rc?>R`>O6Y7?m%KbL-T60n6 za$&tXe(!-ZrY5V(d!1|h-@1qGMJT^>w_0EZUu@RNo@EgP^X(Ra?XT#4@$rhLziI#A zOSs&}onBdj_6DE#w~K}*i4{~Y51*13Aul74u~IFr^sfrtszSU;^bU7)*&OhyzeUlC zzF#F={F{Q~Kp>fa>lLio5Ek`#lU2T>%jaDk4J^v~tRi-`=lVJ_quJ?1O*AL-7;SjE zaki+66X<`OfZLLT2imrmD3Zy^?T)L7{tX>@Y)cilt`V~E)2Cm2Torz%8>PJj!A?L5 z99OA=9FA$Zzdb=*sC2lFw{qw(fkA(*Bf7P z=d0Z@mv1U7a^0CKkC}w;|m~^jTkY|as zdc#tw*17arI$*k1=izaVdChX}ejKMj0rc6rGp%us%x_b85D`WPx&_&T^dTAUjnu3k zn~%N7AZrqAyhE|dr_t~xbolR^v=hf=_|DF@&AXpdt>YP$)oR>kE8LJw|ckA0Gr3j|dugPWXmuZH1I`=ZHGuRB{Ga5Z5)YTWkh3_{Vv zh3U18BCm!aqbaCOTip+<-FEO5Jl|JRKQ|XW`s6)4rW_a6UzhjZ?_io5A7~z|+~jL; z>e(CX+vmJx_lSFL-PQ%hsB){xFhusrx{o_7O<*eG0zxLw6gA-f)JwSE=MhYiURcXZrk{y_Yl3@Cn*8()1@|x9|zSIhM3G z1VhT#&i@FGxh?-EsRF5_YjjppZ_jYLKW}UO%>(|k2n=5!ALIU$cGvs_ z6FX}ka3|yPRodrDqpmM9oa&J$?Z(u1Ie^v6!-3h()|7k`%p?4+di=h3!vj`m7ewwYw?l=?R#pY1S>QMF7H zu&faj2tJ$E!;ab*QZpIt)Z!G_-j0$DxVWTMtp2*CpJLH)L+?OOWBLX&5?5t!=pFGna=bt_i-%lRu*3-I=7ox`zZK zSXS<+1>UP1;QWFwx3us+cnMULj>`aCitsjB(i+=7hUdIV8> zb7E(1JPwCD-PVAMku9~}AO*Pt5A;ql@=h8iLYiyfBju@I46+XqW_yp@8+ATEah%9i z?_B&2L(lNz@8o-%1Px7j%SjxSv=h=NmJK*y}52z6_fao3gWJ*Us5i~DF2?ZG zWE4S=+mwW36uf$4XLxB==bg8^x9FLOf+WaIo&_6K_(N~#O}QBTPy@R+szEw2Oj}E`oi+ij z7F)TCV-Rh*M<0J_%pmCBL?YvG8hzAHiPO4V7 zXI&2i3}E5M>sCW6V{|vXGMk-fz@^)E6Z!i%t2>bH)uVuBPXDeqmIxnrv9o$DE&|d% zI^RR2Z!GQ{z%iuO*E8D(`y9E zf=7r(;R`1!5lMWoEZ@^S#@k`9IcNv+0uUZ;vo3d3@qfUz*Al@&@Y|egRo3_?^3RGJ@O8VsQ7xYNnJ%5M~X;`T> z)>uEphV^o$?^a$H3hZ>dN_JG`O8W3!@vbq>yN$E^_z zw4NwR#w=q0E*2iZfvYr8rr$iLFe?AK@?v)=!GQY#*l(P1)6{ZzkWcrvV8`%c;CD5W+hFisoeELnZzF(-v6TdCDd#8bRs$C*@9v! zYno|yfi}@iq%vQ16zRsmP@d8}jzpK=Zfb-;XU-6QHVdVY{TAw{!8_PTXiUv?a~I*) zmD%dtwPC_BmeynhrxRg%{nM3~f9U_ z6>%P5WxeixLp!{rp=MglHxA;QQ)=zTkzo1z<$)-#L`GHkVSXMKV>0O;)cN+l{zCSL z)8bf1gxPymV*zzoo{ESkkK-70MH6fkB7f#zcT1O^xrMtgfSm4u_JFBpKqY+)2^bvN zFr!(EK!t& zs5AycNIISyL>lqu*5d(P`Ra#>Ze|zQgk(60dd-W?Kdvfl|9ZhC>)6?{)xV3d|6r8> zA6I58xahp_uFrg^Kl^_Zoqs`mRTpFv37M3>M1-ZoOEjDJDNf** zh#C|^S;Bewq4>y?(WTs18U9ZgXio_$RH_V++wdj*HZUNH2_FjP*-DBhNpbDhMv-QZ zf#L%*gA$pEPqCS5%`SVlvtIl26Lz|u|NAW(_V$5G8v$pq^Q{mXJLKJTE+{pTp!_xj|M*Og z=|-ix@F*2jZp3qkN&cu}w@oxqSXN>V@d#qkzt6;2x&=DR)KY&any#SaMBVO>JSlZS za}LH6Uj=Y><94K)YNN%BM~0Fu0&HcJ!o(Q>5Zk$|hS+?wRTLf% zj=#_J@f3VZ0bF)C9sFZiX?b3>uI)*I34HR!Q0t+z_WCI_o`qtSyfpMkm(eouc2GpmuUnb0ZC{t&DtzOi^|oXFRgxrgYlt9x1dfK)P*;w zkkPT%Z5^6pJW@h~dR|XUs|odz6mmu5Vp^LDXz3B(<42hgwcHC*4P$D*riQ0;fz$QJ z$58V}R}s61vWQn(+&GXx&?qR;IvNtSpc={5B%B|w{%Gdb$nLohD0RdxO&g=f-G*!WY3ATpO>kAwKTZL5KdpX1qIBgmuW4 zY0z#JVz!7YYL#0gSgCA|WT@MBf1?RijH-X30Gdec&_=$og?Ix;6);n2a12 zf%rv{-e%)H{fq;Z(I)G520{C(mPO0Aif-oYB9!~>HMACc%b4A!pnAV{S9+2s=kwMT z7L(n5v9a|h@W%wN4$eXb5yfYla?ckQtv(x5ZWg*?7q3b~q1MD~MYEd(`jiPx6eJ73 z->;8IpyBp6TIYtI?ZE&}G+a&!N>o4v zy|!b%Cx6Ihp0U1cp1l`s}dJg+K&NKXD$qR?*=_1h%)QFA@ zdg0=qs_5UqGRgtIhje;{y@Jq)of87uG@}SC& z!SUX0N)Di2tJ--vquu%DNIY1!b}D;y6NzCjc7W|7q)5kEg=1o+PTaOk+0ahj@s|OT zvQT+Zs*BZIjIUuJQmTDn9k@d#ak6>xjKt1xAT5dPktpv2a9Q?;-DAsgGmV3DsT($j zu<=S0r1xw(g5zD}-B^$r&C*nB2MZmPY`liK`Tlh}`oNu}4GX;9gaT`L$C_o(9_7`9 zdd*)bAlJEL%G?i=fIo1_qX+3V6ZomB0FM8@*+=BX6yvQlfHAg=S;Vy4bO~dV6A(qJ znE#U|!y>jw@Ex4r7S{wgNjm4GrE0Pxh{eEbq0#It!$n8;$FGd}(~4}#J!{6D${{+36Nv_D2OwY>plLNxmT`FcSPO%SjV7sMYw767YaJ`$0dQe3mYdD zBrcq%RXZ*gROh$mzew3($_mT~o;L_=P>JT=2{kl)V(o49^_|Fn{-k!c{()>+I#Z11 z?cDH{_ggRMY+7X&9)`;>xx_6$uebYO!Y|ci#pl4ph()KxI7bH*GzhMZSq+;E#E7jukU#4rXDpTK-lZ0$hV#!Wah*A=%Ikun~NyYhNl+$*3tLUH|#rf z2xiwwX^lUbh~X|*6ZzqT8P9K&E6P<2#6DQ?x%j)y1w*L>1s$E`JpTdqF&sbne6E{s zt~TurcbngD5-%w2xVx%Hu#ER%mc`%Tvh2XOU7uAQk86X1F3xsl450%E87%Rh@ALz>S4|qJ?3fYEn%v}Mk)1Y7M9SNho zsrJpktCtsR_Qyk@9G6Lp4~(WC7Pe>J0h*EJgM6q%s$nOW^+ zG6St!hxU_=QG3L9;X4d9&N=<)GDlE|-9B0wzEoGpf^OWE`uW?= z+&8R3_Y3N|3NjZZ>EO@bE>_xLOFkCcJ<#%U#=&@W<@M5`7S9(Z5*_85k1Oo42=RBi zw>kMrIsJEzZ5e3SN<+QsalAI>!jv4~et0bTxLBB167FR%t}LfwYR_&iK9Jbh@d19U zk3X|Qj|qGX#65Iy2X2%z75LR-KD~Km!)(FsRFL${j7CVdOyBfSxBn}+Irz1hYlBf# zo8Juc;y;DH1UvIt;m;z2_*hngwALnJJRZl0|C!&0x&k0~A4@}`uLCDF0^Ikv=T3pc z^MT2|V9(VtH?MY36*lkH>Ar2n)H-2{0r{!$pJIl~W6Q}X-_J~JC%Kt%lhd8iqxl_` z;V(!*0%Rprzhrb<&qiTkjof7w55M#DKyGO9vQV@@wDTw`+_uk-Vb_KXx?It;koHeM z2!3~auRkR%JIr^T*hssfg#UP_YJD#435> zbxwP1QeaX16UX`)^NZ&bAUCmN0YAbVNwdxXLI0WXf30qzH>J-Y39xEOHP3$5qpY3g zva`N(q$KygvE&2uoiP@NawHlNvCHV2Uc|2VByp++TWDFZj8Nm*Mf!P4T>lh)Z8zxL zssz~~ID!b09`BBUguH)FI9Jbz1>`~ui;c`&dEW3jU?JpeMSqWvboH#sz!r~rrzr9(MrfUn6E}2*| zIPw6(_m+(eu5&N%6#hS3`)Xf8WC>_l#Zv4d^?+9S5Y;~Pchry`Tu7?OEC_7ues*Sj zKdgRd?vt$46r+PgFB+dHE~+OrCN-k?7Nf!174t~XW!W~zE-yx71gP)a96Eol1FTkt zOOx@S|4F0HgDgDnrbY{rlE+IP^w~cauq}^jZFbJdet#$Ar<9P9`>gpPQg|ra>}XK1 z^VueIeD3{PyZJ^*AM^x5J;rh2j~@Px?&c?0x;lJ+8&nW@y(?KNf?Vmho}VC+yJos* zQ!xH1ZJBGj=fy8{VF{xmLliybK?L3}$pRbshD`NuCwh--^-Ji#U(N+Vxagm3*qBDX zHwZTFsvA~+qoj3cLD8H>cCg2|#bAM`#mgwSz6X|i!p)|uUd^WXy6Ta2z~41w8k?pN z=(^OeHPc4J$-x_C`&CwRwod{j2weymI3i%Vb=PWfF*6L_-zfXJ^zTPvLzGBUf1+dZ z64>qq_2*&)10*_5p-Dc4z88PRdB0P*wBTyIarbB_&77!?6;BDNZ}ZnN-(ema8_;J22Ohj;g%K6+7Sje4a~AM&z<^Y4Zv9&=E*P{ zumtpOcq>Cq=Fp-;RO%a+9f)zsfW<#Ql*{nxdgE+eS^-X`bc?No)#Ai2r=*R2qwqQV&{S>;x zEy^F88{v(D3bWHVt#)_I-z)Or)|G!J&{rvuEz~MSQ7N@qh0Df1LqP(GRXB!{RodVzl@(?wSJ6!(AT0UAtS(60f;p%cdhB;P*YT3N^ZB^S|DFK!j}L3_^x z6NLSqrmziMTev13IJli0JpT)vsxhcf&_XP zi8Qt*DpLm8I3Uwgc}InH8w=bj1ozbEC;}#%&Or?S+65>jxl+bL(8YNZy|hNJNN#`6T)xJ> z+}LAUjZlm_;hk!_*2i_Mjb?pRLT~j~#^S2)ws5Y*_r^0udB;tFGW@GW zHGl~|Itn=*bsnZrd8e2L#67IQP5{AJO_O~bTm#1jUR=Ju#f1~dbKbs5?FoIzUZm8| zCnAv!R}va(DFmlVC?8jM5R~w14+Qa?+=Ym6*k7$YJlsYn;2huID-s6*oAKQqnL-D{ z6uf`GDv;+zz!@8FN-GAPj(w2f^~PY%9{+d+YHgJOYQOE%e?nxs4Cql(Xo- z*Oec(2DN)`I+9PO#qC^i#j)v*1ZIcUWl!=__nDEi0DTVhHr+8aIR{Rkpr8IgDJV{s zF)om4Pvh*pvyM?Dr2M}98)2W6RND8KjC6NT-szn9&x ztsXFQQ`zqc>U0Ca(4TfHU5RYoodB2)Nx}q}N=vkg@-=*RwAR?MNG#X{3SVyzzxmNE zZgh?uf~gkzwD;sKy>Il$;~2@tMrbFP?P-Vy!^j?yOMC${e*WA1kq$Im3QXe^Y`kVu zZd@ST`dY?Z?zvTH|JoUk>GKOfYXrd699=7q|sOEQG;54TKQ}dGwj$Yj7 zL0Y22rftaD0Sfe8o5+A1TQ=zA$0=s)Y+>La)MM0`L|M+YO%>rh#ZQVw6mNyT%q)7c z*X-j?ztA&6ips%1Wo+b9dujP$2hsK}jys{@E~@6`(PB~IKFm|6uO^a>cd3;4rE?c& zshK^fIclq(^^>s~ux&8jWgHiohJP@EM_J-F`v|vhUeDP|U+{Vq1LE+NQsQ3^ymGp1 zd)-D_Uok4IS!a5~FaFZ+_4u+u#`x<6YzG5>Om}9>7y`8;4L?)95j~5tg+;MgD$E11 z8b-3#|7YZp&CmK}4<1!e9aTt{?gC{I078vTaTR27trg!CS}VX&P6^O;jH+f93)oqV zfIfF@a4DgBRR>N-9}ndM@4 zuMWglbJsJ^(orkZ{=ZEhNI!bx|K+XXS3D+N=J$i+yP>o4?F>!rhvhcQ9)0FF$(XK( zXW>~&+|K{-rVERY-8Scgdw!l^ScuK~IAdb)J54+Ww$`rTTXfY;5sM`#J1Of`;sVSl^Vw%50Itv4&(K8*fJ5 z0f~&qe^?ky_q1CmLgwAEx!Y|+02usN-9XWIyizwG97VddR9e3u#@70yXo=i=DPa3$ zzvMf_try6X%!7P5rXL>2ep+yZ*&Kz%((wFX% z?Y}N4#TKQg)yxU)Q>qUSIRMU6OHgEMfWHQQASR$bIaG3xt;=e!D)~RE@prUM*9`>N z$x6N@7`(}dK9B-o%>M=l9Z9*s(2IVQO$8;J4*5z(qE5Bc2YjJl8_x> zPGov!cCf68UG3(s17t`EgzNf_sw<|mED z>B?Ic&e3=Z)Z+aCt%Fau{cd6mfEgi=e}9B*r?{8ItoJ{}6olwhsi%u9Cm-^@iF~|N zrqo%tPQ}XSs6Rjw2VW+Iv9pP>C-%J)aa0#waMMB$YQS}p7Z>@`X?{vw?fs4s!Y@Ok z@?r{YD_azfX`*zb-W}O^%OIUJLEs-H8oheX39Ep_0EUT0;1vL;XP&btyWQ+RTA zzBS57%{KQH0@P2Kftw?9GbU%gViK%-&$p=S?F%xT^EJ*Uy+5E&vmoZQ=j5paX4mW{jN z!`v@GoR>VAfG`DxJ{tXOWXyex{kPkLUWl_l8wHENT9s`29e7V-^qdh-{-IYhf!(l1-Jz@r|p&+b>iZPKI`|+=X}P$^e>vl(G5|lFo!iq zH&kwCp=;i)hZ40Ql@p;`*pTk7-M;pr`iF~Tz`IJQceMU+)a|G1s$qHZ#>m8RF;}bs zkF|3u9{LHNEfy8$vTWod%df@~_=3);}|z z>Z!y(L{|@*D7OM$7aoa=)6)phBr}~qczJB>FH)JW@dVX8{w;?D`BARHr^ zv_n88?tI+i(TTPH>PNX>k%hEU+qoPIDQ@yq(nT*NUtKH$(x2(lX@i4<$F(!`_+L2k zcdV>eDYg4{g&?q}McXHce%I-`1fRJ2)q2!P871u-gUWEHV{brpRpx5pWHDV`>?lYn z$KI+oqdB%JoL^>~QlujSBf1nAbKSg9$TES=fzpQ4!yRGkr|PJg4lfV-Z^86Z?;NsF zeWIOAZskcZzsNpZ>)@j9IpgtB3MXaK=KsUqTSdjyHG97aK@wa8!QCan2^K84y9W;z zAV`1!9o(JZ?(PAS01d(2-95N8+R)u+@jUPT_WsVr8RLv`F3!bw!x;4H?zMWYnlr*~A_oq3-&A7%?65v3I)g&ZZRc%JV5dQEMQX zj(d}Kk*Dm5`;3wekw#zFe30|XhOK9y$$bZY1K5AdqY0p$wJx{3ewa^s_6Jc@7mZO& z=@Hkdg*Fc?Z?O6^YM(9yY!O(!5|d)FMt)ikZ~ELx^X%?_5%j9Z13Uq=0EWzyNz~{* z;>gOAi{R;7EU33ZUk>p%H?o{OsrHZgOAun^bT}qDw=A&OL69IeEy~BJ`1zkWD)5+| z^u}P8oQaRi0hl>3l<|E?XjHg}M_8>_UoP$r^P@iMF(-xAPP1!j{E6`9BYg4$%Xm=k ztDc9YD@e`9!Al#pnG%;r7UyG;Esjr@zX)RaJPiPJ2)p>7-g(xS`&#pXZJcr7HK$QH z0I#qwBmmEUR0GMbX^=wQ5Z0z*B#0q9T)h*Hfe(=MAQHnvKqA{pG+bNI!Z99>KkC<` zvr%LoorIgo+%x0@JIGeE->UmTEBFj1I3+Jjbj|LgbJ4m=BS zshWOFn?v?O47RUIHk6v1V!I#7`Ae=bvFAIKQ8ge_yk_W4wj^(ewDG7MjLK_TeIMy> zbcv}O#>#dLP{38)b`7x|O6It5zWqq@0Lh7s#;^f4_=il7HMy4Imu){xN)R_DXW4F> z;Y>uLD;{M3#Pfl+U#_ocax(BPve)bmko4Akv}n=IO)RlQmfE% z9bqg-b?_kr%*S|sM!>Vj0)rUmstwS}^RneVIm=;jZf|oSmnnOHVP4Y;GW56tiVffj z^NOdhn&H4Dakm&^3gMi$PFJF~vNKk`{u;6h*hV+kj|;kL7tB$>r;^ z?r+%ajDf@%9Y^so_do;Z?yVkPL#lXwvof{;L9G$TP|cyf*Qh3QLg?^Yde{jdZA%w8 z6^u8X9b=aruZfmO?K(SiHfZ(*5>ocXnfol!DBO;RKdSH(lvmg5~Y}ro^#lxjbAZkinua8EJi`k zHIS#x^M+$Ahht15V8Dtt`NNiE*6OWV@K-qTbaljEphCdI-rxsPiJqGm-0@4|}900R%O4f=7bJLqm zd|g6>z@-r7{+GI@i~eMs&5+l5D)2NB{>Bo+sIswsQNeCJps~MYM$TFx>hEZoNgQ<`Fz zh(Z(nJCa8>!0j40tvL+sKQu*G=Ks(X!|wXr<^=WKnR8m!-O+rbXA##~E)y4{&=KK^ z#bYzeM?9iuD&33!W+R$a*!@V!&{{twaUBU= zCaVgi_-#)bU}${}BZKbsMx|`Ah7p5rW%h&ivf>!?C>%Fz#P4l^k}IbYD)?DwsqQ@! zdNp`wY^)8yD9wRHvu;Kq3feczuBy;`u<2V#KkMPa4J=>&TGPoWj>VZy1&YJsQy|2*&A1KTv=BaUn3T;O>8f#=0VM zBYde;w(o`#W&<`q%VYRcefsl1aFWXWd5^D3luf1nZ*WHdz5D+$NK)AOxW&wjADPI!Q=AkGJK_}vY>`7ik`dZT!)2DLKFYlW&z z!6tBzljS#duvlHVv?$<#(Q4H#SfTu{$8$U^=!Q5Sj_2Dcim6SFJ7PYXibbseVX3)9 z=?@kE5@0^$rmbZQBB-{2O+SqHAD_5ojJTp`qr)N(AHm@9C~1F{%3;>kB{d)P%MX9O zaM~*X9sot@*ZeU$j!m<}?2|tKsKW4XON4)3$rUn3|K$8B*4?L_^-sJFERXXZwdqd3 zGn_?U{$n-3v~H9oE5ov%)#tmBAJWwyK@a~iixl!uX;UhLS(>W&*K`@h!7}q&RWXrz z*P358s_5xs{K3H>;#}Z!%Nay9O8n}TvZ>jpZm%R02pF5Ue4eBWs9_GCdV$cydO=2E z6-JE*m;HecFA)Q{mBZFgx)73R#$urIi--g*edP?h^4GhF$Gp>0p8|lV)QDiESO4tB z&mp!j2%z>$v6UH=-J^lv)GA~EC&~Gutxbuv0RBI4l)4=Xq-cBP@Z{bAECq))=VpEYJ5aAc+F=P;f>hf!v3`McV=B`$) zr=$)+f8B0fg>i9-FMwDxW}ysELSmG3zDS|88G1uCV9%2OKAwM>jBAh8vxjB1a3fJb zi*u<5aw)LIGOf>F=dyx~X?o|++=?^d(2mjhd{bDs_RtT_q6z!<`!NbpW$+Tv2UCSiZ z0gd3J=K2vDb29)Oxhvr>Ytb)Jco~rZ6bb#;GI#G?8fe>cX7{Vut3P}tCPKa`tb{@n zUl^++NW6V)7T8%EFGA|#-g=~1x?nfG$OBLaKH5Rkj+x&|W$E!^y8*^_5eL-Xoncgl zq(E*!QDa9}r2XX|GP8EVlUy2a@M~-Xi?Lk?|6|m_@JG`fc84p#dHW6=?6Yc0&Cn)5{hMv=vuG2%8HQ0AcW58| zgry^ZP!AQ?>WdMioVUbFJE&<8k3XS$l!+}z`wnjZ8)XUipq>WIOm|sREM{_#0|?WI z;bC}2e62hiXuvHX`Xbwc&^b)-1#t5Z8Fqhaa%OZ zPa7BVv==+6o|^6BD@>&Ux!QvW9~QB`-!kP5?z+A2r2N-RWvND2tMo5Nu=oLxRoIo4R!z2IHmSaJM1H^cFC=h#iHV!J zT0`|OsPJv3N_{>l6dx(lV2Bm?#$cc(Yo9DW9#vOA^3`{&38TsP9}55F2R`zJ|G+PD z%R)k_N%cdA7#xw`z_p%L{VIz~kbD%~sNUur@s@9F_(Tg4idX)>pb{=oZK?X@S^~jc zZ9LC0-L#Shcb<>I3JEWG{t837*n|)H&&!`9FA&E4mPSHdz>0Hu^2f&gNxd{G(qsX& z=;h(?gVHS0HV%+^QBMoWAo0`*7#t89L@_53kik_DTFQ3%S~|m$d8hDV{9rdElbU8{ z`$IiF*~QLAx=QXFk-c%Sp2Z_H0yFG?3<$lP9_ZmWJy3OTFN!|ov&0-G;4~oHjf%A{ zX3zLJznS){hgKo1${gJnfBn+N4kPzlm;tJ;teBd#_yD+H`)Gajm(P{9Uk||J->>O9 zvALh%jxfrT#xbZiAxb5sX2F)sfizGmD9-(m1$@+oUX;67b01-twpJV zG8ROlj#U8E)2UhN=uJ=oK=o-c!QD7?gcQR&Vl~vNopj+_5k#G z$}w>6panfnRyDkb*i&EB)RS`;uVHDhgSRMhx9U6&^bZD*`^f(++jDZtyys*5HgUg? z13&=`5RtGn2!NZUn{xH*V*a7?3F~GOG%4fTlWH#|Z|4PMGNJxN05KPbf?o30G>rx5 zWx)Z&6Xx)|9QvQQs8@=6nkZI+v(bT84?JsJ$qSCK5k4*fYA%@PeK>}VaXo9*%D3oI zBRV=c(d755Vpo7QrdOJdSUgiti2n6la5Gubkpajzkp^js;SS;IiHD1t-frk6i3(pH^!hD z5}RQ?gc~2k_8-6P=GkBCY|({7`ijYDqW7VIGpPK-;Mhz@&)%s5gR#;Jh4Ran@Mg?1 zPsBTb@YlIvwNbVXy3HP|4*H&`&D9l-u|#IA{b7a+T!ORlt}j`@nKk_6bN)@h6bSKk{?PP?LE8Dy$@;75 zT?khHr!Ay?hJK_~?lzzS#{U51+0ad_zMqOLEdLc?r%IA1p;l-2?LmdbCQ5kwkcp0! z1$dSvTQZj)q=Lq=m|`i@_$31e*?u0y9JoIsxBIGcYU9p;C{549+KGLZFvY&BXzz0@ zKtMN##McewS_@Rt^wuY%*0b*KguftkJOh#FVtn-UfCw|gMH|@)66+ac zM1R3u@?`Dh;GQq?ma z5WOF@Tf5=iLZPXkb+Sh_v}`5#`W^~-#L*qvDtD+4qzlwI#8GUAW9T;JwA6+HHNMjX zioa+=#&1TdGwbc;#fYKH*rCy>>HV;?fN{wI=d7C_Re z`j3eZi3PHm0cgJVz2D^GYMaf2(KoT1rwX#IHw1R)5iP9dLe&xTWkiCqEU?k6n|%Ym zpUeC&E&+(RzURgriHYanXdC|hVk38U%eznxuyqmvo^yZgTHHHR6%FL;XkQ()F|!Jp zS$2*IiwLhKBoNOs4x`3JB%vcl8OebW4HdW;6V}D~m>+YI9A53o#AK%fW{$N~kl>et z+}b?#9C-`)4&RG^ELYPE_LC9VJohon)|w)&TQ2~pBeUY}d#h-NKqW;{7|fAl_1K_drKH>w5(!R(PC>fqmTvYUgN~5^9W6J&;ShzD~Mo+hYL^ zm*q42&KmGf38z@yc0Pb|v=_^Y1zi*!Euk1ejIHWEIZ`JFsV=XG`af5}51{Xi5Ps1E z=O}t-SgNLgQ6z^2i}-Wu9(WSGUktpWkK3tY3qVTw?|mEE<~hgo-CofseYt!Vht{gwF2-RzaJvy-06_ zGR2FEd!L6=|9fkzIdO8LH`NXs2|rM9*sd85Px@AgBA1CW!J1Or{h{Xf2i=45@^+sQUf)r>U)N3q1@NA`lA+H= zpkeaF@BG!^nP2eI{GNO8@7TUQsxMSHQ=IgfKAR96WR2(>gdhUn*8(dN!WADXV%2-c zG}cu~hQA3Df3%V-*QfFA5m5I(HtKQg1)dPPS^Z!7bKr1Y{)>N(M?-M_D6D!riw9Y5Lg`2erSXzv zh=%&m$9f|e&y@1USa}bqf>2L$!57+0NT=C zAN_v)*P502MN!3npF4UB$E@c{mamsNOCHrqew@DO%%Sol(ikDMQnCOpp{I_}vWS{Y zvs6n)R@V66&q#Eo`u~%UnSOwgc?`j)f9V@fgz2}Aec2(KTq}B*VKpn9K1E+4Z9>}E&{&?byYiBF|82KmEN z>QQmL@b8gGn^1zeoEAg`3K9WrJA#P4_?Km=Cpz&`z~i0LFgKe({XkYNj%a@of-%yz z5pV>FuHZ(HG8uE1J4{?eZ)DTGSn3>?k2N3CN~hGhP^`-7-1>u$C`#@h$|14Xw`Hq; zouOJ3KfwH(L+3Nfo4CPsUkMe=;flE61s~RErR`Ij;KX_&RsUt8Cxy(2QjiOLBb>qM zkEI!ZjshKUWl5M-o^C%`!u$z=tNeE&0w$b;)P*oM+iwn{oR--LudJ#;Xa={@>*RT} zl_qITTgy!t7lRvHHZ|A*N$wm@drGkK#{8<~_uQJk5DW%U z&JJgZWDHZ)3Jk6>3&q>eMCznm?zmJgb|xiVoH=tD8=CiU>o7JUIIAw3>I5+!uWA0n zKW-L6UoCE3n8X;BO6Kg9oJ!U>$(f;GI?Az
SjEN884Q#QA18SXiuHRuHw(oRgi0qS1xojoKsDF}=H5V44OYQEzth$2yM3Tq1I{P# z2sF8KbNTeX783r#2uebn*3%)o-SVOm&jtk8(N9-N!^wlx} z>*~2{KHfDg+q=!1-3mynAyQbBA0hHtCFLBxkd@J!7DQ}4#6mzzBOo3=D}%nrk^cCp z0nvrkR4ez=ZU#eL2q~Gy%m22X0crzg~dLWH^pV@|TZ4YrYc4k#X&(9A~OSiQ7@L@%P_gX8jECeWx? z!$rLy@af_-@%tFlkJWz`zHBJ_r%}^y8=2G~2?PVzv~!{QT2q>DYg3Z`**`DDi%a9} znHmHW0H=%AkbyPe*CMff%lH$A87_#Rju1plLf9u_ctu9VlfQijB%eamEO;#}m;-TP z5S;w+ySbl^zR=n5m5(VW%B8kli@a9XcBJ>6_}+gP#y;{yvg4IoM+D$cOV19BGt{;q z()z_u#EHu_^I6J22gga*5cc&2*qupn({Db6GP}WLVUf^2d^u~`x5msAX!6=;)Zsz@ z{4%^fs(&tX?D4J?!0V7J-7=*w-f7U5qKf}}Qv&vKR`xJtWwsTBQyD1PkRVnzgGknZNr&oQGh!udDjVyu1DWPY>!;?L%0KK z2rUhBX?&7B)tF_LC7?*o^i1UUsukq#WugGZJI8e4E|hyoI(mIZx$gVel)&c#6N%I| zcsie7oK?0qc**@UfTIt&cCl;tfG;D<0VldE^&&5{!27Pmmwye5VBH86aA#tksSVIs zLYB_pb9KtT&_1qv%|P!T+*J(TcgMk(5OKeMhCwfkSXkJznvQA?(E<-G%5eWvLtvKG z{5H_-Tc`phO~zWtA-IwHBK97XhW2m^r&t4nF;CaJ&ipm(VebaM>g@bB(7s%w02W`e zGG|*)*RTZt(zGO;vvJ6hYgqLkN=CIP-lJZQ|9FPX@l~C;A)@*yK`1JLV>`!h6T+bu zA~x%=ecDa2Q@T*9 ziFzKlTjQxFNO1)|`+rbg~oAGmwBu22% zGO(33sW-rq6aA*n8t~v(T-AsH_QdeU?{jNIV<$39;5#NeIwmg zmx2iW=i%#a5>tXKE-b-hZ+iEr!cZ^5AZvCB#Lw-O?P6Z_urRxRCUn327?psIE?}7t zmynE;odyE~SmA^yfJrqI#EzT{h(-hjGZK_FDj(n0{wvv@e-zvTcR0M#y}o+@`aIAd z?TdrxK6t ziYd_uXa$2(j})>kke5E;NEBiO23pp{i_>@0a@RM09wtLjYifq>*c}Q9u>}n67#9HB z%mVoNc4tmbs0U@w-JUL)DuU|xyrRGiVuVKm!of#^Uo7g$nw(vC|y7n zLHi*SuSP3YAFc-d8trd-)3O;C45?C;RNJ`?pO|*TnMAdpGQ>HsULznvh^&jv!B}FE zVRD)*zs0bvobO?YTA!n#R96UyCxRGjcAsJo=yz`fSYZzPvD`kg{8P;|F5sW$v6O?x zfuuPQ31<|GVT+|GCFfwS(e8PG{pZzhn8snN>tCleWMwjux`OYV->_ZQZ-w}{pQ$eH zy$V{r$KR=_(+LA^V}%4lJL}IM!mBZHUtsryKkhDTp`H4lm60d!YaB9dPx$yg;hZVB z!>999{D)nNdLp)Bm-FHMyM z{nqPhWdEOgrqxA0i7iq5)isLtFZuIFG9;t|>&NFiz7+1QRi9;Euk-bYlnBLQc#RjE8Vpyv zAA`N~o=ISAbTM|^x0ZpfwOnzRYk%cA)84?f5UVtq4CAkKmvwzzXYhkxeT#o6&fJTK zGeFt|o()FJk3;L3`0N>V^nvXqZ^=k1DBbI5olWGk?DaqG0G7pcSPa1b%_gZ84PA4*3*5k(<`kR)~=)^}i> zE(2$i@`w7>ALS~N&CTX%N1j_4p^pvC#DYpc^*Ek4n~^is{ieGfojn zaM%Gk8dp8su86`47Jpr8V!P#*R~B*wes)==oAQ48r}8tQh!)o+R8NyK3CPQuBCprE zS>TVN(RV;!@?KX9e4oIGGpE&3>>rN$I8|<*d_Jr{WxoOK&wZ0pl*cz36NQM+Gyf3X zfLVBSCwi3wGHdq+qcnrWi3LhcBi}Yxae3;)a{{avtW~>|OuL@Yv(|tXD{Fn=cx`yfruV}!4iw^EUGrSnlA9PaBC~e4!;9= zdghm7C0kJ9$F=^UwSp1o%kovT6k@;e^oxnoEO$dobjt&#!S715Z}V0v{?Ut^C0!s` z3)qEuT9hpY))mi-2plz=s@JaZ;{BUo;~Z-(1QRb4*n}GTWvV*Nks>>t#z(qwsnE#`$u8R!zUXSUt&lekFX& z_Z^DkCHj}1iE!@I_-i(7BSwdKT;my$O#w=wpk0-t1iP(vn^vV`?=ehXf5uJ$1^1^|VtWgOqKca6&SlJqk{ZM>66#0PO!$n-1el-u{31laOIlU3Zc<5mL01XAmwzav z@by_mqbt%tR`+YRV`bB0hfN1b=rmK(PkEvOH|yc5K6O;e-o7{`hfDhKMTCL7fclsO z)woKaSmELi0n|IfUMR9k)>IxcWO#$6*_&)Hqi*})N7U5Wga5S7QIL%!C9`g#QlPc#Xj9`D)>r)$)?c;^r20x+I zm(ofh>?~iHi#<_VySKyPSj@j=YF5s5S*Q4GFKMB=VvTk*naPQ;cCuSTM@YZw$0#2k$%of+01HC`AZQ-kWA3d^CGaud`$%42tVAddpZTw?6>( z2`)V~MYJy*K|05^uJ6j{L3=Kp+4>b4-vvXb(8 z?I;nzL>RWm>$A_8mwqcAPMpp^l8N?2?EVBZ(>LYy`l!pi2kgs3y+|__;@VfNz*iL{ zlineoUY=iTJq9bpXgfd4)7Zr`dTaAw_$5d28Tg#sj$v(r`Nta^@{pQZVbr(gEzTE* z9Y5yTU8*{(cUCG()Rlw(eC3tVPKE2?_y}4ghoUR6N1#H^|ZmeUV(a=$68s6vO zIx8>7JDg(T_zfc#0|zfaP-so3v;WsV5aad>f3gddHUyvD&xH017$Wzp3XdK>l_(fT znX=73A6Hlp@kMN%Zt=Lk*>b%6Eu6sgL^1LG2{x&4@2$XTZR$KpsY&7t3Pja?=}Oym z(zlW-Yd?z#$IZl$+t`IHgdQZSS*;jOFLZYKVRuQONJjVlDaS=b3lzJBQJ)r}oNXk}U%T**@$cdg>HqK_BKkuJ$|aAyrkO zyPigBi{{$J(nO^&wTm#IM_Z%reI7C{4;J%SYmt!dKxLr4G z2ff2_D|6G7VtUR+#XsUjMKVmY3d$tEJm?_;G6!(O?|ZS>Fte7ktQ4&bjdR!6MtWT# z7~~Pd;^!^SS6gLV%SI^qbzdkXAiYecG0g`9l*HM|=2^WazCRS=N#@Pl)*}`$y1w2} z$nm`2I-H}>Li}#Dm%}0AdDreh&Y^dJNo)kEB6L^`3+yDE?(gt?b zL%Br|bJf4&V}4z#3$;tgft0%9ufz1-cz6_|Fhm1s9CpDSo!krHl=^kL@-QMoJU9e-iOB=#O5 zgzFQ1kcN3_+qTS`+sQ{%TJHMIe_!=^_+YwzX5gN6ibc%c{<-dT$}Ij)!VZFvjB|ZH zl`9awuZPAWWcIw}bfBOVvZ^UL0iC(p?^y~R@5MT~O$hiEF~BQ0PqWin(#Cg+_)Q6q z@nrm9JsTFhU_XvOM?UJJnb_-xc}kyXvf>&_f_QtyKTfkJE`yc+o9lA}L^b$GroveI z$XjTSjsz;=5f|w6><)u&w~Gd^Y)BSPn^;wbp#AH}43t&un=U(dQW0&u2W1Q+99IyM z46+ze4~KIV@+IVx@gDoD$YQ*~$CY7`p@OHAYQFW}FAzSes+xV}bZ^0N9{N-%a6 zq>X)^bkF#PACp)|D6ah3CRf+(?@n%kh_7EWW-TnERoh{f>8IUN*`HUn>&v3zG1F2;b|C zfiS9=ZeOY!PT>iu*!Z(79b6lrv_GFLyLSs|YY}CBV(~LvNhh5hvrzb_@#9{h0B%w4$vk#v#qvAL6)DQaW_vzx0 zD;xUW$c3~@f3b8MVw!k8v|no~{?ypg%FTjC{1c7%bv0dE9}1e2BPKC<5QtmB4}Ivu zCfy6NHUcBPoL$4tTX4EkE7m>$H>HI?H}0OPgD3mN^r-_3T& zSA%3W#IrFnl@Vbs%&Vl{%-D?|8xvB6?H4v*ps>)^5D%7=pqwUM#UvHVOfx4@kJlsq zZ~T)A@aL9J5hnRfXDuDJ)in~fzgjbty{w8n%llA@hIkD<(o_RSU(pmMg-)u8a87ee zNDoC^nPL+2+qA>A0;)g%O&Pyb0^GK?F9O?l5&eN|GxVa%@60JbJv>RwCr@0N@<)c; zyPaPJS753rj$cQ7GQFWo{7#=`7aLb!8MK`5u^F7worDG|Hg9vova%bWTxrk*wp2mE zV`ViOea1F&nvE~WW@ifIYmQYgN}8C&eieM`a-VKIHa~D5N4A??g_Rb!kT-1naqwiF zxH}CBOrWrYE#X~>^Id1E`$LgNKjW^Pr*Ta_d}-sEqlKML7bo?h*tAe@b}}5~q?GjI zr*Pdp94?f-f$a?XX*H{OpzwR^c5WNTDi@)>C!|#EnQ?+{obY~B6_L`GYT5SiG)k@2 zOMb?fl7+zfP4oYwjwgMx1fV?r_Jp=XEoqA1s_YfLeTp<{%4F^h|I-;7Q74@yGUWhW6Nrr-< zmmF&y_Axk;GCW}`Sjta6YD=&@IeME=;=n@O@R|S9{Fzc|f40lPJ}ZlB^t)`nZ&E@J z7^Hi4cbsP-k@#|+(r^(!R^}Lj1;LL%G8C9bEII#PY%qoxtw1;SlspcYvz785?O&IO zSv|=U5q^{7iI@pa*s}a2SjwKwSvJ+T6DG=u`K=EH^hH72_hgV~-6b!NM!f~j53Jiw z@2HDSS1Se%3k=f+0jny!dBJ@`6a1?1~y~*Mu## z5=SAvVF$8D^PG2v*@1Xv*K%@1Nj2h^r_pP6a`jI%sSagu5aleQ zO_fyH7^;%&2f3{waKezX4XiXZnbcXAkYuNS;Ch2-wnp6Cynpu=KDO#jT4g%YH%Si# z^W8;~l$RltmpF<7xo&fueiED|=vUbuNtxzh*`F~u>A>Ues?S;{UC)pS8F(BgEuxS(%v4`5YVJ>H3tAQ(bEgK2C9h2VY)xQ`_Ex=MePl zeR$B6+B4vgGKjxItmfR5m>84UR%s1;bNgLGDi~io;`rH#dG&`kx zUimA0g)WyAPCB-RlMg3erFbLSj(JK|&kwlzt(-PtX&7R87y;TU4V(3*uM}s^ zFCRnjg&6TyJ9H-e_#|nW^J+O!y3_J}J)pF41IcK(-Ue;AvvV!dsMmkwJ}Q8LbFz|9 z1^taC&G+bstmXU%O(@;l1dXJ^mgj;J<4Lr3M;m4AHiFW3!a}zd{mcxd|LcH*ts%LJ z>|KR4{mXc(?c(P$9R``*5v6rp@>W7!G=pmcou)GHStJ;GWIA316cegjC@yU}za2DX zpsfpIrxTE2Mw;EE*O89)m1iA#g{=-(!G^PPE4*N3;Y2EqS#_rARMNOE4b$=+b^i81 z*6Fpd!jnKu;CRuqwZoB3bPw zkWnKmuCXz4_g@{;|G^uJgDJ5FAy*80w726%keB#%EdX&lU1 zBvO)AKub>Js{NkyK3|JJ6#S!mRQR4#d##pDjy1oRXnX9V27{*RKJim~7ksw--gf%$ zJD8#P7f$1Dd=%$&o=6h?`D1-4YZg=@N`vT}*?3d~KQZu6 zVj;YhXVpT*a{OO?+hwS<&0v^z?_iSb%~kXpoHzbBvso1n}8aS#kX-z@7cCo{4pBc zGqd5=P6l(M+%jhcBGdE29N4SmJsalA}Ia}7P@OzMvc z!2LMWO6DPNY~b9pOp?4r2_xk-lnFH!jI#T)6c7@-?zo|O>L_6*G5+dpS!F^gGC~X1 z!OoNyM*3_g?o>osd66smq#iErzA|S?sa1>!F~Zh-rU5){^~a~J{TCDqW1OUv6)xap zY`~N4YrRO>vK`?@Jj>>uOkMaOh9hz>WNtx;#U5JXbSu8-&>AL3q^as6#EI0z%vlvi z`ZenD;>yQCx^>;!uWXOhH5dBV!EZPAY+X0=QN|H!t0UFrQtf*12)ypRU|ylL%Y(A>zrd1K&tM z`$JwqX2+?ha#-of#n|F_Zp^90?LUqaTC|=|Xc+wdl*sm($g0y}q7fT*Gy4E%&N6pd zbOth&th449=*}|J^TdVqnHwKw(MHi#(Btzs3IAg=UROV(q_$7D*K26&qm~Ktp6f*> z>f!M(4= zJmay{JRLv5Xh#bHZxwP5H97iy1_rOXWy3{yyq~s-+oqk_=zeMw?lNBh$V^#cU-+tw z+SC_>>zvarWXmOB2927b6(CAj=v7#m56Q-d8A_Q1x2Ab3Gbw1Yztm>>~5Xb95yY%#G>Lkr z?&ahUDPszb>3NOC-b2&y9uHdKjsE#$gKyv8Y-5*#VIW{dmNyn2ylaK3?Cz$Ru zd$vBWPQgAgzKI@+(kA6X?7y)N562q>a^71(3kn8}E!K}brVSgX;8bOoNYM-pi{pnk zDTlTFSwf6A>5a&X-xVZQXKi7gO;3Yz0DhX1J$`I z^*uz@s$jg9()j=!(d&{OE4dLfPF`nQ2`VfkSvI)&@|G{3lA`{e(0>2f(P^boG>n3R zoZ>@~_S3t$ZfJ|*P49G>^0S2+K5bPQFlC%&HTF5)G=*IM?2|9Xf&%u5v7AO?BJ%E;l} z@;Vx2{A#>1sUsMB|lA*|8kqZH71XZBxMv1 zcg>1e2Bq_sW1Tiso3@@z_b-4j9*W*bYfh}r*soBUeoW*VIt0PIe|)t0n>eoilP3H3 zM-Glnm=V?W{7;tSsS=?dPWmb78+~qKyY>f1GraDzc2MWV&x^Ga7y)!rvWJRB((vj^ zX;H!#`ey3hFsfEvwqNIefcw=p9173=dc4#ab@kG%{$kCdq}XlG>g&LAfq|>GkmMZ7m)KhX5VqyAZ$6_q}nn*`+;XgCH*Xt^$aKR4Xy-j z$+5(s(8FEc-%5+$tb8q-q5TPL2 zhjT?qT<-b+bSk@-1VV93bqH>?r8H2E)LOwRT3f7_H9uJ^YMbBbMB_*649T_~2?@dN zfRa*{D9ZYcE#mvh!nwPjE3uUM8mFe_YR)HNl47}M2d1$EPG~HY*&y^}fuGzDhMmr4 zuQ7>zDtz2!k7mHx>zMQ!(o#5+YGbA`5#KsxOh{NlFj6a)+167Iz!j&vpk$q2RqfLd z)eW6o#2s^t9%MAK6cMK$B7p^rCfSL_?^hUo451)j&r=e&Ye=!!L`E!yc*A>MT zk*U-hk1~Nzg)ha33$T?O=Ush2LeK~@=CiaWIq`XuumBz#k)V=$w7Wvza zzApa$V z*Ka%I0+V?8ukThWr&}k>iYwXu?@-36Ev`|?SC{lQ*l&W{U$bveRYCq#;V2a|nPz7h z&an*6PJx}WroWGh))|^KMEvn|ioThbWVU&TrCQFezO~+KZntASQvfrb7J1S;p*<(%s40_io$W$F|9?+W3; zof3`LSsLVUs_SfU0G*d=&U%LgjpdThDq9BTd~Lgv>7&l@J?;Q4S0vw~BdR{=Plf`( z^EBtlputV2nXff75>`xG^O{k(sDximL-Ucc&xm$K4M;pKX6*2@b*kq@#th^>wL`R;Jy}kL28k2#^)OkohF~;*$J> z1-ncsTf$PK7RuBw>KBSqhfJ@4FAhcAWDBu#j1Ox$|H2gy5#f^Eeiz5$OL?LCV>Cb5 zA|usHK%C0V&KC>69AtO*aLrKRtuFPw@ssrYkmlako5Tu}_VF{LQ%jJW)XPlJA$#in zw_i!~o^(Q!l-_|#FsZTOjtRuA)rCa!+;`s()&>M=Y(Kb+aRw)1AmYL7!v=f5B@00} zW+noi*o-kb{KhtTC%6dB10)NmH~@JhZD&wfb#~I;)JEzQq<;#Z z7uG<{LcE2=@*wB@r2%P`OG^BC%t5=;KTS3pf)b1hjS20`zkZp2cfVn@s$o3*Oe@sD z;&1z!+~&+rOE*~B_~NN{M&r%aX`aELbc74g4B`-l9ZT0USeHc3V#QA-@D4u zF9jj0nBW04-Bv+qt9S8NuuA$%i60R24}Be-yqnAcN$`FLwBt||Uq1DQzlxztF^16H z=dxg83~?WWaizE{rHH6KO6txd2+v=>V03s$8s6NB+lj4Dsjsh^4e?{RXFPJ7SoFa; zHGQHv-~Tt(6h5tQJ00NMuz%}(ayuG9NNOU^blJn+^?)|B@?1K%qZ%(s{RaAg2aD4u z$3oQs^mtn5;o}KqEXwIFM!NAGbd>n7Nm;Se=Jko`y!Ruq%rs0z^yCjq2>C#Y$j$Kw z7ABU0B$cRJ`FB#FUbf9Ciid4KOjSr2slRhPOoQ25zGgef)}+xmWbhFaS| z2EXlsm-HEql6}WEch2{t-lNe&kVOFZj9IasAfS)=o*CR7q=dbC(CxBr22WtMW+;vi zOmx@S-M{g6dsH^0mT?0Px)eXu2}ngG7?%LcRo3o{PyNH)-xC)n^;4ck^_!(Z__0Az za|tg|xHtAZ-~{3JwCSyIjq&3HKq~PVsQ?&HnIUf9`|Xuui%CqCy0bRkq}?{;ay-w; zUXhYfTTSK? zv`&6zx-2^J?5v2iQM%T8qhS5u=e#?eo$>2*F-s$UqsSka6a7 z+)_O;oI~Ds8v&*#Yd4$rkN)(agi~rez6k!l#6go36g{%#_--nf!+D7>Mg{P5qC#T4 zCZC=L-VX0m`WVAUOWpTKJ@a(LSzECGx+oWi1Zu*e@nmmwS0n8v|C--#fKbP}GRM8bH%9w4 zjwoXO!A{!F6LTcNFjFZWV7c zw_X$#?>j$$KV0*@0PjQ6wH_st*$9aC-150aA2=HWM@YUcLrTVlE?9_3C|5OVN@Oo- z+$tuOPG41wHn41-DDcgyY*><+U3*3#hQD!w9loBP)6=vs6hnE~B-^TPk1*BBEipo} zbtis}h*+*4m)>c^aJHa7pBd6!5VrZwwh-$Z`1IlUGFCl${=ljpVdE|KGt4_wlaHhN z!xm2C>GsX~uXr=3VU~SY?kg+_30!0350hP&X8vUAvR>@e6~2)pwcfS~FrCnP=XY3; zgxJw~+a*+J>0UCBj!rVqq)y-m&@2||)Oez^m%1k<|%C{q@p=BGIX%w>eP_K;fFkZ+eg?E%UpA=l5Qsvfj! zaD}sATUid{yi*cM=j)fj6Rb zhEFNc6)yhcG$S#WNv2TO_PO-wSCt$knQsQQDqR1B289%+FWnxq?Iv@5`M-bcNa=32 z8t{06W?fyuYoJTxwQDz@EMjUjixf7dyqPCgp&y{zWdRN901t}kLfmtzy&07+*dIUP z^(kwM2fa0IJ^t`+gpoS=Vc)?~mP|g;^Vh3Ek9pulU%5PG4&Rj|oBZc)+r9Md3_h)K zq{t?QJgOx-2vs1Wj@X!wY*F8m1njx7h9#s)AZHCfQ|J72!<^%VRR29?HyPKUS&s@W zx-OjDQRY5V8jPXLm_Y$&Lw|Ybsni`c-XDYMi#v7zk|y=SKy`*^o=Jbw#xu6Q?AGJjadylEhfvHqQ_1+ax|1K zv_L#fL+%X?Bi+<@&JqDieYnOcxt|Y&4do(D1Y_-{-OPgB$9ws%Luccb+vi!iqy_{Z zX88VVWo+Yrt<3c-j$tTmlZkV<$1!zWzx94q^Zj+?@@{!ANyuE1N_6RRe-Hl02~6CJ zr=obl1#heWPY3y*q7O4#C!7?U)x=2={0RmkKgSiOtB%9- zpH42soO;Ul2NiUX=VaMnd61ljejg_1#J{pXczG!AW85Io3&RA-j1~G**v;p~m21Cf zp$A=m_v>!B)S}!vUDcX_Tw|WXov(ALM3KZe4=fTs`@xF7`Uj0yN;5)&+@37o5J_}D z39eO~j&po6f#|m1dr8ll3$77Q-oUi{ZDfgG*x8%@4@7rdSiF%LrmO^yWByqSmyG@mlU2-Pd#RVrE{o&& zFJM%U15uW=C`!)Qk^B{L-keV)Lm2VE_7Ny1+uHd z$aD?%1n_ILQ~J=&rsekkcI@MB((*nu&j0%PRcT%biukXC@qEZrk!)V+=OqPXrO#4B zKJh6J=VAxU=vDL8Mfi1MD`@C@9THkZe`&x(bW$i$>G#`Yy5GGUT26O14F5GQ!tn)^ zPOxAHr*=Pk%Z$TlOTriikWy{Yt$A}Fw)+ql4UwKwBeog*HhKcQt>&*!wJ7V+lCae} zTL_Km5`kPu^Uu_gXgW)#n}g-p;|9UimQ_+`T8)!{4pZ(+Jw0sw*S)022?tO3;voVw zO^Ol}PElLf@=Dx+D{JV)D`g?$hBe_6S*P2X3Bwi3Q;XIiJo=Z2d{c}!)nwM5Pbjr_ zy|DW>xM<5ehqO~@KWRRgjE<@mtldq7oZ}>?q(p03rE=Tz2=-ZQ$lofW5Ao<5{G~;z zY$x?kCgXv-ty+Wf*d>i8T=o5|uY)f^DRL_4d#r-?Fw!W3w}xq7W4ghv9U4wWb`F0h zHPcgKbYedpE7_5F;t&^I<=F-6c++6Y#{&Fm8vTXEOV8}#*~r!D3XzK4Ze3Ixpnq=u zpuo0kUSN9SQ;0knDmZq=!bw|$`{jf7&c?NX?O&s3s3N@3V+CDLlrNv)MAn$g*h&P_ zn}I;mBV?Wgai1lUA$IeFh*CX%vOulQ7XGCW{rQS83%C(;dhWSsokWohbvv>}QziJL zhnbq>Nw$q*s0E170~)pnLRyKj_n{&A?naMKshr=i^I9t&xcXs+!TVk+ zK=FyOF-A74tmNQPFeKXP7^ira0|6hf7nzLs_W=opTeovxM=07Um(O! zUWMQNkcg&Z%OP^~McovRWu%Dg7}{o{xFJFkA{&ZmZ(Llob9A z=>!{ZAG_V^)vlkAgV~u}YI6k33e~3!mc-80XpI?*^3KEmZn|sciV(EeEOh5fZ8qU> z`rT{L6L5f;-IC?gx^U`{j|@~=wbwDl7K3`fy$rGFv&XgL#tiUAiBvz<&EWiPAV6Tf zKZ?jPnA1nMcd9hyt?)rZI*Ek0kH~&#u||)p0H|e5_|?n<{U(ItMSU;)B@oT{!!YH> z?<}vVbL$F#w;xq$U^sIcJ@SF?^jY(qn0oUGue8e+v2x zB9%*MwTX;!YIdnl&b;}g-~G_v*oTaf`UB5-^N46Gci{cz@!!XM?WPL`KBkYlhc2^C z&cL5RL7pbH50CvEO6Vi2TP{x)`He+(!kqpnZxx{5T_zA@*w7JxkA8IySm{1o&mJB6 z36&6#tYt6aWg6+r?uRp9azz`zl7xtb1c$jbKgN1r9gxGoGlrrnzmnH6{ilhEaSK_Hr1b~oK7bYJiy0W^6ZYWv7WjkS zyX&?@5lNRYIaBl8^m-27@L)a3g>uEOj|XTD(`t9p9%*AfZA2zX7DGT1_uu%j6kh2>DNX;LFLKSsm5MJ?1saNla>OBxdB zZefHy_deRm$;N;-rGZApO~_vr---Y~L8j94e}BEu{>H2hmf(LNb4uj)NXXnU!|-x6 z7@>0?a2`w!8s4G4P`QTo^ryw44Fg13kDg<&C*jL{XKu%n>Xem3p0`eIq{-n+&$@Eb zKaWgm!TH17P9p`owQkbH@gc5!Wz1jBj$H}8)J20~T#@ zgN@t%{;s_(lmVZRaLVo;WX^U4Kxo2tudkWL)|v7 zKx!fg)gujLE{mcfp5BitD$t|25mg+1gVg$IC)2QF33^8AMm(O@s`ZYas#!u@S!-xB zR)B?}Jm61{5I8!6j#%-2{n5goBcvspILmq=ndD#R-Uc%lhsH6-A0T!k$BR@Pma@##uU71x_6vRQBCd z`+J#>KA=Cp{r#xn@&}nN9s#=3V28#8%ku3(3%X#KanVIeK)wu$d@kZ4HT(^F!(Li( zuW{5!x7U{~p}t58*Xx^aF|4Vw9pyPE9f1_)P_tFi`pb2+YP)-IuDLkr_O z(b(q4qc0s_{l(7mTLo>|f-VKlomZ{dUxhJ0z!L6E_}G)#a!RuEsH7BNsz?&T$KqiD z;+iya1J!-i?A!s4)@I>y(}nbFv7qN4{wCtXE7(E@o{_k({a6p(xz4E@Tqb>i!OBK6 zXdQjJx`K3`y??oI&>&nC^i|KM*a&~-xwCxbvO7_^Ax3W6Sh#K>&AUgKua)=*;+7$) z0J?vlo?I=NHqXKa5BC>IzdaZ9MA{Sb;pJa@_gF%9h`)E5;@&F_S3%nx2gRMf8u_7# zk80@4?62e@bBVjrxqNWESj%822?Ut5>M~`&*_#YOiw;GoQ>L#U`)Iza`t1TZ$N$Kj z$PW7B?IekP9{(5d%GbT`w{7mZWXb~RI}hYmv%@cUm z!E+6y4s!|AA%%E4=?oD4-;SHv)(!kY=L9qiv60rxYHmwsb<~G%nZ$!qp?HdyBcZ(n zL92f+?Imsdm>Fa%3x*BltdZoS9PM{3kF{9o=U>wMpVtJQv0oUohMi#1= z=oLvPBe^koFLdgT`kyQKJ0!rHs~LdMo`5$DUp0+#sM^?RO+OW;#3jlua(xjOZBRu- z$D-a!@@=w_v#=zSh~iWRH|H{<5X>cOW3Sfrlhv^p2X%*Ndl>%Z{Dq?@wk_)ZILkSF zkkrZ=xv$ndch+f5F1BuUkX3p&*r|uMg;a<7ojc9K@1>zK^C^gk))=FIYn7>O95YGJVJp> zOeI`^`d-rxg&*BMYy|m*AlyOwu!|s#r~?Vr?vLtd=O5dZl@TC*{E`RlNr!ws6k@JX zRG=9axG|IB+HmnPRvH$}rgfhs6NChumu*Y%N-*F(^-RiTiS7qJ5oQ7mlQl2dHjW?t4Y}T)lpp1~K(t2?hK{Nc5hSy}^ht@2 zPKS+%yhU|iuEyyxqCo&nH1@E#KPt{8D`sGcn0IM^B0J~hyrgLq)JFXTm6TLI%IUBK zZN-cy6?IxwJ>5YOXjnP8T-@^M68Q#Are@1d0rw;DPWK0ITmhdhOo zchjDwEr1HRD+|06a|P{1QFPmfU84`f36d|f+A(o4F7kbtii;Nu4?0t3$Ffrh z=QKwm?be_z_hz)HfbF~YqW8?_rrEWij+3hks`95&>U9{#1s5x%P3raclmkFh;bj{t z4rN}B`I?CKLJAu)?$`@uy?*P|S`~8tIAUqO*Awl<@eod6^X*&(=MdGVViMXsIA zndtnrhW%>w(k-#twW`7CPTOSmK{-7X%yre4(Qf!~3wrhFZNm=byY-PzTX(ZTX9XMw zd+=SGsl91zaGQG;R=mW=5$Nlo4!P7<9;cL_+_;UCk4W{c=J_oT0~)uTDX_nrie ze7bM({Z#82*&!!0P{d+H+t(fRson#=b+KAG(me=&lR+Gwgx$t^s@lQpQ@okxy_dFL z?OplNV@G3oyEwmh@1i0wQtCDqGc<(>#^T&O(3WWibPXY|Y)ScXS*LOaSe-C#tDac|7 z*3I0)nYD4p&^MK(ODjXocgx=zNulAd^GAz`w&5Ty03@*O^}mzQAaelyb+pv)Lz zPC4PWmKT!e@)@mRn6-{Bf}}r{p~0TiDoDtb31YnM8!jJu^1=CPs3F``=P9H(KP1hJ-?&x@xY|*Fu72|^O0;x-T>?f!q-SNDbN&`=L=ho zfAl8DbM)_V5uOHbjtUzi^~d$wF3iC9Vn@Q??y~PoP7^GRe*=SHdu2W|NDXbQF?m)Q zM^-26rTBktfO?DXDrqBOYX`oesPG|66w96M#cyLR%;d+shNu~s>`FXkTu32|bxMiI7ScsYWXpO4TfX=(~B!en|^`M5C)bm741eSME{6ol9 zhay(Zf3BKudtQEC`FQRI3@#4As^mA45c4Z8V23N6H{bW@-3&;DrS+>84nEBmCv4^mI)f5BYdw6!CB)qdyTsKGr% zmxU$lnfCT2qg!H0_!s&jj2P43begW;#}H-_{tGIz9m^WwR~r=Ej(49!`U?p<8N@J# z+=NjnG$*3y6&0Eh?6J0Er(<6H&#&H})AAdyS!0R=^A~%QP*D0o@Ynd0HPF|uKPAsI zq8w5o6Evmeh6Gvavb-{5x=x0en^P&)Y3MSb_F#$+usyMKzB4j^;=lC2&oP@$!T0<1 zoAy47tQB|mK6E1Frnu*r5WH8m+a&~Nqovu4K3K^GFm1zIFtRC_@_e`5lociBAcnNw zq@R@FODE2W90Bai>9R#a0{L`{4_`A;-FT|w7%`0&iYL84m6dgZHi*b6^U zufdSDGie0WyC`$F;l-uk3&UXaWB1FQdVVS4e)ykh68+cz8AF{+%G;?=rIpvoZ%be2 zMJR5jD{*tbMNhOpi~j2#(Qx5yDTnH*<0C2nMc4J!N&7!=wdZ3GoV{( zWl7#XEi!%;^$hEtceqntgRFN&J^f$?qd%I)-58&;xFhvcDErg(JQel4)8o(svN7*SHOzg2^hDgRZ}1;V>&pp(dW+5i&;TpPi9z zU4py0BcYNo)^%wQ-k{CwF7P?^9uNp+Oz@AGyIChVKq?Q0ATHqb&Uzre{o4w71F?>a z)1n^a4sV5e=J6IE5sm011V=Ksl6p?TQV8KWCwSMZ(KWDWzz|Zk(ab1#@sz-MVTmE zCt9TH8s}WdZQ2oJlN4Y67Wazaa}h-05}kX~fP!O(?%+kLNC0^=8Jeq!$|f*GY3l84 z&Z^+T4I*t~G*99KoDQQiye_8tvz{eVKc29-`s^E;g+ha^KE|i8)snQA##M5K@r2=u z3dvfXLfpkS<0m?4GGF=gb!n3+giB&S#_lVeta$&#)ENc!UvTfAW8vV+cdQD_!m*5( zM?p^|3#;w-y7`B;{`_Q^pfJvh`99v}xM^-dvLT*BOP=;OfSo_mMOVHkzDwvBD)<3+ zeKl}Z!zTWHFSdYP?SN2w%JFbvXQpg9KMEPqs{Z5p`+kqS*m@W6-|mq^=BRX~QMAb99l|BbD2Gxz{(qx zwExQRsI5WW$IC23?2iTwWU#b1Xl7BGw%l|g%oN`FsQ931Z{nJZp@X#cJQR3nrp>-W zWg1o=PJFQcxDU{z;T5!nvQ?2p5Kb>aY~Nt_nz^(?PQJd@nQi@=xYfgkRc$Hbe&=!N zB)F4Xkq)j~54U*v%C;p$>`?5BAESs&^9!~)D?x}G$CLXui$za_>J_j%NI*{z)<*AYzU160z^1Q!YtNwZ?DHR1;9N?n>g1{dY2$#_IRQP1 zisgtN;|W7l6c$*%L+&HqH`GPiK=;ivb0$q0)a&kLnwN5weZr;TynkS*;cK*66-q(E<y%SCSHzJpzKn?Vx&e=Z|4(qDPruo*X z_21~m2a9nKCYpU*rKGi*C07|4bs!tH{F8u|_f!jWG~P%F#=$3-E73%hJvg$jz`23yW3O-4igGMr0naEp|nY@wiqebTWBBC0glfg)(r_h#y&e= ztu8x_R`_TDhzVF)V%QBdZ*(?J{Y7Q);VIa-k^1WBhYv!TmN)%sCn1R67;b9WQ04lb zHt>W!UohE{JuNn1yt<$bfaOBKXEHh!ct zhZIsKDj+p81&YFopWz}Z!J$WxXQ*L|a1?Zvk;$_r&Hc=>iDU!CUqC zWC5+|T6gKT%D%eFQFm2AK7i6@lLy@6T*t1Nm5c`u!~r)NM>1yOC1a8s4-J}vZhCHh z)3OvEK${2|GGHqw|An@TG7J&k)`u;jjC7q&q@6P5!ws(IHFceCq@8jnk00k(tedGg zA+#@!4(8_`T1Wm;e|Br1sj`>7v3a$sQTyrF(UdO*`puz;be{~J{d9O&NP(`mz6k2{ z@AugQoE6~ko9qS@&XE%Ni*aKw{}qVXr8gtBN9>zg&a(#dg>T~kJ38!bZaSU=DXU_O zMn9MEO)iC0yW^tG5w8d{qWwK8jGLs4RqEe;emP~aYljJQ9sA>CY!qqQ>V;Qs>X3Et zNq2syvYZ(rB)!d-d*1O3Ocz<1e(G6yqU3qXcP-obLdQ3M!IGdP6!Nnrw9o8*XxU*m z9>Q;ux_w^!`90{9@TYzT59MCcMU6Gp`{`%jsspm_mu-K0SxL4f7I)oMGE%2oq(W&P z4>=n0jG}?Aagw3X&?BG^%4p`J8*2Mz1uazCmgE(2bMyTD1OGK6X!{#3$bXgWxB0v6 z$T&B6B#8m4NXPJ&PDs`^t#c*EG!%S_d=`2W=5@KyqPUmPC~%$vFCt1U#qs`)C&8Zl z66N`%oZ6YN?!W=>z0_Gs%idRgE&Wj2x%O4x=nQmh09I&rxBxLoIf3|vdaM=+ux|`p zi(fpon;i@c9Cn0J@n$b)yav0Vp)Y;B@t1l+`frBCc?vKJTV#ndHkL{Fr(@CpAM$eJ zx#Vi?ugn_2pBcFLb~qybEP}8izG4_-mLrcSZJxq!tO*eRB;;6>vIy)aLmfM>X#fe- zv0NO|K})IW=FWRrk?qqy9QUDGIwk`^rB6Ej*G(4v|KvTsQ;Y)NfGE5rcQvRU9|e z#}WzqQ`<8ISRk_YEKc3tIv}>Y%zvF`3<_`ok!R)&Z4J^?`&rm%qrH@|P%P3M-y{U~ z+yQ?4>{hX&H74GNx2soTLCDBjaU3jQ%;~BtudtIH@G$H>M@{g(@1{cKnd^M~%nh+RJg3De%A5tP*GzJi z-GASne`O6#iKNp=kzX5ecy+c~ zor$HjCs?D^nA#V7s%E$Lz`Q|WLofDW|2eK9Qw?h$_`r4j6%C(B5Jzm8p+(Nvn+o!XzK!gntryE>ji|f$~vsE+8uZHx@f!~_1AiO zvzh`OSlyCYCYU?5ZWWJ4loPQzKKZ!ChklZSZq$XQoXFzo?aKjhqVzwQ%@q~+cNP@1 zGR|tzUCRY2Gwr^wylANU@S{nYJ8^0_zP=A0L-*jS_=VmvHAfrQwyO-cee9i*iWA{& zVOT=hw{OYk)9FP{KQbcIxDDEfdk@Dqkb7U~ z#=}xg@{!YxMrCj9Wb~v3wAH@ci;ve>X1S$4nEkj^tPby|dDj|k68_hHZ*I#d7pG49 z2sR{K8I&nyMeQjHTP>v9^wPT;IMUE~lY1X|G1zF0H~$$<1bDfW!bO^uH^Z5PjSS>b zRNeV#UzK!X^7r*hHCR&g2sBTfdG_J2fLC$QszuWtOno^QLD5lau@X2qWYeyUD66$wvDdyabkPYdjOTN z^pqbTBhSoma>E5qzpoK-M_=rS8PD#0>CC)-?VNE+w1Qjy0()DD#*NB29qlqTG3ifv ziR!*vMGH_%Oh$d%i}6p$h>gmAz2-^NDRsIiQeMn2X0H_*&YlWi3D`8JcQlxMMLJX; z27M&3{Oqtcoby)?r<}H%-XR1X3gsV|$ja2|-(vfuzKrEg-vQKh-CSe4T*%oC6^bSF z+M9X&8ei?~sk;thY$0kc>X)er_|F!93ta>u1UQLJMr5|lt$$l39VmYWp4f;~)#8d- zx9SNngUg+J{!zHaj*Ir$;}I$tc*8Qqvn^we>>2hL>dv)A`q2czZ-E=L%fhUHH}>pH zcWWQ~&aF;C4c})j})oukRE7#!7k~62~+6uK$6orzcWd?0(GXq0NF=Gmd`_^0`y@o!(9HrW)5f zeXGUK;a1IXrX4}J+Mz{8(WynYXok8vm{w>LIr5-Q8ubjt?ASA|4er2rLyo&T8 zU6`fejq1goqAdQ<18k%7V}kuR>GiQTKl2~@cu#0&@cUx7#K#j*pH)k~GyAsH(}Dl= zNz(^Lh<@PxAewLiHQF>%nE%CBn4(cqQc>Tsj&5K(Ulq6kYjD(HbGXp^SeB(FLy|-R-p$*aKzRV&A^LFLVx47 zmnNn(1LzRmvz49z(m%;SRi?}1bVkZ{>($Rsz0d+>S}MCqv(2l*(HywI?awn7+{K-z zJ)AlBQeSQ2VLby$POfuR78CYOxD2I3$V#i7aKSmc$Gc3NM_oUeo)z!kW%u@K&krbIzs63u0=7e2{mI|l|=%q z^OtmjL;Uxm3nTQu-UuyPt6yl5sV!FbV)p`uuZ*jr-jrtCIrlI8KA-hWGennZNB)eT zaScLd-2Em~EbX%gb+QGAe82K;qpd`{zweyXeg`-a`eFBop>J&GOoQerIv^eh!1|ld zY>*{n5(_DmEcmBsWL1oH@va;3p|N=5Ut1r#c?tGSz%P56b0zwIvK!vC(6&SZ%jN*I z@0nL4Bb88OZ)7#u(xyw%flba|0;8ekkezG`NN-)+IeoJ?cOyLZM={nlSILvjq9|bB z6tC!$4D5BCtw^ieC?WN-Sk_8b6pZ_kgV7;89x*7>ugDpJN5|U?-wyd;Fodw5Xb?i) zq++?5TmYAGq&9-Bzjibaam`Sg+ncJr6G>a}oCU7NDOpwTN64lP2eh%+d<4CZe3PS? zbpy_D&m0_wQkWxLeB*ktuQ3N0jVD9D9s{{^v-|0}FZEZE0+PaB!AfNks90SGM5z(# z5F-xL=^9y<9JmgKC{!G|OMF%!4R_i@gkg_Quq^GiztUmg!xE zD^lW*a*;c|IVVG5a<5Ubcaho0YW_ENT;10%i2c*8kxzORKB-4}Yhe6O7C=!dImruJ zBy4ASf|2^I3+r<_WuqFQVd6?62y+4Q#*vUngiK6U7iy|T!^_sAWY>_ebt1v*gU%Sk zP@4eI6PO12dY0al3$sVcXSWA{(C|S_j&kqJ6+>B<=L@L-|3C!Glk0QijCfK3EBa74 zIco6^b&x@SYkg(5sV#%7?Ht+9>9m_P(g9cjc}#Sc7Q+_wYGzgbZqJHm0BlJ33v~p) z6DCsJJG&6am9jjD&Awp7{@w6>hqQQ&ujE36%Tf@%`6<=K7A5NUO;9sp$%*dezRI6@ zHh20xl33#gUaYS=OmW6EI9cHM1s#f}s-xn!y>?ylN`&`c8r_dp-vE8WGTl3p<^YM< zw0JZp=oAiG129K10Q$JJ5hA%v9?t^U8JJORuvszeIa$s+{=A0@Q|ot=;vfE&IZIg# zlGzn4-oFG-{1uk&k^hi0TspE3VmT7t?PRn@oi4$`4=*wLuKK-uysM_tXl0zLED|EW%P=Sb1Pt^m1o0EhK+YLTmsQH|W`m?Z%sZ4f^-$1M9%+PDSOuVYq4 z@x6HiKY-+w&9MJ{EE+8Gq-rev~TukL`P&I}f<&T$qSUM}qzsr(@pO6S*eKp+!v;x<{YmpmIE{Z2N$y}j$-Y?dJVHO-haQ~Uih8j$zrcWmU6i!O)`*pLPBXb6nX!Q6 zG|%8LGz%Bnd>@U#L@V4u;sC zI~<=j(GBGhJbo{K^eyHHttfkr`}O}C`4foBGW0r7vqr-4-M8cy#vK3lo7Ci0el#UBC=C38iUgb6M9>nCb z+2u!zbSgr>dv(*zd7E;ayKEj#zjbv9R~iWw3}oA0tZZFY)RJv>LVgrObj-?0sXa@K z3~jO(z@le&Tk$-JQp9N4;R2?9zW9aCCb7W#=FlhJ&>|M#t@f`{DPN*Heu1T;0;g4+ zb7*fkBA4ay;BTCtLZ`pmvv^79#(ISQ*kr`t_+Xmq|3}Pv)gGlX-+gV@&-p(y7<%9+ z*s3H#2Rgg2pU6jqS&F7_O7x+pXw9c4uRc-g$Cx-&Mz>f0fAn&8^D|K{%Na}{IElr| z&M-@;e3##tM(581r_?z$X!Ebqt57$r0@aP^7te&OWczk*OYb-6vJ{MmUIb26lAyk| zHc2h~S@_NEIV_C$r;!VCu_N7JCE%iK0IfFP@nm2UE9~i z;}9aSBqDiIz}Z+g(j(vcRM!fQKG0LQ7amc%pY)o|p80Zg_drSq)cmqnfh4!kgN`ZH zFmzsohCT~nt!-#+{yC{%w&H4sgV;GKdDQu;>&)sCBNqVwf+_Yn`P&`Gg|&b2O=gFv zPP>gMoLRRlh<0Paot5WELEZN~EXLc~?`IUYPq!iWtuJk$gr;K{1a6y|7xwk^sxcg} zK_PDU%!sAM!xx!2s9i%d4ahGyte1D!xi;;JKiE2_7usO|q@b>w9dcEjdW>RmL#qN_ zT84&dWBW=lkkqHQJT@ELPZMWK9RMusqqLr!2l)SP`sWw6XB%*FEq75 zf&Eu8Z1lAdEqg5-d1T~%itl#S9z9lI`h@9)2#sct(Ue!PW#QyX)xgG9$W!{tW%7(U z=SH1;!vAC|5c+L-{$8+Hb+Xa)gO&L5)yRg<5qRXmoC5Txx6@vT(=o~{_IzJSK94+KukQp}lK*T3YX#DNI#Su-bhz zUxXcVYstwcdHQI%C5_?WEpK-kNh_=J1*aTB+|oNF6dDwB(AUJ{GbLO-iFwqpR=WO< z1;DC;$?|!|_9MFp2^rYR45z8CieKTqf>%1j%=n)7{A{Hhc5?9`dcDU&vX|Cn%xx_A zrjSxy=NLlo7ozknb}YqUoa$RV&27ZuncRC(?ru`xSgGFT?Wl-T1s_a9_fXz(>@PX8 zv>pi2Kf+V;1D&r=GCEHn-WdRaQ>niGLKiz9scCCANr(iFtxHcDT#(4G`!i5GMTIT~ z>O4r}D05(EIIAi(@Anu6>f=HN>fMzRKdI05+;e8Xgmb>|qyQ-K8+YnJU-3Oxa&(%S z@DemD{n(;J<4Lh8%E)PH8F`D_v|l1H40_4aQQfe>TcmrTyVpa-+bm$AmA6&8e#h7k zbuaX)i;u=bHf}F1FGn#4?JWD~hV8%X->7lU7w0_$!WHRf(%4XiZ-74w4VnI6Dn9xu zcc71z0Lmt?y(M~FW(M7OTh6k9Aycm~U3`Or>Yv{X_gqOf0zKKfeVfjAxICZu60xnu z!+o%n16v-e&~ACY8^9-O$bzKYf+xXv{fJeZa!9@9x@=7?*Ga>e1QH!U`JV3Mu*o*A zx1#~q(N~FbQuj{@Z$&;t)_EDzcou-UI_R9=YSoZa2&7#1_uT5dDp4{cOJI!>?0N~` zP#I-yX2V(eDAy>q5bZqc==axA@zP_tNw;G6she-ZLAC91Na;%18dQ|MMIWegn-C`j zAA{Vf7zdsZm$>G<=hm-S*M0Zu2#|Kb_txo8#HA?Y^W+Euo|)+>slL%f|Kq|r`gnn+ zMjqk4R3YrYI=lfSMudEP%Tz~oXN1fBobk<%HG&)>sRkHh*b+5Y*XZgvROsm&xH}Re^*0%~co4|c!IAOmy|KqXH!y$bkufc7Pl>Md4 zEjY95`qT=d-o{U(9;b=NWvxAoj|_aR7pk|wF}n<(+{OGL!S}lW&|tLr@bub$4%mU$$Vle;gQ<9F=t{{QJJtX)X%Y%=L@E=D#&xgekmYC^k zs{#lTk{h?cUkdOkw_i8Alm-oLguJ?)#nLnc2Ij_@(S(16dZ5L~orqV#03(OQrqF_$ zo5MNx&3Z!=2ZA&x^XM#N@i5Eu^y!M4>=$TNMK-ZSdQ}z%amoZ zCCPt3HqEJq5fxlB$}LJZu$Wu#Ub#}Qnu}nSV=nNy-E2&Oq-CitF|Rg=3dMwZ0DN)o zgH#iwFYB(H9an+v(~}80WP8VBK2yH&YJ*Ebq}uZl3PaU5-rD(rZp#A@$Fs^?V+hGg zq@WH^(puPd|Kol2qK%9Q1+P_U7^M$XPG&HBMGi@!$mOyBN%Epr+6lEfI^?0zEHOIn zAAP&l;?mDmZ?ngBgZ%o(3-{>lZ79S|SH5A#q{+N`l5a3R8a|#<2@?t4v(dS|&{$<; zSOP=-=+C^!-U=twuvnKxtv!N!9nZ}ypIx*tbo>7F*3+@(arZX)Q-81^8c3~ZHUsh% zJ4y`(#f{fojib7NAnGQCfDcd^-Wp8t!pw~mYQ4cC`Qo6fVkdOkOo0k8Wg0Z zyPG8!*xlz{zwbHk`JMCU`RsqoK0J5K%suxt*UX^x_*-pcua*NOC#fwdsfA0ab>kN_T-{)jccA^uQNhTl@@HKSwtkpFNo(b^Go4i+%f4I+HZHqcnQ6B2P z3>4O_P*KR^W6jMz*$ieaVl+Rb%fq-XsPb~kKmN>9G-{3!#U;Vq%^=}SOEacXZg57$ zGF>Ecz6f!jo@Z=vflL>MZFbW%q8kzMC$^~i45gR_b2=H<#jCGjGLmiKD=x{c_P^tm ziK=FS2((m|pm|`xjp$YE@x((mqQVbTH$t0CA5J28>H+O5D)7Qg*!7GiTO2zkD*D~7 z(we5|!Ii;Z*yf zZy9?c7{SqgJKwt)!*`caymmx_b7bSka!v0;jvjsV2=ZX|=MrH#zPyIE6^10li+@Q_ z#82{SS*OqM3uI!_*B3qnQ~FGdcAVO;uv)$D!Ckfo!-w@ym&uCIp* zVSf}T*~Qe}`LYxjY3owD07kW*tF9ldl$*;bS$(vflriJ9&h)Sg?0G%sP&AKT2mUn7 zwq8%%oOZzu$-+LibsqM^ZbUEV-YzCIN0Y05f3VJ~L%oH*0^wkL1Bu@+y3FV6>LRF^ z?7G#G7Ti$LRW)O}ww;+R)aL!B;*@y13|3J-K+lGZRj%2mi#x+W@ zfgjoTxIw&Rh2$n5SzS*vz9;oNdamcq_5JX@8W<4#n?OuX<`l=Bf|_ptLFTGEeVY0> zqMjc?8sTAO2JZE;Rtg5k-A01PD}9NxrOYKx@5Gd;W1w(~iN&S-R-w4Csb8c=NBIoL z6niUR^4LdQPSN*BTt>m~#JciRSV<@sZv?&HHuWOjsiqqWWiRy)hra%%cxqD^oX6%B zPc3>YuJzgtQWCc~FcIJ+}^<27-^^$7*xXwBJ8FkSXh2AxIm)lIiJ+vkH7PlaSd!nO+|o}8E3?D&~MA5>E)$CwhBJ-;=E%+_ma2IHm#CzMcF@k?6c+=O@do=y}Ae+v*u#X|2Psqxlk$FuczxJR0 zwX{&k-;lk^-yp(+v;e};zie3-9(1mBwi0S&!KDlH3q%;g{3z5lEu{k z=fjp0=xTWkcTqMG>#rN3Iu_v)kPZzE2S@FWjNZRdZ=lOyN>@Ozl~v4s@yLk(a%UF- zX==fXq`2&N7PCpWFKb`D7!~a9f~6YJ3hJ-tH@wewK$itHTKyCmi9URPlQ@mAUI50T zz4Qs7>~yj5O1Q3qPzvN+8g$%HOadGK=PC@WP2o2+12i$@?kxHf@F5_^bqMn#kGg{L zhnrX-Q7o~jxm7YN$u*K~vxC|w9TG+TxpJeWV}IE#>s3F@GF+l>5bN(PPC6_=4_dG( zjLJxX=P>yXkxCXik#T_$LBj$LLHz{nCw6>B0x%TYU^Y<(n_kJ+r%7UpD?y(!Uc*@U zMvGV)uRWrot%3vjrMcYy;Au3C1S6bd?)&`oiP9bp zIki|EYd-}q-pHD>)r0nU!V9e^p?jazUm(d2-qPXG8Fi2c(xmr08S`k(hwjRwpWd}% z9Tnk7M8Ma#H@$C9dq>*nmMm8WNm6BKOYe=4JToj%e&*c1lKn21H=NwRf_#n|g#8o4 zyZ^?g%Jx@54Rj1oIcMfm%qHslnO*d^aQ# zXZ8$wM_q@-vFg_G4C2+x(i9bu>ij1%FMs_vR{I>Cy1W@^8|l{tLU>rQOEj42%MWVR zMKvWKuKS)11M<-Zd{Qk?iyM(9{C7TF*NTlN(Q{7JXNp|Q#1X@MlUoD?69s3KqT`BY zaba@LNKD|Kg~rSZe&sRM$)kTrSEvjWR6Se26ES$fS069P8MiPO;DOGoQA9~`1^yCC zKqQYTo=qjmdnMVRi0xY8*MWu)>hP)@J?%c8ddypkCy}-e`lZ-1%CAINF}{7$L-_l<5;L`l&=1p)=U=^9+7VvU zWOf^g8QN@7Yfpsrz6Z>QuRNS~8Fg)b)Nel2lZ3P0=YHs*#W2c#eZ?fxe;9CTp(OY2 zHr(r;zeYi>mu?>mU8lbFL~2djp;trXIh54(pcVoZ?u?D%VNt5fP7*+%Kj53WZacKY zFbT7B6tZ8~4A{ZD6}LhvvP55%9|yNZL!nAaiGHx`9^7I!+Uu~B^Zit|SR{e0mSwcE zfQLK7SK3%@HAM1Yg8R>euvjr~nLi-m9w+@#@}g9pxHt2UE+vS--ueJD?#P9yHS5F; zayeoVXUAnl<|HJp`6RE16z!1!cwuw;I)YgJ(|&dFt;Nk4pupsmDDuzi=7a+d1gD)ZWjM0BFF#7} zusp`DANCvxfPfXMl5|t+U07L^;8-} zymX9_&J!H}@~fR1&?<{JV(Y~JzttA23V3DntyHvvuT((9gIxr;co&Zt=wxiZWs!wd z`X2<;u1DT+7+(qZntQpM1hTrPqD*e-s#>o941l>N=v)yRpMR#q;vJ+9z&$S?FyH|j zoCM*iZW?zgG&e@Rvx%{1-u1S`s%SCo)iUzg%!e3d6jL6}N7O8X60eRwtJnne63U*$ z{r|NY&Zp7e&PN$w?x)E`F~3;j8drCgtFkI!p!2*MVlek6`s$yv8i~g zS#2%>ccyKo@V*-ItSz@Wc4$23=2_sSe>4>{-07$oDJX za1Kspb!U<)uXk^&#^NT_0tEy<*?8wRcgpNt>|xRXr;7LlYCR-t)nQqNtfU?YvbHAn z##?sG`c8bo;b323HkSj{*Rnm)PK;b2%jd(t!;m=OWNxa1>4T`s|2BCmwyDIiV}C@LT!6S$sdyuW`BJqIA8^~daW6e`rnU$OdpG1g z&#(r6X;*Zk*bLjtjKZ*$Du;iD`f$1FGsNSg289wmkLB86{a-rs?`Qf|`dH{RhQ zL9)ZP#gM3{wR8TZXB&7s8IK}p;r48OAx;_dLq-3jvf6H10-YQtuwN}^$|6FPRiX0w z7a_5U#o*rw05TZ}Kci`1Ry&FpBf0_>^qM+DNOqdOBlI*j5i$>Snwrh7D!3R zN%oGB;<}WRDweNZb{DDk1%rWP zkhJre_vSQ?k|-HFTbh9^%H`K#t&=3!lOcayRi-@1VlQQ0T90;m5?&!B`Av@?w|PLJ zJvJ>?J@``{UrGaJ6Wo}$DS?t6JH`D-4+(sdNYIp+2p1+Nh(&`!@akXYrAalpc6_08+Q&lz zan0-F6{ERtMaI7|>zi!!>@jNoA*IjsQoIGADWak>usl0TLH&Zxx61LxEZO6jcI1n> z-H_5o8e$t<=@fBC(p%+NDqNu)6UQODf@Y;5^#eZ*`xOZy5W~d1@~Q)dwDd2 z2*vF-yC4IV1+VkE;rdKAo!4Xp;T>Pz;uEGnfRk6>QvTbaNZ~Ebqmee3^G-UBNuVJQiGoG+pia{Yq?#cTBx9TKhjGPL1}6>w}liJP=&@zMuQcX zW@coA&lp#oMOD zZm|UBei!f|3`M-e2BmZrd|tf5Cqp^w&vAcAp&GkpPt=G-4<1r@(}+||r9n*q+itS~ zs5bnRjTs%yaB7}RyZ@41#=yiMaDo4WMd{!@IS!}_)>rBSJRn^~-4+Zii}CY0b6D(5paR=e>{{jJBT1bSkRWy_Ev2mJwUjX^J;VCoyUtYQ;4o`3$g zWSm35dFr?Hlf2`oV_B1 z&4xRc%sZzaxx1hm(_=jhS!QPyE}#LQ!2WB|!XjLGM6zvup7TlN<{1k1w%^csE2+k< zB$UuLm$Z(Mjx5wSJWApoyGHzUcT;)pKimh<;G`f_qxd$$ zx}RVQo;d_j2Ro|9sAFXQQt~h9^O6Pi2&`(^JtfM`CM+O6TW$;k+RjZQi*ekO7L$fE zqNW8qmg3p);%dG`{7mGVh9?Gu_8)pTEbAI6?WvVMwN8J=bNuXW$fGtHjW7ZJ23n;g zS;G$)Bk8nA)7yMc{W}34vnRcP+qM1>%(!e*Tm=t?#4_=-3WBlaEK-YF#eK39lA?89 zpNSF=M`LO_8BZJMzqRxnlQ18aWQi!*iqJaCp6?g8w?9gSo*|2AcbGKXVnB3{7G&x2 zjrq+_)|~QSC?D=G`hh}7j0Np7UJx47vSMHwcn2*kGt%5lGYchRn`x@ zK5t@#tj2qPcrRDGkH_b9{YYtu8|_%docfxGRXoRAs$;S1k#B37nYLNPxGP z&2-dybBeA~xr+XxgH(CP~?H3o25-S$qXMQ;Q`gXAMy}2bULNmTd zPn?^#Z^At3PO4v)2n9zT?meB{frPPyPH0_j2*G5%gNK)o#V~o;ex&y6BQMP^ec`fa zVLaCF%{pun&7uUxjcmCh6LM`Ig%4SZf|-)CM5JMfKK9j-c5e_uwP=DT9#I zGGF;Un9OkQj)kKOtj6*b4^C$nyc*6Fq0G8`t+9z^D}?XM93a&d8nxz^6X{;9cD*@; zfv%DSXgjKYU(+4l3qcc%HuD}!hedz%{{aGvTLfO@D3G$>i_U$B>MC(QHpuDgY=tjN z52CmFyl8HwLC1>6JrvDVjFvrPEoEyl=A?U=YEATU0*vL#szd8QU51x+9gt{T?-JuT zmm~%AZCwUD#MW+z4Va`{O9I`&kwrkRkA5_)lgvsTzF~N~1{YuQ0&Ws=)0Fuea5mQ9 zrB_gk8K}u^16q6wDEi&Bo$qjMl@3jLQ%5!dp}gCg-3Y-D?nZk>e^5+LgbxBxGr;|a zoe)FnWhC^B=i9jrj+~$6oQ2c{Z5Oui4V7vRkL~HbPE<7ZjYq-H;d5}(y-l*NEffyxs zHD-OZ!KR{5ElzX7rm=QZ?6z3vxzH(zkBH*6GPQ4+s)O9l&mTEdmSz#_>umt_9tSIz z3mwKfW_`BjFMJl7p%>m>>1Vf*>W`FA5NMC*6;y>(h;5qPm{r0$5;^niUCV^2g8Mm* z;uJILj>0J=h@tkbxH2YA$zGSLM0fB-rL$uSqGkl(LA>W`)Fys*O8M3FksTHwo#6BT zOI-Cp-D*#L%a22-mbFNs6j}=1ugBb9vTvuqhDB#wmJTXrIX!f4y$$t@J_Ai^osjoa+rby+uQ=Vzr!S3Mm>}xMEd_IC zMxw{B2lip0a8N7P@&rcD%2#i?5#@q_>|{t=Br6~zG+`Qy*YT$+00ZqZcl&3(J7l?^ z!GQstWbM>Zv@|pd*ASeEx+2n5$VD>#!lcpffEcRqRQDAj6Souc`;t$TP?Q0wZt+W~lc7OWV zq}BiSf8PPgUNh@+MGyrcI^LLIl>GgELX8rxl#t;J|i4Q1wxBQbGFUQ zj5`=Ds7p*vwDP_9ZNC7w`RY{yfrj*0xnIxr_&?3g%LZ?*8o!DZdjF-)fi^`<75P|$ zj;J$u{lEG8ij{Mq%+|vON@f^O4MP#bZsYg$4&QI6skn~s9rO4CyYw3_lUc)E&8;F} z8ZYS%yFZ_Z{LBq<_bE$$U=Cs&WARPEfQQT0k;sW!qyetaYn+l4>7?`za`}D&` zzdR2xceDn+UYdd4r?7+9(vu$@$z7%L`b1YK{RUZr;RCsG>n1yd#}DxGM< zaofP3qLf*QljR#EXayH)pI~V>Fc=7OA4KiqQZx0Qdf6~Di^x|DJTtfnU}=dSn^hUSCVmss6ctTfF$vO`UsMbjpv z8DUMpKlxG;!!mSEJ${{)=@yH9c^{|#pG-0Ti(~_L(Jz+Hc5@9H>j>#b3q;Y|SpLyL z%XzD^5ntiwdqed3{WaHJ=~#5LpJ284=}rTe1##^2>L9(3IyB)LeM;t%=JF)@EbK`T zyYkx`M9${q{vV;f?g=`<;J=#Lkpdkp=>!rcl8WSWibn?{?z^OmKE>aiwqrtR>2sr1 zB4(-ElX@@h%5rDwV4%~2qlZy0ovgUqC`iMVe83+yvl2;@BNSwPp>?dcb@KgZJ{Cr- zQSqfFbi-Fs@F_U&H?{8UFEKvx+V3`Q(O$>Y)Z7Ri+N`pVBT_`kv%WFE7qb=R+^d7E zgE!2H4DfYfQyiSo8M8tcSRSqLAyj!JZd`P1Z=CsnQrqjRzO_bQ)GkCx0W3&E`6cgi z{BJfVpg0oA@7q(Pdm1;Gjm#f~|HrkF@oKmt7!|McNtI_xN8X{Gz-bSiU^+S^Y#LD~ z#($mQAu@azawDs%qe*kp{TD7INr`ov9!?RZdTO|Op4J5EN6DQETsH5x_}oB$b0AX{ z4Q(dyhp%>EWr5B%kp;$q@-3p~G<|meel2w9xw%js6X^WK;{KY)*lOM1!7Aw* z_*MEC_RCqSyWjf(Z|+(R{Cb|i-kgV&z6*mLT#M^c0am8e5sE*qfGU*$&l=eVpF(z? zD;%M1_;eZA6aTq3wEe!C2D`%#Y4UzUB*w9Y%ZiwS6&Fx`}Uupuw5WYh8V zPNBV=DVGx9)Y${YAg!B;`dee9jJ&@_5kZS`?>sj^iaexp(F9r<6Hm%=#dZminNj)H zt6c(QTAGZ7h1{wP2*vf|tBAY%YOE|2l=j3UH zp4mEzdRB|?kSK3um4DV|o6<;I)-)uKTUg5ASw~ksUC28 zJt7%gqgm*RlHNWuYa^SIR4hqzCMoO{T}EEVA5D2la(+<)f&)CTG3}7D_ogga2QBjF zrY4w<*xnz-p~Emx9JJ0;fsv+g6NsPi*YGzlC}wqZiq&=7kO7X@nWm(+-pv^bpf-;J z7QyZxe)fKZpNz>)I%(BV>N-&7Nmg@QS>4D>_JLU=R~q%dmY9?hmquqqv_ui}IAgbf z6B^U?j}v07O$79Q~sJEq9q=fehIQdLI zET(t()18SHE5gqQ@38s5VNqwu?@CwrP%#<4s-~j+iq&L{Q|8rMCzq45C#o@rzpgif zutyCz?B}bi_sJgb>Ir`vC4dfPN`3lw`Z2HVq!pMa*R;Z9uXk1rMxG4qzQ}9BL9Gj{ zFKSAHw2t&Ps8USVLHKiCEJqCTSC1O@TY;i>+CXee zPoa(FYz#%C-bWURwToyomgeYhvu ztq`RI#_~1aQ2@0~hJFJy9a?C_%9u$kdNBu|e2fh?q>IP~@mXII_LB2q`y(TS;{KqZ zyGRMovRL;kAY`VoJ9F96&|3FvuSJ@rWJz<#>Ri~uLG#_`-zgI95;cIT($=sJ7$cox zMA`9gOky!B?MgWj;}bi;=(aqj)}7N*y=e=zo|%6H69`35zrTrixA}0xV?BAgQSRC6 zRx|{vHR?e|B|x``x;jqwJVPi4{lH9nd;ugU*gtHaH&la?891-YzIjF@#W}`dCXzt6 zdA=Sz05F;a((}3pdH^C*pB#sWV-u~8N0#Var>4h^YV{(C4R#+ZunUC!z{lRK{x($Q zK=cR@!J9%O`QNRS-s10g&VN0JE~jHQRl^ggDu()!*OD##cBEF1=>+)`Q1+{edPnec z=+9EUMW+0~n1FkuXcp7rTE~d+gYA&W(5hQ4n^9DohuHFA_yN>B85fBVawJ$EQ)I1hiM^h&A3`}z^7oN6IoUhw!&iw?n_Bm z+pG8MPcEKVE)2y@eiXld)GU!0oh05;v$|-=gyr91yTy!6uvlt8s*zyw8F=&OXd%7X zZ{E!`e4)Jb>Sy}n#gXc;--~`G*JMq;`aRFItiJ{f9qwk5Ox;J6lTk7iDdW4V*c{0l?h2j=+GW(*_Wp>Ext1#i8{q7Rwee zY3&G!>u0;YMq5}?-|L&#m#;BgGq}=5pG6o(W606`odz+UPnay;_=;v^16D@s%T-8u zHLUX~gQXm_%`spw#nR_OK~tkVL*=gP&0(*Y^wb(b`}MK?TR^wx_DO+`imF_ zZ*95cM>rX3fl-gBbyR<)koAfYWJWB(K*gK zN56vrW>jhzLjElyqbcPd;B5aWZ|pH1@swxeBnxl`Z>W-XoW_)Bt{9vGWM4NFnp&@* zIjgb@gjY*M-t*;ht*a&7YaGVhxV5k){S#oI1D~b2N`2m3D8)amg-}|JUEu+*$mybs z0^qU;L`m2u!0ECE;iVXrx6HX}uI9wmMU}d6A`aqzx3i6tj7J}Uvs1?-zHR3I0P~&fV@=QMd*Mqk$8S1cuXU!SKR?2jN!>4aGt%X` zGm!A5ZihDfKOKxPr9z_fH|Hy@{jI$dA?(c@HbmXzFZ{zY0nWElZ7w7958Dc;ivRTB zZJcn>cb7b)bg@$h$@HX6p=&}5Izc0n{RT9#mfjw`yHx6wQH8Aag}3?L9e(xulWtDR z62#wJ6(j-xAr%^XzjNrx6RJgbaL5Bc6e)r4#Ey#_SO#~HMna65k6%5h^^#oT?66bW znh_PUx)YDqYQ^{Cy@s5(u`RBd$b#y>u4De=e?U(ybS~ohsH@5xbW*}~l7Ay>Ocs-x z&pnJ8u`2r(LY4V~5q(uIU%3ix35v=_fNQ1wKRyk0)w!2JceLrJ!r4~meEzJ|7y0RlX|fnxwmOHfkDZ4W&@a_^C=N^iwCB-AFwVS2^{sw^~w{QBpeZr{DJ#tnT z5qU)&SJKmGx4As-#9^bUC)$y0trc~LPYzc*-jF?Qnr|rEj|0>B6@X9r+GVCK!nT#J z#^*r`Dp&Lee{M8Rh)EEq^nI=S$N6`NkopM7A);H5F~Vz95T9ZA{@h6oKS3(b499LC zVd+UU3*$-WFIo6Z+j;-WV^0}wMyg*@k7j6YOb6kA@o=Ql)?z#o{eNe!_tH}k+whvw z=>8jXNn0Z_grtHMHv`pbPNaTsMSS~c>-oLiU%gdc*R0{?;SaA;o~=NMmL6huGJN^M zc%g_x*wJKs{#lFfd;c%)sEg>f*5P-CO~=wmk(;q?hu2~HSovc_b2U6rM^5_ygy*{( za$!i}033h1)U3r+hs=VfNO*qkCdT*n&eb0~=%kjCQxp)>X|afn7WflRNE37sU4>tE=d{Q+?RU39$kmw)tDIMqHH?-oszU<4f299}GQUCd!8_x+KJXP@m&A2^llc@h2oIQnX{rw2XxuGAlrT)Rq?nG?TiEziCMG-5V-# zAFs4`=YiPKqLamP2H=dDfIHkotC@mxKP<$5C0aZ9sSFKS6qQ%zw8nQx!IxVdPGIX) zE9A&$|1FAs0uszU6JF1hV)lBVN_OM#(s1Mg=QHI!ho1ZaO{cynnWF7 z8|GXB?i*nKLTjF5{C{f_YNS!?(MH;sT=OfOWGUL{sJaqezP?&seh!tGl6}wKOXLsu zxY6MTU1wNm0xXY3g(+xks#Km}2y-J7+GCWoVMD=W`J2IRGW~uBtwVl$5mjB&4PNo3 zm;Ru#3-9>S3x7UZqi{dY??`whG?DT8`B}x^Nx0oAHja+4t4*_X|GEpGg}CN!GuW+- z626@N2KB!e^>r`kmbQe_r6vK$I?Vr!u)Ko1-A*A3m$6Yj#9RKw9m58|(s*Y4^^U70 zs@p20!Oas?dgTpzed!hd`bvJeRswI4+NSUSt_84bv@-t)HD3%N4K=KBJeH;s|M1!3 z;m0ocbjs7}t5^lhI`Lr8+)>pJU=Jg6_@-y(7s3py;2(LY*ec%iJ} z?K$umId3NmKxMwqL*z3(kgaA_rIk}Zr1?Sl4EJL5J3k%JJcq!zG14&m8DzWwJqGkoRj*O2?QfvQa3mjG4|zMwj|^?MbYuM z#|J+2kEfBfK^OeNU701;`^l~*VjsbFfpk}!jqeZT`^O4 z+{gh`ewOm})WOJs5Ey7+bc?~19mra>UUt9!88EpAp%s)F69%bBioN2<3O(-XDd&8e z#f#~Mrc;sNJ69F6CUthf9?sZg?h>G895>9~LO*lW=g!<}vxahHl3@A!%Op2Kd+g7G ztiwv7{J6E!vC6L;p#MGsOwis>L%Ufr`MT!#ptI{4&&m>iHb z&YsCg_iGCvu$eeG{+n+DdTJ8ONGo`<@FjKxJiMvpUAvu}2?0K!l<_ntu;~Q<48s=G z^ai8ZuEnq;v2uOJ)f!{)=5-YbJXYhh<%|HN4 z)}j=?mAH*w%?9ePAgKMO+6ysJ<4s;$hzqRaKr_fRVei{D0W1Efs&ezhpd@0^8 zs)8nGsMhOs#QiBxHzbRu&TzfgnScY#;-SFLo@Fr@B;I02?VcQUoh$AH0n6e7h91h{ zC}2e3&>0OXc9cnn_J&TJ!@~jF%d&f#^Y8I;&@`070DeI6MGvax+DdkW4L%lioquh$ z>DXw&1k?=tDuG znCnt!a&+!Q^Q$BjArz&4eHi$FjoD&9fC$jmnG9*RC|WvO#pehgnbrV~1I$NX|J_UF zc<3$`{YHtIM9hY5*vdKAX!C_Yn7$G*PpO{QSd0`SIk6JU$<;#~k^Q6@k<}O1rg!yv zm37(ne19^N6RaO|@$=s!>cye~bVEhtcd*rHGqTfo4b&3LCvai%)I*pdj1ryd>JUKf zU}W<|xlkg1&&a~0?Ad)h9pT%@w^SCwxAQA#EvyU&Zi`7p#z!uk(ar$^fdvoWxV_;S zoek(;Kad7DjEp%MXbjSxl1-|!4(pZS^G0w#02JwlFcN{cSL&KZRcBI+!WzI2<{`{5 zrk8dI5T6C^?=8<-MBB2=O+3W$i#oAF@#hgRI^B=2XWM6WXTnY%JA=AevH%j_nL$ zNxcOvR`=}c1JgraQ9Z%TA=~7JA@A-V>|re3a8EzjE)E5SuSNz~VQ1sCxksc?7ze-! zRFv-xB*&eI$MFz2&Y^5w3&Z6_T{IpujQJsu zgAQ5VGI&NE^-Ai{3#tB!WD96#*m%@)VR;LzN`Bn)Fi0v*D^(9&&VG2LV$|`+WH~f! z#Lv{3nNygc4X`BjzP}b+gH1JPzK$M-^gOkf)2NGa!(eMgJ)J@IOMBKlDq_Af;gsBM zgr`SNbJiN;j+y?aVj@XH@7UvKP(loZ8>8kx2;X5#!SY#dA`C{R}^$?!3fsiZ0K&pP*|B@1()>PyRsNjR^kHOIQtQWg^6m zoy75!t5*c=@&&t~|MURF_YDzk9+CgTllRBBz<=ACl}o@wf^kLJzjYc!m%3F*$@3heCU zXYeiPFn}?-wX$p>_czRq$~DkR$u-Ea2HcWl!hE|A2>6Qisve{|Mio)S;IVG4`h;F= zQv^9y2{>H4E+D(=3yMY_pW4OOW!I!bmDfM#GSA}l54?tnUPneFjPT3h#Vr+FU7QP8 zSc_9?0wRR_zm2*ZDwc|f9%`S^_-}{TK=+sgK=ayf%e0<|0`67U)0{J2t8>oMg5?AQ zliad^hagn$_GL}a%chj|!EUKT_)O_*XVgA6`|Aj8wS2yO1eXPZ=F7g$!e^o1qW#1$ zn40T+inlJuE%H7Ign6HK1#fT7+?Uo2cISCA8VkX)YxT<3ts=dguE)Ruy6l1HDBbB% zB}7M$C=x;ski>pNAS+{PxLx00!-s(kc};-%UOilqZ3yFvd3ex?@+b+|Ku9Odvhccc zeV&PO#avmA0Pa}oA$n7F21~2-*|u^^lJjxx9%}vFuBhLNF!)JxqZ6`<*OXn7%NX;3 zK=ujCZsd=(0;K{?ufb1($j^6lY&6Z*wdXd3C|9$U zGY2)vE8di}#1QDLX{XuoJnP&z-XyQ)FILi4_M-8OVCGTCFrN4;nepU0UP;m+)!v&b ziuV=SSgZB>^>~qDI_tD zi#Ns&hvVOHG%%K=tG`6m?-)=U;nESMQ7XlXyCpu`y)eesUpV|!niQ8J*lTm;(u{xqkb@Sz5kyx#V)|N@`T92{~r(F8inci?1|s6wwQn7K6onb-gjVswCM#} z6u;8&#in&9A`Pfm17h)Q(!{SrzGP!KoO`6wxYhs9+K`^Gzj#Q(2^EU=w13DE$s70e z4d{*}9Ae;V6QOQLpbyr?H?@x>Jo6tto#T`QL zfDyu<42&+yV;=XnJUla`zEQm3j=|%RqSzAoNeye@r_vF?&|GNe4~`RjxjRbkZ!Z4| zSD3Y!Mwqwk6-pCpgA>!$BrCqj(fJt0;JiLz4rYMS+}OosHNGygG9vxOK@$ zy0-e~%nbw89Kd{`1%0y){AG1mTa!DJKhy%&3yROGP8$PzHzSs}AeWdd&WR^L?R9dy zsH5-F-8*?q;{-gn=y)Qw}%zPgKHhW8cjhYim;sn0VpXvs9;i{z0;VO{ep`*OZ-$ zr7(FCHBuOGN0PhVg=VHrX0?1iRQR+R$9<6iO;JK$EpG_@Dz=$`aNJY-h_2TY2VP^~ z3qNdJS?LS4lgRl8iU$lTRP$`kAf}I47(Yi3Y=Nirl`;m;YlhxM-Yxmg!8$Q|e-z_9 zysmP903x&EL(} zZBG$H^98w6rjM=hN(jCxz(HQ3OjuRY@`s_==K*nmUSC0Z3;F`}?%Jw^1$JA0=k8%G zqQ7tXbk)8p0p5)9)ta^f6Ng-;4`)JUcq8ApDW$%RyM0f!%Bz#`)_!uy#{XW&BngN; z%F$g%V8bfq?4IKh6)j1LZ9YN>ag&la2=7W!G6-ex=J}@GmQ6AfqX8IK4PlDh1EpUO zP?8i1UB7j$aAwKE6W@#^e~=A4zI}|99+d@UUuv2+U2fTcTG?|}UU0NINrH_4B`*Eg zJ4a}PXW`r*r*@nmQd;H-kV)#ZF+_^9DZt0%=*Z!(sAf#?uFJ?qA<1h3x$j&GlmegU zD3y96pW`NsQ*)Q|K0&iRokdaUYVT3fD4lcRDdKtllQ67@_>QHNQihi#LqW|t!tz1d zHTVoZN_GbC_2u}eCfOXSP$U3hqB!WLJ4j|H#wP-1^K9LT+Ln#{&vu@nFG zGC^WrP{rCplsUGJb*jGnmkpr@sSXd{e5KK6tA0~wT&EakLk8mDAWALOAIIqv;_YR{ zwXd~Ttu$|`H?@5evqL<_LUl$9lpynC;a->8&abbt@ z#mqE1AAjXDRkN`b8s)YlqFYSQFgYkqUBlMK{jwP(;rRy{)lexsR;Om)%ivD@pHFE38bJHYJHy;MDdl=a zVvl|zl}n7-3-~iDQ$(?Wv@k%uJ{HIOUTMPDi1QLqPO5-v1JW+47-=?RjtY6L)*4$o8_@``fBCs^7 zZA*H%Hq%wzFI;gJ)o-fpf*8yywclwI$wOrkw|2y9Vytf-`HUxi7d*+@J~iT|?yA;9 z^MeNGY4wUKqwbS;Um|t0GuZw(ZLud{O|20tA4Ty%rT$;t@)Rs2L_Gn0VptC^C#j@t zZOz6ypltA;TTMmg&KlmVTLWxa39-6Kl4T!?o3RBCYr_(QPz2fiTE@n+3$!P|$njNx z+u$&3W#9E*!th<4{8|K|_cyG0$oF#rEVl>lEYkzFsJD;Bu5*CLz%hDM>JzrkhzRhk zI6o2k1cSXY=RppxyYnD_H*e{3pfjj-xEH2y`K-!xafMXsg2Gqts8OTY4x4tL;#&gz zi_vO{4Sh_mvJ%IwNGD*SaPkUzGydYmT4-luD5&&l zMI)d~u)9C!qp}87X?n{!M-=+NHX7lTLUz@9ItL;OC7jSEECjcM$B=TWP|4^3{io`6 z`3?V!+zyi)#`;X?pb^vBmVGJWlWtxD(0rmzen_VE!0vM|~gp`Z&KRY)VR zt5CzAF&|TjOn5WxMrTv!FZ{B?>QS)m!SfPYfAfL&IgkE)iYXg)<%A-@O3`Zni@m=N zis}#lxM3-YrE4XZluqedK#=av1r$Y*1_1$=l#)h75Gg?rlvD{}1*Annx?$<=T=v`t zzrWudGtbQP*E93{aSx-zu=zQA_H(XyzhBp$`e4xs3AizW?;ZAp4W?7ApNS1@D-os7 zNJPbaroO$T&T;25g3^+*rLU4T#bJ*}#UWK1Tnu4@1C~&gQr?j%U)NpGNrL1}sxqhU zA)FEy!l9}Ei^p5tD@qgem;vlxiJsr(HwJ4JeB-j)W?7vAIZsNju2w0)lnG2{_DmXH|YH&LF_%tRpnJhkm;8u^NJ856CnR)l{mPcD9eAcTam&j(TeDd0kqX}A@n;e{n zW5oUTD-DfbQa;(O3fX3X+P5b{j=WI3j269X&Q?*>+C7vXj*FZLl1=Jv0rQqx?ok2h zAq*IcTtJZ|RHw_sGmEz7*)9 zQ8j(o#dsn9FH(4mppZc5yH>EaagcNyQ4+ll<4TUb+s&1p&K^URkwK@dzuouf?0>&_OxF?E1j5-LtedzabkH zKau<2kGJrm%97CC-zKd=$@3bj>1>+CwdFUwN#30H0BeOD=Dmd4>W6huEAtjrt(ZyX z<83jrnw3E#Dx%s4De$HOiMz=f;m@^ksK(Gb%7mE&IOCc>_I_+-%ZomFA!~)&BR%$c zmvJyA!WMsG;Ypms8&T*ew1(QZ5HAYSWqYA$&+TV(?*;oSN@w4k5awk*7IYNXGoT7sHdahAPaJ^;r!l}V%<=YKsmxR@R z(MwYN?epkm$3u#2WHSC!tn*=oc@}d0G`L8kRcZmuI*lHIm0DLUiN^;|a}4#+Dn=(O zS)b#*VkEyr06qf#)B$>Wdic!1ko(TY?<#lj>O^IAGY8{*U+2uH#&jxDy8S(3&=S2% z7?Oq>q6W`7!~mq40YmWDTvZ$5jkt@pwc@UUQ^%jf7zBRQrKZQ_Nh40;Th~rKRQX)wLDvl5R#+5lI*XujJ)hW@eX zB@MDeBXya4lK=KsbYDcD>cmSa#vm*w3U>kDdH*0Z^4COirQy@VIaMw*)7WJ$?>hjK zSr1&qlqzciw*Gn|_Z+tC2|%xQS>XL(VbZSP%!sutTNHZ++QNiS^)+r*{W_P(D^HM? zV;D*Ge%Srzoqd44joSh)qbyA@Nkv7BVT2I}jVL%gAf@yTk^{fgo(h794RgRWb=d@f z^%%Myb6m=%wDBXbu7`oyM1U_RlJ3gZSGix&d>)+u=Wf#@&`j5Hx(+L~I&<|ZZ`7|S z*bCXlY!nUiwQAFVS)k9q5FF*N(eYlv=dC<;i)REc;T(PltN`al7M%TaQrOpW??`!H zXgJYwcFSfXpIh+_j${7*7pqq7N8cnSrIfhGg%u+eajrB>zXv|&$4*%$K#Bn!ZLZE^?nkLfh6Ub4;}8nKPs8&01C(5+EtLlL}&B?s#gclK^gU_Q5y zF^zvcNrcFxa(t0+WcAHAk0y5PG9G5eD*V*K<9_HwK!M(Mo9oT|67^Kgv{{gfEn=-8 zUrrCyOzMiN@lw|;B@@fJgE1;k|Hs)?`Udt-tzM>Ff7;{C1#+bRB>`g?4_~HOAKu_s z*U`0v6qdA*1^P)?nKgo->qYc8wRUS!pz-))5FG^i&|v{raX?Ky@h*%SKA6q3W#yP<3%n7RGz;9 z5_(q@?~XIHg*R#q8(1Hq3IO=^eE((o;nR5az>4lJlCxl?6mox!GO zS5$|l2sFg3`jzp4Xa`C7@MAkpbK(Hw4Cgx%h%B_`CN(2YY+(e zl-0NH3yZ@p>ECEjGIdWz>T@Zk*WBq&g0kjEP8w|@&e*$-|MN~M57n+8=IStO0>%ERnBWyB^{fI^3n@Zplxrg*M6ZY`(Vat=~*=1dBJ~+7LpO|B^>H& zJr-j&^odHa&Uov72pwr0L2uiCFZhf9@dy#UE#FC1Gs(^N@MXt$5Vo9ANvGGfPw*jM zXfG`h1QAXx2cmxnlJz$ktF)~p!wD?nLdq+`RjM2UZ>{2Le)LPQi>P)|L@WM|DThjnLxgbd_caeClT_B*YbG3vo(r`5!AMZhvO z!~55D_WuyM^l86O719B#fy>ZbL|GDU`}kUeEm1L`hW#S<+xA!;Ys4y@kHU~g+fR3>_%Jk7o1bD-OLV%lPiE z^T^-d)%@$RACYiCy18RW4eDM}aPR8=kVvfAT&mKW*Lc!_c`2{QNkGTE+tNAb0=Ju? zuXb>U33rz09w6~|WkP%E^jy0GU3C~Jn%LJqW4|Hwm(WL0|+)=Y_}V+)=J>`z&f|m%=k+N#yn1 zk(RB^8CFP^+I;qqN+8+&(-p|hssdwB;WC$}R&9X-g3rz-zR@~TmVlP7k~>wNI2!5! z4ch#s7S+_QmV)F8rKEJJZuPfrL(^4$a>azZCzIxjQuJv$@FxbOQ;K(>sxA$x39Mm#+pnk~dE;}r($m$>u0LRTOngLQk1r5O z*tGfUnCI(0j~sa>{ySobnnO?h4cd@|n`N~IS>VTnhf=*zRiZCtZ+zw7h+N3Ofets^ zm=2j!oE6HRlKkzOuflyX=2l3slMI_NH6`UMP+S>RN8(lMcbsbuvn>s97?{>0)mKN9Q0av4g$e_30a5vCEp%+!O5IS!A`q9=2r` zsY-s~c+Wth_FXbP@{{4#dGxR9g??1eGxK&9ky*czpjj{ug3*bAcz$Ka5>|q@$!c<9 z3%vr!n7zG85rr%IniNyrJabU=3d& z?}Y@t$`+f;wR1Z_fMl2N;!t7Fd_y zYZ2ymoQ-7y2~VIjY81#YSc>#H^kBY9w>J)-b_xE#0<;gF=hp><4)7Z01oan3LF`n8 z<1E$sLfs=kNb_`d7}|B?;{JN;G3s|4hZA-;IY#;CzaBbfo z!yp$ty4%LjOu8agy;qQd3b$wG9sV_5=Nuq0t#}BZTrgDI7q49vsW1jp)C&i+$OFg2 zq_z7Ks!{{zoo;Wo)-O&sy6iH`pV=l~PSFCErkPI%ty)+|T6^siG=kSQT0$OQUKfs`(`B3t+elcXDu!b@O50 z_e;Qj6DUN=ur+!q^+I%3K(ugXq__ls({qdQuB#-ebhOtsIEk|cNtHCso`&?4D@Gd8 zd9%begyT5$_s%|}L5 zc{(ofQ3O7F$3VNYouMC9S53eS98Bqx;Gwu(6xXWEwP3!WG z`u}9tm8`=eoiBJ83)A)gKizbUC`bNp0De0-FTEd*F`_!$i>OXl6FOkz0r69Y!g<8{ zh4R9`jo`1mxoww(Dn%)sR2H}e+Ec7}KY~P>5?o5pYi80dq=z7fgAgaT4c`~qXZ(Q1 zzBLHKK`v~t?cn|uf1G%9qV#R;gd z^lY$*oSKIN3i?qb&*(xYF=>R1P1H;Zk;4sJ$YCn9$3ZlCWw$ETxiqO!m-#Rdsd5id zT?|~S0+y5eum$+PG)xJHS;1ynvb{>&1BbVw;4ul5?Y8yQ#j4=a;esF5KTyqk_+R3T zjFf7j8c+%_j?rLHV}AM+(`|b%R{1F=W#M-76lLgjO11`Nek-Q+O|oNd>P1`>r0F;j za^Er2VU`pNY5=bGUrs>G`J^ounTw7iUxTQcw5u${6UX?8w?1!zluAZJVQ%NY1oisg z6f5ut;3~5eu??9@m=2-S?Gga%H00MpqNNg|W|rH)*V{nH5o)6~)iXVMI@jes{(xGV zgm@3u$F$h&nTli$@>+`|mi#z~+NRr4F84!<*rm>cl6KC;@|ds(*hg)r@CbhvaLZuT zcdwWRf)`X1)lN~JKcm`Pqhge$CgwXZiJ-z`CI257hH6k$`NCwCgs3PIN%Hx(kj+55 zqUWE^=?%K=xbyP7Wi?+VEzTPHEz}C`gIQUijPeSRPCX6|uq6 z_IcYJSc$L}IC-;{4Suu0O2e{GA24}_j)nyRV{(TTB?cQ!J79w!JzL<=gd%r zUO52wCr2l9j|@Ey$*Tk9!soS~3%h22I#~QhZ`s%Vtmwr%q!hDi#+OTp(j|?AwpUR; zW@kI*G6KC&kip=fBwT-L)3H63^K+tm^E)BdxXc0$m2xh$;vEFGwP&qOQ+-*zd zHtr>~CPMD)b35y7A-4Ea>G05*!v7W2<8opGU4q0eP450kKy8Jly9?R^RU?~YugnzrTWhqw^xOJ{+KASRjO`9M z7i|t9Q#Qq1zA#k*n_upZ`9cc=1b*(EyPo>duugo+i&9a*HUYDs=j?4{HOUgRHHqb z0j#@?b-;E>ulBY(|IV`p7N|!M^aM=*CN%B#(S38Up9=|IcrFH1?TbuPU7u;cfx!EF zJG~f$Zz5&&&ZK9uk`;2G`tvJahd>y3e)NBJD+29rft&b7d)zL zYF-izQ+X?O`L7LhkWH18F^SP4e?4-r$Qb;^pfl6>cTYMbmPy(#)`q;)%JAh z=c!;#e+ske_ew!l-llDd*{8mZ?lZk)8)Fm48?!iYYY~6+?T9hZU-Eh%G970o@#}1W z_T1vK0P*5hl3Hx-k^16K11Q-{NzG=$iF!M`Ey<9K_We+sI$yfp_-g8BlLc?4f;yGl zJ%K;&L>Cj^+?b^O2T7z|cS!vE*VcE=rJ(_Gl4swe(9;jqq@{h8Ee6(?Zbs-wpSVp+ zY_W>Fje1M_jf$Uk{8D#cSbRE0{WvnwM=4cfy6S#Wb4rSc9ZpC#Nl4Jx=F}7ov~fft zPnsvsdL)Ybc_+a@Mln@(F*sD5{%gobp`iNwWW{bb%EghgoNSr^0U@tjk`)ap^A07Cx;df_msqcuuNeK~n!z^#7j+$5=9 zMc#nuFI`qGr6hdYQUdhs?fo!nm&xNLA`ct=iXF@9Od0~UPbZ_VhjR{C?yIatLDIlW z4x^vlDMB)#(HR4ZlFoA*eC;_O7maFXv>6qvTqk_RNGae!ZXQd-iO}(f!-mv1mV*Oq z|MkQ(0mthb4xoPA|8Aff{Qq`C?KHr(dw%ri)8u$K*%QOJSKzFRqoS`^7MTz?V^uAN zI%M18#BlI}76iI?zhX~|DFaJBV~d?G*Oa-v7)?XKwVb!0h7Ps6sQ;@!-AYEZ>b17B zvhIId$O{f!X79*eP`y*-qNgdsOnr4l|1*kXQrheuVO;D41Z}H(?EH7R{Lv96)2Ys9 z#}qoRuYa%^4oHS7qtDyi*8icSFyN`0JCdsjo}ICub6FO{=Hz>Gl6~ zio9Q0M%axcqL+X7Y;nbXmt~Lc!E4VeytJ9+F;rU-fwYRdXO7%ApXgo1ft-Nx4$ImB zD-vz=vVeJ`JS=wy`(pQjG~Lbh*FW<3A%u_^V;VyRhd0>i*@h#sc%2t7wrvK!pEnEX zni`RJyLuvB2FUOP;_@K^+B{^wYvpw-*@^v z0TThUl7)Gsst@keC3vn6)sK7OKr%IwsKvE+6Z4W~%p;aL4?Y5{Lvy`iMh53|F>$? z3+E3nTm|+-tob7a*gH@M8I`rV*cJfaHSQA)O~M8;?D54aw;>-@4ZH>wtO;tbi7QKa zgJQcg!C#HW50kR8;wCF`iaaU!eR=ZI+4)SPU}<8G7lcNc*dl&Y7Yz~%Z920gnuc&; z$2$I3;KQyWcy$3|MS)t*C@`_Zuk{VDdL3F9x$sF8^e1mo6o_8xeEl?#NW1e@?@bn# z?iu}qd`|k;*T?_Y^ZUpPMT7!BZU~<>KTBEUlBQdt+?MUTa{heBar#s~1^|_x6 z5eLE;&yf8QkB*83*L@_cSq+X(v#Hao>Qyyq4Gtbb{@Jzn>Tgzp&wlLUp_Fr)Q`wQv z6++Z`j;%55w3>YPvy)q}UB1`aGeWjgP&Vs%sw7r;gay!xiqm<`IgI(n$o*@T9I#uw zUxhF}^suZG{gD_2`C#MAtTpy$dz$Xi?xIx74&B#QvQvX+s0MI;hv~)~(bkv!-oO5@ zrm}_$3VU6`x*1Tx-AxMaj=uEv0VF!>u+6F1?EO}PC?kv1<82X-2D3VYr}9>xk+zYS ze=GcU`*+=0cjs8lssP0*!zCWXEWNz3M6(0v$vf|n+}WCI-st!t@o^EGhOvCGM_~jG zW^>IN6m}{y%vx3P3)zQHTO8f_fqP0;+{|H?1boFpsVgsc{fb4i*qHtTBzSi&5%3iR zIAg@y6#w(f6Z`5)AZY!1K1A|nV^6OU)u4qa9qQXf>|F2-d0|rYg=rCB{&!kw4h)sT zqLTB^=D6jB)v}bwH`@9e-4cUu59<~Zz6dC{k!V^4!wS0dF(rPd^6c20ze}?0CwI2Z z?G9mxqL!J1zfFrAj#tWU%gL}_#_-k5Q2e{^cjbnh4|B)ASa$me#6&9GcnB~RUrk*_ zvt(kkuhQ5bux~`2qkNm+^tNG83CPXvOAW<}*cH+c=hsmQ8YA4d4y3RXXV9x)(_6VQ zdnFP$?ETlmjYn9Irsr7wVxOf=$A%Ly8bYl#Xz@J7d_Skas4}m%?Fk!2Y7`N32fkoQ z1imlgaf1rUebByI-XOa>_b>Z;EmN;ieUsz@V!bO>Usp{^Nrk`Ycvf|`JMyQ4%;q;q zL#4nw-`?}i?>*B4o>VW{GoJoIDLzxKyC6K%Zc2o8O9ti$U-8@BdKmyh`s?T3*PE>O z((9F3KVLr>*{SWd_ZDeN+uoyGgN2FApbp>mL_rD>@8UTr8bETw+IZ9ju2A~f_you= zFB)GCTQebQ@B%SZo_IE13#|yye0&PdeNkDTlZ3baA(yExtYU*eUj+9^?aZg(G2Znb z1H}~e*ukVLlp;7KpirsrauCUo_)KQG_0f43nY-FEfP0Fy)7)0Ckwc>TXMwqf<($hK zl8s18aysivtgVkUeTKtA_%ty7<)=S7p~0c0>(7^rYe z!jkjBW(r=YI5CA;RRL+JA@lv#L3V*RVpC@UR13Dl`O73;@T z`;#S{1)54px!4+&H*V%{tL$uDCyJy73&FQ(2($*6elW2--WPSq{D9_nNoVyrcXaO% zxLf};WFMJLy0HaTfw(438SX7;@=fLo-CR%pRmH}I&k8;_+Y;77Y2cN*vk>=(QjVx! z((EGm+@K$sDj^$gcIvDb*r*v5oCu*mOFRADK?<(f3mX@(WOE>a#Tko2c^Ww45 zc4m6|cJ*+(f&xhp=T835uTK6>t?L7}Xvlp+8&~#|jv)wp0JeES3E{)~732cjXf?2W8oWS@ zCr5pPwyYblJ-@%un)%Y|Faw$>{DI&6Y2*uHPGKI~8$S%5{!E0}m5JDDe#<1YuMKy_ zaUlm>UaG!#iX2uE!-uXDFXvq1C*ohT7B6(~RFsWL)QQ+1y$f=~a2P0|=csH}5yugB zEG(sisg<`N#QF-WeA16_?AZj)O^PQIA$`lIP-cofLS~v|xC;hdpa@nQI#*IZmvlm) zYtj3ZOW3g>(_gx4dr*<*voo)9*fxlz!L$njN_!-*xql|w-J;ME*3_UUzW8zhhB$nQ zqw0Kd+THfD-o&QdgFNKLXp@{H)y@xIMKRx<+gd*UwA5}l+4dIX;Zc1wRdiLb( z>C=#A)Tf5B#)d~LL38q+b8&Nzw_ATU}Jv=sXm@)o7U!@Izw01*b zHO8Mpwm%Cweppk0|IbE&v$EwiB+Ms&icsCy0r^80j*sERF?^K2L_O!~_rBEZK8xLw zJHEK@fc;x2E;s_593xFMnuS_9=O%{$@Y{4&64N<5dSdeEN6vrKX;9z$!I`7~{YXjz zOB1a2)4u(7-TqzgQrNjuI{Hav<*Cme5Q~CJ!8=!+=oYv*Yvg3&xKfwo8R6cpAu}@i>Jbob+YjE&e2Qe z1%ZJ=!bSe%Y|oD|pEzk<1TLXomw+r}tmVcB7P$MPpA;)PZNt!vmN&q$)$c+EI&r7n zT}?PJD7LqM+U}EfNV2l1Gc^I3w(2U}s|$C;Ygp!Dzv^v#*h2Qb-}mvz`%fSdLPx8Han1e%@j;QT-BH$c*EI&2-*jVaz`erLflR0A!KK%p9N&F51n zcc%+QwiFvM(HHlAoF=_E78~}T?p8ZSl`Q{kwp%Ff)tc)`GGz-1!a3e18~%>1J8U}( zxyWyREx^3VwDU7%@-Zjoq!H~HkbTlGxCN{5;H7c{nx6Yc!huak6@59?tAlxycq4a# ze9oOG-Zxm&ypO{0@;oXEW>Y{{?hg%zKI_SaHUYoD8X7FeSl8Gau+lehzNMVB{{1g7 z5W;|zd~euk2^3Nqp6dY-Z#QC2;4NS9!Y1GXf1d3CFJUq?cjw zjpnDlkh!-+WwUEzUodc%8Z$|XR2Jyu5calRtW8(9_EVH+3kGFDZPb-#BRrIGaP5FX zJ;gpg>>q6gVukrx09^YH#jw<{$JaX8zi`R%sY8+Hgz3@Lv2~DeDZmKJar*JVw>k$7 z5Fj15`?r2UeqF$p3z%cpVwJskGryfjAMk8BG$p5>soB0uQ0my~hwzN?9HL4%c$uzq z#dJU@q<{6DR?Ss~96zq>-p!KZgcp&{ghj`OOrO$Q7A5;T`o3q97Mq>YW6iAq(E5g_9ALJUt>joyl68I0N${M z^<`H&?T*DTTxnh*;Y#I4gf7-#z9YpK@{?VHYwrA2HO&gwd zbam7ZyG5LvBa`L+k@8F3zS-H|w!@i_bEXP)U>O-iUaW)?94?%?h)R31#w46rx5v|e z$icv`djWrF**|&l5`N;*`po-|LgD+FL#)@izikMJw_@?Ss)>_Xgu}U27CdwBKVP2I ztEBSFx>T3GiAHyBHTgN76V4C zPC8s1B$K~cI?%o^C+4JU4NRrT-E&58(_&4^>^Y2m2_A1qQk+8@`zwf={PE;z zYxwFtd|(clbnZF+W+V}!$=MEKYnFZdKh>g$AI;%Kbo3D)y(fD*F-^6jaO&$ay#W>d zMsrp6^~T$kckvkwIn8w}-u)aDRJF=;SN{H*;k`n(G|G~`3kK+ zlp%jR@w7Q`H_7t{N{c8t5>q;H5>&zai{$Y6u-O|sV|4*(6 zdrl8(@~{!u!CB-$UMNywydywaON}knuq&173U(escx-`eDz!nuNF0e(dCy3agxjEm7w2; z8qz8t-zak>%7w|P*$N}>OiP{>ZbpV2L46XR(O@fqstU!MI_C57la`#1c9g1lFpErt za;;kzKr=w9aC)KLEX4P%KU2xGZS16<*Y03)PA@up_q|E#7*X!U0I$s9nGttjD1_fW zG&X1hyWIAL}mmjL_c(p{Z_6Gw8noyHe87p;#gbb+8;KNFda&xg*SPy87bPh9wB?w>U*YVgF#cP} z;efKI-d&;`PnE9sbtbL2(`1fb#iuZtr=pm)u&b2#W+lJ>WdV#zcG0ieL|nan z7ST1Clxb6Oi{h@Am^$kh?6IrpdYH8LSI27CKk6ZEu**Z`i)YjuQ%!b z3G`8hKgA`FfPAJz-v<+t>$%C$^UWZwYB8_r#+xnD@TNz~I+4#x@;LQKoZ6nuMOV*; zs2Onio%T9=rtW1ou4a5g(Ie;V-n(s|$SVa1Ju4EaPzl+V#`4~wrXx&43SH7ry~PIl zl@fz4mcpUxJyn`)6LiJdUu6~!?Ez<**DQruhMiM{K>qGKoao>arDg_ye~H~fLcP#N z5haFEk+%J!rEdg0^1`%Qj1E0tJHf$tDadIr72+xA5~w@u3P{wH#FE26z>0521eSH3 zYFy;zuP5ezW*K%+i})hH#q)M`I~9fUc}r}b#A7S`O!0T$z0^?mbm7E)N8|PVY~C3c zle^rZRk#!u&+9M>*qq!wTUJOwjjJXbFdZXHDkulV$Gi+&Fga|Kd)S&;POCT5HZoBu}ccHZCf?scBz8 zz)AMl!f4RyJ&BB~y_CE21xR6GUdtGfuu?o}x8j$^Y_~jWZQdk$Zl02dfkQ#aA5kOo zS@7Ji1cU-8FYYPabL0*F8c9KSzCtF_(v&1}P(&4A&IQb99ECHX%$h0Du47F%kU>wh z><*A?FAJTn_{}fc>J||dSh5KQ@Qd{V48R?aFQ&hGb{ilIqBQOpg!NV^I~uu37d`J3y(q?1?tuzsfRr#DpKAJH7PIx%vnlV4 z1sGwn?dy_9*tH_fPBc0LZI2ApXNsBXwwtBrUuxaahW5H#Pb&5~FXPtk(sP%R%DEp| zocF8eu>tnkB@CSemugPHf@v2BR;O9bJU7(hC_exOt4PFx#sb(S2pkuTTkO6MV_&j@ z@M`{~I2ne~!BzqiI!q9`HF2l?a~n)*uhF4jkKb+>fv;(#hcQqEnXf$DT~c`bvQ~I->RI+f0^M!X6Gny-nbva$6xX-pp)$Go&Jm0d{c$pa2D zHc$dz0ypaJcU!2Mh+_50y^j~g&!^5j&?uSc-_e@X`R528=GTD_kJMJKRBxD)eRGA;0KuvMMkfDGY=DQG+Ql-qGR({>>#a1y5L>I1SsgPcG| z%0x03RTiM$8RjhtY%-UakQq_7uGbYV2;}p{#MPU!Ndt}d&*rph(cv%p{l!4FMUIOW z0FIzFVTAsLnjU%6DbmRD#Cdno>Cq-S6c?s{5c$fF2mk}=y5~P)@I3w43tnT^znx{g z#j&ucq$?Q2$op^HIJFN7_yOhETL_22DUy`Fo2K&p((ZV*7ABxMJ$AA+tk^Da$Gk0W zB>SD9;?A^*e?(d$L&j)WY2!!1$XyI6viu7>&*-B*C zi--4(ayT&#eMc2EFLY2uDPKr29DnY?K4TfhyExrs+@Q4yaUOkQ`SRjkKHn9b0X725ea+V({rMLm*c!KgPE;7>FNYk7DIpX{FQFkc{K*VQ@_zGG&=EXyFM>l!HIGlKHGOm1h{{&h{$@!Ogj_>sC6jSfc!P{- ztN}JF?>B=#b6F9Vm?PC#rN+NEFvI;bgDhtO+p8b>RpWR(V4k)*Hl46~ecPii7#Q}% zoTo9pDffjxZ*9b3+5&;*#~r3pXGRQo0hdPKy&sX|yy&E=& z1uoFKm_x*hk9*Zs?&aF8vtO5cn<&9);Fr_cg#m)};N!OtBL8Q+Q(!ZBh-|N_LjRcM zR-ntdYx_{Sa69;k%;UyCUjisu>5S-=A|NF8Ao4xaPZnt*yb@KL3e00?=B1{?3Is71 zz{*eLv{X}Ol$lh4+CQM%gRD)HDQjY&xY+J+rqL-k6oxFnu+Ui+6iR^Fx2*@V%0}@wkZEs!dD#6I%0Qe^~YovaaZ+lzchweyn z2>deJzvYPVgnwe2{i84DEo{`TOI^)o3J?YttY`KQfZ%KJ2YKGuRh&?Aa(76+gr-7jRp$gx8G_I z6p~0-q}fIq=Jo5QrsvI{Cry2&umwi0ScDs!f$8qb=PWN|q1|`l1oxkYNej` zVkhA@FYncO%9tH+Bq{^YG!}KqnbfRQL~Oo*v#_?JHLZJct-2FPjxcFl+`RZvo?69P zL@e*W(5-2*iLukJ?Q5k{gZ8|%2-G#>p?!S?X;?zC*2~q>nKK z+7c05V7Ro1Nm3+v-geL=mVfohlH(7DY{ZLFuN|g>E8)dHZ+QyJKe_aJd=}#3DM^kV zT(5){sV%Ojs%Z)3A4mn6$s~dT27&*xylZZO3W0SsC#`B&gL{5~0*F!IAw)V~GbzGJ zY9DCuUavz{JrHC}=#yi6uDJ;KbS~YAhC~D#4N-9iAPFLe8S{?>LG(XQKkNsgTQ(9s zmzO;gxaKZUn&xrKtFqIUY|``h6gnLEd+%A$TiupsFHzQc7OBc>I3{G8uJJzyuv*t$ z)i5k$izv!4?~6?dZxYC9=x#y$KMuIvcS9pqg0z31&;RchFpjf~05J~NE1)qwzeK&H z5e7?y`y^kFU9B8JjzeJWnNUjo04KBT2apF3)enp6mF}oEO$;|J-XNCI2-6iy%ZTDE zX-657_xgPGZL#DWW#5v)tGe7Vzq)%c2pmuj?Blt$02_xLE&1p;d12dg_}_U7WcI3u zse9&*^h387t2 zO4ES1G#V`*!6_Eyo*`OJ`@7$p$x%&@cCsh2Y}QYB2vjs12^wtuKi6F43!7z>-M3%H z@}yHWKe5F-=6TtZ8ca zD55N+fQgLlq-VA=`2Mz@dORAfWXqcf;g&*&7-x{*jN7voQOnAjEh>6{p1v>oNii z9U#eX(6|qX?cKFSQ`;&tFmG?Drzs4~(|dpHqW3mV1N~p15NTo%bPb|m3Afp6!+_<6 zCnF$r#Zs266BU!8@7>74;D(WnC#G_|dvA(4co=g+JnZ*^01nlL{uM9KBDv2P~M?rpQtHnXZq*oZdVDR3L?k_RTpQ@?s z{s5f2tTz!#pPd_T{%Ww>TJ=9GD_sv@6n1cp~1s})baBkzy!#-LZ=01*5QXc|H>FGz${_KFFW1dkF?3jJLn_Qd0Ju;+8y&yseOfD}XHH zK^W>TrH`#>^;bN>=U%rIE~oA~_7%*&LO-7>y;lAh9DyU{w;!ocic?4~8HjUSt`>3} z;gJd1R_>4K46P%CN57>b1EE@v7y)rY#{&_s&jsSvR=uwwe4=>kZWxgi&hCCp?ij~) z9{+=%*8%(emq#XG#z;M*LACz%pG&Ye8Va`Huv9FX-OQucwn367j%W|B5+R~k&8L_d zs$3+Goh;7HHBLv77v=4TN#IB&SKDqiedgK-qlGg^ZSkgtQ4knH@}hJZs`+3!*lTnZ zqy92kZq0;GoHmKdAmOLTuy*d%2L<|DQk6{8;Tl}&1Q%i!&xrRVIT)-9(xH~TTcuP) z0PG!@Hdi44++_e0C}j&=GLR=7Id8+ENwIl$(1Sgwt*&yX%$i|6x^-(L!1R|%V(ntH z7CBdv0%cNAGBo7=xasBQh2xKKM%dKgaq&VJ_u`Pnl`C1Q!9gi6kPRes0 ztO>sv+4e*e4Q79Xc%aCKFv`y;t8H+H-sC;vrcZMJ!AQ2l$Yfvet1jt3<22ZXJe(-; zS}@?m%9Q;?*@vW&ESs|&mD2KkAbI`-Kk(9ZJ7%96jB`P3mpp>AW8*Ji7kwJpW;91J zU3T5#kUmm9AEm(_?FFCBB2kQ*e~T|n<49}87I*1YW?vMi98`tIvp0X9H1OtV62lhA zYmeVXN^x>i{e`E7UMozQ?T;*lzO<_39^}n+wR;Y?BLy?5*x&!y=gquYbC4=8A?MU&M-ulsB*$LXvpH|=QW(N zmE$PM!)M`Ukc*$@({AkeNPu04svk9b((9`mr?Gac))xaJX`~U)Jj?al18@$EZ9{dX ztwzY-3OT$`L?af$UYa{yvIz#qQ^vnC`H;-NR!TM82B%ef&IH(v#pxOwU7E(x8WXUn z=p65Ek0Q~qM)B<@o5<@^(G8;lDC--)yXy;8dWg-%e}IN*tJKHm-8Oq35s;0P{Yz~X zTk=Dl-I~}`JW56xJcpJLi^ZRoUItuuIT$CoVm`@$=a;c2-O(`7KN_H2csMPk65;-} z#P(?gmIoxZq|AA--y*n|l@E}0=ECc}h`0IKIzSA}!{fiT%tlYBqe?;LGPsq;yL1u= z)4RUzZZdt-rpd7Tb0JutSf#`y&ISK(rz(rQ#LuQN795s%lttTjfF?;Z;3?HtapEt& zoLi_M_;h}ryj*sN^4&m#<~rML;V_~lpeQLRDrpgV6r>!Mb{^aiX;bU(d zkWbG%z$jhKui+6Yuj+H(jP|V!So|&E8K&oVtW=i8wpuYYXMM%VAoHgKehP3gfze;O zuIPX+Te+0Izi-C%dQ!{qqYq`d@j)&DkeG+e33?h%Ve3P4f%e6!KNG)PP@G>!us`N)PlB-?ong`@w~rbMHtAB0KJ@#b@s`wzLOZ8T85vcWFPB-d~-iTvHYe zpNg9{zRBHvd=}q!{*D?K?Sb{z*h5JHZAL%0a!1(qlXz+VBDtv)*(#gWiioYkd-Ax< z+@!GiqLbcOM>L$olvXGrRpKh1+EaW#m5<7>@-bfll`aetC8*+Tm}*R?@^7{I`g|Y$ zZ-0FaGJoWA_O6*fD%Z@P@b&xo$=oHR+Qy%*X*E7_3z8tMCj6RKbA4K}>liYme=z-r z1M+Qk1#v+5*Ek@e;-o0me+RYniOnbqoR}lz4#YzB-E3>0Hl;yywBofFiJbY8^D6N* zxD)(Ey)~11M84j>01w@J`jeSd(_4)(vLh{U3~uhwO^d_^!jRyhVLHgXSO1 z%>jKii82*5RYzuw+u|wFuo(>F^fMSMz!pqp&T?A$?22B7;rs8rinDm}$B{T8jjbLP zGPfF@nIpCWUm}3@_`Ms#!JeRRj3yY@^$Do2F;0OB+txWL2>)8kk|q>xhYjy`zcA$C z_@cvq#Ax}|bKzZCZq!G6D^|5s`V+x45uZ4!1Qii@|*m{?|IE+A|v1F zN<8}6qA-FSzbQF@IolVaA~*7;#=?%bXX`;vLBx5JwxngrLm;miPq?*o5iy#f{6*1_ z3~PEhpVQEaLR2EwcUW~S+#}H%1gDXoX#aDA4J(jX+4c8 z9qk|K&%QeG*`*IyrhCcc&CoGdTI8!GEDXxkLBv;mMVH&{I{Mc}acRMk+rvQc{6==3 zj)6Zu!;BCCYw>sAP}Gad!pdi2tX5ooKNVt67#o;puM)Im9@H6!e>@Oa-6B0jp5m*| zfYn|4p9>o$Lw@PML zQ0Vn(?o1tYIxlV>wvI$R(Gq)XvyR_t#69->Y*o+Y*X5JF9<{lpD0(O7EPw(fL5{)~ z*>O>p_S~V!Z5Nq5giYflK3~02x9AhZbIKcgr}>cUhukBw7lHKWux8-KSqt=pDivS< z`8?TmG|MfcWs50QoQF{`33lVZzewoZTf?>WU0gOGD?cqEnt5?vb&(;}_r0*SnojG{>)T#CjKjeN_m1f{qpLcC&pK zOd73W;<_hJ8z}|fprNTD?$L5gy+I-!Nc=jAKM@E7YNQxozer2i2}g(C$OfLp27MP( z3~u9!!)&@(@2-2@GbjMQ*)x&YD+F+dL+_^dK;GVHR-k>Jc9w+cJQS#hRYNQIcjUY`0 zK91+tdY*L<{fXkBC|K#PSl~QEateOd!xTMI^0-}p6oJlFU?G&3m3~I`Jc(j4e}MWZ z5h*;@u1_FPoVaJ`gqaID%L9{BUkmqmlW^Wl%@9nW-rqs39x7G(v{TP5Wm1!;xgM1d z&eYsE*L*jDnC-}H3rsyKoLsoXy~XG|1q?J#$;_)g+n_$j{h!LiKQ_84J{ z%jI5Ena^X5&G^@1?LjTlbaii(3??~WQP%?PDoZ+KK+}ipAEnh`zb3~n*Wu7*ngZ^b5{g$z_4gQEfOi_lJ z>2w2l`{`;BLRe(F)$9H?D#?pKl+S#biyL9Ba%Geu!)nFs^=x_QJq3{pnmM zx)?sY{;Xs=pqO#aHm_L1N|a(s!Z*xrmdIvt*4IYWVk8u7eSoXeN0Ic^9C%>dhB7LA zgqhn7?qz<_Pj;&F%}AT)=dz{ZT{n}+FY!wxHF`HUzcx_H{m?&98q=sHj9j9ON(ght zy}fFiCj{@iVSRN?z`SNl5j^WxoQNy0sm0uqvBhHu4j!xS$3k?oPa$v2%H z_z*{n(PqZI9$Rp&VvSQvR7$^=pKda#2z^g_+DGV^QpHv0Y1T#6l;0(U!oFpgWJ4BLyw;-NFZls2w)S@D{P zj;su2px-$p2HyvE6 zKW(yP3ul_bo;!_9_moqnL%Zu#?Dw8b)qbyM6Dxe$BqG2n@hOoPT}Z_C_VXMVYS8&c zC9Em2cOO`yI$1-p;3MSO>X{d5LRc(({b8z+i`S$ucc$Mb0`4BeMjb^{jcC!fMuD%` z?@7A9AXrsXdw0x_@-}j4f07J3(7ysTo;B@b#fj1dy$uibz)zG+)u_1|?$sfT&En!?QCwN~#4E1#>;(Z}m zzdzYC-9LAyLjBQO9DhOT1zNM~NN?`;)iOyOs4?^!bSG+F58EnsGc9%;daku0*G_1j zJksFtRf;VMn!J>6n32+Z1qtW5<5Qm?NgDIdB&nd;M52)%TtI7>eMn%kYykp`=rRhy z4;)h9@0lRSbTdj4v>-QSsC15VOD7yY3G;s-TH`BNruXvfMA*P1ot8Q9$4r=YNG4P= zjfrSb7oHQQPam#mIiQCYSEcZqLWyYxz6TOBs84BK7#|h|XLAs9{waoOKAU_2PylSV zH%R6IFJv@rq$l!JS~_O=kj8G&mnJC@f@b!avuli}DWTAidN~tmeiWoV;XBV%nt|lHsk3QZwXdX<2 zILFLbB`jc~*`73^CQYK>{P_OnAa$SNX1e4i{SV$EHVJ$h@ib&};p_nQBIdq4(c>F8 zss}D!qum2MZmnW-DtjS=55Ck70|$(>fFJsS4NA>z_Hv%*ZL(Sl#_+LWuG2|UG48t^OG8B zs?WUL)FI1mI?&TL%o!?6hXv8+N*cE!)&}fo7TW^z8=QQ*ELY^JYyZ2BgE4noUrgM9abE!H2j?5Nb;E5SkFX%@& zV9=bhu!Bfq(CYA=3F)j=GrRv8k%pvt_7eI@J0Xqql&ZPB>qE9tF^;Vu=ela+#x?Rkm;8I6-Bq}|7l+4;+@uds}G^_1@(2@ zVWe^4u9!TVM4xv8;%8C5zD*gy#toHCSun2VMn2G877u{{ZtWy&VG2J;Z>3`|G-ggW ze!k*OJ)q^U6Mx}|ni3)gr-eiow7{jxs|!98?&AzXzKQyZoEG%0(?`?qE&e$^&qtcS zH_*6Tm+(Mw0Q#@hfXwjjGOxopQ(>N8nR&DK2EHxvB;ALZMjW)#^bwQJDvoMS` zmTe&rXpk@eCaH#oz9D@IQJXn7acPdktGK*b#{r~<>wF_4H*~Nk2JViffEpTbmP<0) zuu~Q!i%de}vLpk9Pk0Lj)F0H0OkODP`nP>S7P_*q6NUCX*K+Pi1|nFC1v#L@9KIGJ zC2_wYy}23ZfZQ8OumsD~aIHwj-<8vBLuthYCJ`ubB&}VTzaIpv4Mzhd=G`FWaZ=A& zcxQ08;Um=VxLK8BtE;F^`ExoKqfiMavPCWUIw8b!Z)jc+%k#$Oo34rJo0t&NJdYbh z=Dw;Qbsk$>X-U85PWy0F-jEJEJwtiM-<`1kwC$LA!(F{qkl&e4D{wc7dPm$rB&c3&jCjBVFXCqM2dk*IIlyYh z<=GC7xrFyU2JeOMlZ7ssR0k$A&WnVooJ{|3wQ$hx+`KK9z=&c5G+cJ^eJZRh5hx_H z+sw9b451%g@pkOQnwY(mOq9Yu*#)a%8JXx9PN!%=sZ7+MD3z2pmwWvI)ZPiRBmjJj_lsb+?*f?+hlP|^J zkfL6$>;I6wmAi1N=i*r|iLCak5Hx5iy_lW& zCPlt;gm0FUu@En^1F}*&*wsms;lUng?78(+JmYEDP1S%mxUh_co=1c)45C$JQ0|c5 z6ptm}(KfjbroUp^u6)-{-LNX)y13T3{{4}hLsE^JU(Cc0{)z(x5O0}xB%5r^C^z~r zK^d*-?1Hvmw!~Lgb|E3=d)_x!#qr?gU^m9yo8L`2-@n^_S_IoR_;~Dd^7(2pg*SiU zbl<Np%A`9G_$X_-uneKS zp|Upt`LswzUfXu^V7yIWKMfb=ZBI5NPkI~6cmd{ueqDm*htSmt1MM!AXSuW;qY`6T zrQ;HeG-zT=4IwMYYji#4oLm$QFHwH4z``A)(W_q?ADIf$k^tKl$8_}Rq#a*)lHe_6 zu=SATRZB;DUtGlF$5{;BJQd!hJFyEM+&!D$IU;AG!F}YZ&(hO93U{x_~#EX{VrDp3^(+<6q9zAT?IwbpC{7-BW0cEjQ=+nTq^#osFyo=3ZwTR&TpgW;YmZE^V@xc`~6V-h>c<6V5i_r&V{Hvn=awQy(qjA

d<{RE_G7OwG&wB>S;=>Wtp&ieR5MlhHR3;XJH* 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åo@k#g1n{FUBlTP^cXC`x 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≦x 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

A>pDw~^@3aqbxQ#;$`Se< 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 literal 0 HcmV?d00001