From 172ed5a46d88e23538ddb9a76fb31e34226dd44b Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 30 Jun 2023 23:05:42 +0200 Subject: [PATCH 01/30] add a skeleton for new zeropool docs --- docs/new-docs/01-background.md | 12 ++++++++++++ docs/new-docs/02-overview.md | 3 +++ docs/new-docs/README.md | 22 ++++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 docs/new-docs/01-background.md create mode 100644 docs/new-docs/02-overview.md create mode 100644 docs/new-docs/README.md diff --git a/docs/new-docs/01-background.md b/docs/new-docs/01-background.md new file mode 100644 index 0000000..45d14f8 --- /dev/null +++ b/docs/new-docs/01-background.md @@ -0,0 +1,12 @@ +# Background + +Here, we briefly overview the main cryptographic primitives ZeroPool is built +on. + +## zkSNARK + +TODO: Same as [this](/docs/fawkes-crypto/background) but shorter + +## Merkle Tree + +Hashes, transactions, poseidon hash, verifying in zkSNARK diff --git a/docs/new-docs/02-overview.md b/docs/new-docs/02-overview.md new file mode 100644 index 0000000..94692d7 --- /dev/null +++ b/docs/new-docs/02-overview.md @@ -0,0 +1,3 @@ +# Overview + + diff --git a/docs/new-docs/README.md b/docs/new-docs/README.md new file mode 100644 index 0000000..0cb59b1 --- /dev/null +++ b/docs/new-docs/README.md @@ -0,0 +1,22 @@ +# ZeroPool + +ZeroPool is a smart-contract that implements private token transactions on +top of a public blockchain. One can deposit public tokens into their private +account inside ZeroPool, transfer them to other private accounts inside the +pool, and withdraw them back to a public account. Deposits to and withdrawals +from the pool are visible to everyone — since they alter account balances on +the underlying public blockchain — while the transactions inside the pool, as +well as the balances, and the structures of private accounts are hidden from +everyone but the corresponding account owners. + +The core tool that allows ZeroPool to provide privacy on a public blockchain is +[zkSNARK](https://en.wikipedia.org/wiki/Non-interactive_zero-knowledge_proof)s. +We use [fawkes-crypto](/docs/fawkes-crypto) EDSL library to implement our +zkSNARK constraints. + +We keep the following description high-level and omit the blockchain-specific +technicalities until the appropriate section. ZeroPool is agnostic to the +choice of the underlying blockchain, and its core engine can be augmented with +extra functionality if needed (for example, limiting the maximum transaction +amounts, verifying that transactions satisfy some extra conditions — all while +maintaining privacy). From f08c6b9e38e1ce4809260759e4960c2c40999632 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Mon, 3 Jul 2023 19:17:32 +0200 Subject: [PATCH 02/30] update zeropool overview --- docs/new-docs/01-background.md | 13 +++++-- docs/new-docs/02-overview.md | 63 ++++++++++++++++++++++++++++++++++ docs/new-docs/README.md | 2 +- 3 files changed, 75 insertions(+), 3 deletions(-) diff --git a/docs/new-docs/01-background.md b/docs/new-docs/01-background.md index 45d14f8..f352d10 100644 --- a/docs/new-docs/01-background.md +++ b/docs/new-docs/01-background.md @@ -1,12 +1,21 @@ # Background Here, we briefly overview the main cryptographic primitives ZeroPool is built -on. +with. ## zkSNARK -TODO: Same as [this](/docs/fawkes-crypto/background) but shorter +We use zkSNARKs to enable a smart contract verify conditions on secret +user-supplied data without seeing it. + +[this](/docs/fawkes-crypto/background) but shorter ## Merkle Tree Hashes, transactions, poseidon hash, verifying in zkSNARK + +Merkle tree is a binary tree where leafs contain the hashes of some useful +payload data, and each non-leaf node contains the hash of its children's +values. + + diff --git a/docs/new-docs/02-overview.md b/docs/new-docs/02-overview.md index 94692d7..8d6adb7 100644 --- a/docs/new-docs/02-overview.md +++ b/docs/new-docs/02-overview.md @@ -1,3 +1,66 @@ # Overview +Every user in ZeroPool is associated with her private spending key +$\sigma$. +ZeroPool maintains a set of accounts and notes. Each account and each note +stores some amount of tokens specified by its balance. Each note belongs to +some account. A user Alice who owns an account can join a note which belongs +to this account (destroying the note and and transferring its balance to +the account), or create a new note (transferring some of account balance to +it). She may choose to make the created note owned by a different account, say, +Bob's — which Bob can later join with his account. This way, accounts store the +balance of users and notes enable that balance to be fragmented and transferred +between accounts. + +In other words, ZeroPool provides the following actions to a user Alice: + + - Creating a private ZeroPool account for spending key $\sigma$ chosen + randomly by her. + + - Depositing tokens to a ZeroPool account $\sigma$ from a public account (on + the underlying blockchain). + + - Creating notes that belong to another user Bob's account, and topping them + up with tokens from Alice's account $\sigma$. + + - Joining the notes that belong to her account with it. + + - Withdrawing the tokens from her ZeroPool account $\sigma$ back to a public + account (on the underlying blockchain). + +In order to keep the action that Alice performs secret, we implement all five +using one single transaction type. Let $\sigma$ be Alice's spending key. Then +one ZeroPool transaction does the following: + +1. consumes the existing account associated with spending key $\sigma$ and + `INPUT` number of notes belonging to it, + +2. creates a new account associated with $\sigma$ and `OUTPUT` number of notes + which may belong to any (not necessarily same) accounts. + +The consumed account and notes are called “input”, while the produced ones are +called “output” of the transaction. So the transaction always “overwrites” one +(input) account of the user with a new (output) one, optionally joining or +creating some notes in the process. In case input account equals to the special +zero value, the transaction will assume that output account is to be created +and initialized with zero balance. From this moment on, it can be used as input +to future transactions. + +The transaction keeps private the account that was created or modified by the +transaction, as well as balances of all involved notes. We fix the numbers +of `INPUT` and `OUTPUT` notes to prevent leaking the actual number of notes +used. If the user wants to use less than `INPUT` or `OUTPUT` notes, she can pad +her desired note lists with special dummy zero values — the transaction will +recognize them and understand that they shouldn't be used. + +The transaction reveals the difference between the total balance of input +account and its notes on one hand, and output account and notes on the other +hand. If the difference negative (output is greater than input), this means +that the total number of tokens in the ZeroPool has went up and therefore the +transaction will expect the user to deposit the correct number of tokens to the +smart contract's public account (on the underlying blockchain). Symmetrically, +if the difference is positive, ZeroPool will allow the user to withdraw the +said difference of tokens from the smart-contract's account to a user specified +account. When the difference is zero, it means that the net balance of ZeroPool +hasn't changed and the transaction was only moving tokens within ZeroPool. diff --git a/docs/new-docs/README.md b/docs/new-docs/README.md index 0cb59b1..9191d08 100644 --- a/docs/new-docs/README.md +++ b/docs/new-docs/README.md @@ -6,7 +6,7 @@ account inside ZeroPool, transfer them to other private accounts inside the pool, and withdraw them back to a public account. Deposits to and withdrawals from the pool are visible to everyone — since they alter account balances on the underlying public blockchain — while the transactions inside the pool, as -well as the balances, and the structures of private accounts are hidden from +well as the balances, and the structure of private accounts are hidden from everyone but the corresponding account owners. The core tool that allows ZeroPool to provide privacy on a public blockchain is From 7a75379e52df2a8adf622151fbc8e66e92bff386 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Tue, 11 Jul 2023 12:36:32 +0200 Subject: [PATCH 03/30] add merkle tree illustration --- docs/new-docs/diagrams/Makefile | 14 ++ .../diagrams/merkle-tree-illustration.svg | 209 ++++++++++++++++++ .../merkle-tree-illustration/.latexmkrc | 2 + .../merkle-tree-illustration/main.tex | 28 +++ 4 files changed, 253 insertions(+) create mode 100644 docs/new-docs/diagrams/Makefile create mode 100644 docs/new-docs/diagrams/merkle-tree-illustration.svg create mode 100644 docs/new-docs/diagrams/merkle-tree-illustration/.latexmkrc create mode 100644 docs/new-docs/diagrams/merkle-tree-illustration/main.tex diff --git a/docs/new-docs/diagrams/Makefile b/docs/new-docs/diagrams/Makefile new file mode 100644 index 0000000..d7db333 --- /dev/null +++ b/docs/new-docs/diagrams/Makefile @@ -0,0 +1,14 @@ +.PHONY: all + +all: merkle-tree-illustration.svg + +.SECONDARY: + +%.svg: %/main.svg + cp $^ $@ + +%/main.svg: %/main.pdf + pdf2svg $^ $@ + +%/main.pdf: %/main.tex + cd $$(dirname "$@") && latexmk diff --git a/docs/new-docs/diagrams/merkle-tree-illustration.svg b/docs/new-docs/diagrams/merkle-tree-illustration.svg new file mode 100644 index 0000000..98460d3 --- /dev/null +++ b/docs/new-docs/diagrams/merkle-tree-illustration.svg @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/new-docs/diagrams/merkle-tree-illustration/.latexmkrc b/docs/new-docs/diagrams/merkle-tree-illustration/.latexmkrc new file mode 100644 index 0000000..aa64188 --- /dev/null +++ b/docs/new-docs/diagrams/merkle-tree-illustration/.latexmkrc @@ -0,0 +1,2 @@ +$pdf_mode = 4; # 1 is pdflatex, 4 is lualatex, 5 is xelatex +@default_files = ('main.tex'); diff --git a/docs/new-docs/diagrams/merkle-tree-illustration/main.tex b/docs/new-docs/diagrams/merkle-tree-illustration/main.tex new file mode 100644 index 0000000..475d96f --- /dev/null +++ b/docs/new-docs/diagrams/merkle-tree-illustration/main.tex @@ -0,0 +1,28 @@ +\documentclass[tikz]{standalone} +\usetikzlibrary{graphs,graphdrawing,arrows.meta} +\usegdlibrary{trees} +\begin{document} +\begin{tikzpicture}[>=Stealth] +\graph[binary tree layout]{ + 3cf03f -> { + 5e7bce -> { + 3d3106 -> { + c52280, + 87428f, + }, + e07bbd -> { e47509, 6631e5 } + }, + 7a0fde -> { + 60c4cf -> { + 25c725, + 026382, + }, + 9989b6 -> { + fd954f, + 72baaf, + } + } + } +}; +\end{tikzpicture} +\end{document} From f8e2cbb8e2b7450599cc2b96788c1a530c876c9e Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Tue, 11 Jul 2023 13:38:28 +0200 Subject: [PATCH 04/30] use png instead of svg for tikz diagrams --- docs/new-docs/diagrams/Makefile | 11 +- .../diagrams/merkle-tree-illustration.png | Bin 0 -> 19151 bytes .../diagrams/merkle-tree-illustration.svg | 209 ------------------ .../merkle-tree-illustration/main.tex | 19 +- 4 files changed, 16 insertions(+), 223 deletions(-) create mode 100644 docs/new-docs/diagrams/merkle-tree-illustration.png delete mode 100644 docs/new-docs/diagrams/merkle-tree-illustration.svg diff --git a/docs/new-docs/diagrams/Makefile b/docs/new-docs/diagrams/Makefile index d7db333..0a54cf7 100644 --- a/docs/new-docs/diagrams/Makefile +++ b/docs/new-docs/diagrams/Makefile @@ -1,14 +1,11 @@ .PHONY: all -all: merkle-tree-illustration.svg +all: merkle-tree-illustration.png .SECONDARY: -%.svg: %/main.svg +%.png: %/main.png cp $^ $@ -%/main.svg: %/main.pdf - pdf2svg $^ $@ - -%/main.pdf: %/main.tex - cd $$(dirname "$@") && latexmk +%/main.png: %/main.tex + cd $$(dirname "$^") && lualatex --shell-escape main.tex diff --git a/docs/new-docs/diagrams/merkle-tree-illustration.png b/docs/new-docs/diagrams/merkle-tree-illustration.png new file mode 100644 index 0000000000000000000000000000000000000000..99c92012ce05dba368d173122ace9c67910774a6 GIT binary patch literal 19151 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 literal 0 HcmV?d00001 diff --git a/docs/new-docs/diagrams/merkle-tree-illustration.svg b/docs/new-docs/diagrams/merkle-tree-illustration.svg deleted file mode 100644 index 98460d3..0000000 --- a/docs/new-docs/diagrams/merkle-tree-illustration.svg +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/new-docs/diagrams/merkle-tree-illustration/main.tex b/docs/new-docs/diagrams/merkle-tree-illustration/main.tex index 475d96f..bcab592 100644 --- a/docs/new-docs/diagrams/merkle-tree-illustration/main.tex +++ b/docs/new-docs/diagrams/merkle-tree-illustration/main.tex @@ -1,18 +1,23 @@ -\documentclass[tikz]{standalone} +\documentclass[tikz,convert={outfile=\jobname.png}]{standalone} +\usepackage{xcolor} \usetikzlibrary{graphs,graphdrawing,arrows.meta} \usegdlibrary{trees} \begin{document} -\begin{tikzpicture}[>=Stealth] +\begin{tikzpicture}[ + >=Stealth, + pth/.style={draw,rectangle,fill=green}, + prf/.style={draw,rectangle,dashed,fill=yellow!20}, +] \graph[binary tree layout]{ - 3cf03f -> { - 5e7bce -> { - 3d3106 -> { + 3cf03f[pth] -> { + 5e7bce[pth] -> { + 3d3106[prf] -> { c52280, 87428f, }, - e07bbd -> { e47509, 6631e5 } + e07bbd[pth] -> { e47509[prf], 6631e5[pth] } }, - 7a0fde -> { + 7a0fde[prf] -> { 60c4cf -> { 25c725, 026382, From 9d83a41853e499246d37c0ef3043f864a4cb2e82 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Tue, 11 Jul 2023 14:43:17 +0200 Subject: [PATCH 05/30] Background with an illustration --- docs/new-docs/01-background.md | 63 ++++++++++++++++-- .../diagrams/merkle-tree-illustration.png | Bin 19151 -> 25565 bytes .../merkle-tree-illustration/.latexmkrc | 2 - .../merkle-tree-illustration/main.tex | 11 +-- 4 files changed, 64 insertions(+), 12 deletions(-) delete mode 100644 docs/new-docs/diagrams/merkle-tree-illustration/.latexmkrc diff --git a/docs/new-docs/01-background.md b/docs/new-docs/01-background.md index f352d10..bbd66e4 100644 --- a/docs/new-docs/01-background.md +++ b/docs/new-docs/01-background.md @@ -8,14 +8,67 @@ with. We use zkSNARKs to enable a smart contract verify conditions on secret user-supplied data without seeing it. -[this](/docs/fawkes-crypto/background) but shorter +See [docs for fawkes-crypto library](/docs/fawkes-crypto/background) for a +high-level overview of how zkSNARKs work. ## Merkle Tree -Hashes, transactions, poseidon hash, verifying in zkSNARK +Merkle tree is a mechanism for cryptographically commiting to some values. It +allows efficiently revealing part of the commited values, recalculating the +commitment when the values change. -Merkle tree is a binary tree where leafs contain the hashes of some useful -payload data, and each non-leaf node contains the hash of its children's -values. +Leaves in a Merkle tree contain hashes of the commited values. And each inner +(that is, non-leaf) node contains the hash of its children. +![Merkle tree illustration](diagrams/merkle-tree-illustration.png) +Let's look at the illustration of Merkle tree above (real hash values will be +much longer, this is only an illustration). Suppose you know that the hash of +the root `3cf03f`, but you don't know the whole tree. + + - If I give you a **path** to the green leaf `6631e5` (path being the sequence + "left, right, right" that leads to that leaf from the root through the + green nodes), as well as the hashes of all the nodes (highlighted in green + and light yellow), you can verify that the leaf is indeed holding the + value `6631e5`. Note that you needed to see only $O(\log n)$ hash values to + verify this, and you didn't have to know all $n$ tree nodes. + + The path (sequence of left-right turns) to a node in a Merkle tree together + with the hash values of the nodes encountered on the way is called **Merkle + proof** for that node. Merkle proof is well-defined for all nodes in the + tree, not only leaves. + + - If you're holding the root of a Merkle tree (call this "old tree"), and I + want to change exactly one leaf in it (producing "new tree"), I can show you + + 1. the Merkle proof of the leaf in the old tree, + 2. the hash of the new tree's root, + 3. the Merkle proof of the leaf in the new tree; + + using this information you can verify that the proofs are correct, and check + that the unmodified nodes are the same in both proofs (ensuring that exactly + one leaf was modified). + + This also works with non-leaf nodes. In this case, the modification replaces + the subtree rooted in the corresponding inner node. + + - If you encode each "left" turn on the path from root to a leaf as 0, and + each "right" turn as 1, and compile them into a binary number, that will + yield the **number** (or **index**) of a leaf (counting left to right). + + For example, the left-most leaf on the illustration above will have path $0, + 0, 0$ and number $000_2 = 0$; its closest neighbor on the right is $001_2 = + 1$ and so on. + +The naive way of proving the value of a leaf in Merkle tree discloses location +of that leaf, as well as the hash of the result. The same goes for modifying +a leaf — verifier who is checking the proofs gets to see which leaf was +modified. + +With zkSNARKs we can overcome this and perform both operations privately. A +Verifier (for example, a smart-contract) can hold the root of a Merkle tree +and allow a users to replace it with a new value, only if the user supplies +a zkSNARK proof that modifications satisfy some criteria (for example, that +only one leaf whose index is within a certain range was modified). We can prove +Merkle proofs within a zkSNARK proof keeping them private and having Verifier +store only the root hash of a (potentially huge) Merkle tree. diff --git a/docs/new-docs/diagrams/merkle-tree-illustration.png b/docs/new-docs/diagrams/merkle-tree-illustration.png index 99c92012ce05dba368d173122ace9c67910774a6..05c0dbbd4f93da1d0fee78e09e392776991017c0 100644 GIT binary patch literal 25565 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 diff --git a/docs/new-docs/diagrams/merkle-tree-illustration/.latexmkrc b/docs/new-docs/diagrams/merkle-tree-illustration/.latexmkrc deleted file mode 100644 index aa64188..0000000 --- a/docs/new-docs/diagrams/merkle-tree-illustration/.latexmkrc +++ /dev/null @@ -1,2 +0,0 @@ -$pdf_mode = 4; # 1 is pdflatex, 4 is lualatex, 5 is xelatex -@default_files = ('main.tex'); diff --git a/docs/new-docs/diagrams/merkle-tree-illustration/main.tex b/docs/new-docs/diagrams/merkle-tree-illustration/main.tex index bcab592..7cdc07d 100644 --- a/docs/new-docs/diagrams/merkle-tree-illustration/main.tex +++ b/docs/new-docs/diagrams/merkle-tree-illustration/main.tex @@ -7,22 +7,23 @@ >=Stealth, pth/.style={draw,rectangle,fill=green}, prf/.style={draw,rectangle,dashed,fill=yellow!20}, + every node/.style={font={\ttfamily}} ] \graph[binary tree layout]{ - 3cf03f[pth] -> { - 5e7bce[pth] -> { + "3cf03f"[pth,pin={[pin edge={dashed}]60:{$H(\texttt{5e7bce}, \texttt{e07bbd})$}}] -> { + "5e7bce"[pth] -> { 3d3106[prf] -> { c52280, 87428f, }, - e07bbd[pth] -> { e47509[prf], 6631e5[pth] } + "e07bbd"[pth] -> { e47509[prf], "6631e5"[pth] } }, - 7a0fde[prf] -> { + 7a0fde[prf,pin={[pin edge={dashed}]60:{$H(\texttt{60c4cf}, \texttt{9989b6})$}}] -> { 60c4cf -> { 25c725, 026382, }, - 9989b6 -> { + 9989b6[pin={[pin edge={dashed}]60:{$H(\texttt{fd954f}, \texttt{72baaf})$}}] -> { fd954f, 72baaf, } From d528ee234a7fcdb10f097a1ab585e3e791357c3f Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Tue, 11 Jul 2023 15:03:42 +0200 Subject: [PATCH 06/30] edits of the background --- docs/new-docs/01-background.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/new-docs/01-background.md b/docs/new-docs/01-background.md index bbd66e4..a62f97f 100644 --- a/docs/new-docs/01-background.md +++ b/docs/new-docs/01-background.md @@ -18,7 +18,7 @@ allows efficiently revealing part of the commited values, recalculating the commitment when the values change. Leaves in a Merkle tree contain hashes of the commited values. And each inner -(that is, non-leaf) node contains the hash of its children. +(that is, non-leaf) node contains the hash of its two children. ![Merkle tree illustration](diagrams/merkle-tree-illustration.png) @@ -30,8 +30,11 @@ the root `3cf03f`, but you don't know the whole tree. "left, right, right" that leads to that leaf from the root through the green nodes), as well as the hashes of all the nodes (highlighted in green and light yellow), you can verify that the leaf is indeed holding the - value `6631e5`. Note that you needed to see only $O(\log n)$ hash values to - verify this, and you didn't have to know all $n$ tree nodes. + value `6631e5`. You do that by recalculating the hashes of all the nodes + along the path and, finally, verifying that the path starts with the + expected root hash. Note that you needed to see only $O(\log n)$ hash + values to verify this, and you didn't have to know all $n$ tree nodes for + this. The path (sequence of left-right turns) to a node in a Merkle tree together with the hash values of the nodes encountered on the way is called **Merkle @@ -46,8 +49,8 @@ the root `3cf03f`, but you don't know the whole tree. 3. the Merkle proof of the leaf in the new tree; using this information you can verify that the proofs are correct, and check - that the unmodified nodes are the same in both proofs (ensuring that exactly - one leaf was modified). + that the unmodified nodes (yellow on the picture) are the same in both + proofs (ensuring that exactly one leaf was modified). This also works with non-leaf nodes. In this case, the modification replaces the subtree rooted in the corresponding inner node. From 5d97231dd0db821e8f1e8b125f8dac693aca5f2c Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Wed, 12 Jul 2023 12:44:07 +0200 Subject: [PATCH 07/30] edit the background diagram --- docs/new-docs/01-background.md | 10 +++++----- .../diagrams/merkle-tree-illustration.png | Bin 25565 -> 28044 bytes .../merkle-tree-illustration/main.tex | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/new-docs/01-background.md b/docs/new-docs/01-background.md index a62f97f..280f473 100644 --- a/docs/new-docs/01-background.md +++ b/docs/new-docs/01-background.md @@ -17,8 +17,9 @@ Merkle tree is a mechanism for cryptographically commiting to some values. It allows efficiently revealing part of the commited values, recalculating the commitment when the values change. -Leaves in a Merkle tree contain hashes of the commited values. And each inner -(that is, non-leaf) node contains the hash of its two children. +Leaves in a Merkle tree contain hashes of the commited values $v_0$ … +$v_{n-1}$. And each inner (that is, non-leaf) node contains the hash of its two +children. ![Merkle tree illustration](diagrams/merkle-tree-illustration.png) @@ -32,9 +33,8 @@ the root `3cf03f`, but you don't know the whole tree. and light yellow), you can verify that the leaf is indeed holding the value `6631e5`. You do that by recalculating the hashes of all the nodes along the path and, finally, verifying that the path starts with the - expected root hash. Note that you needed to see only $O(\log n)$ hash - values to verify this, and you didn't have to know all $n$ tree nodes for - this. + expected root hash. Note that you needed to see only $O(\log n)$ hash values + to verify this, and you didn't have to know all $O(n)$ tree nodes for this. The path (sequence of left-right turns) to a node in a Merkle tree together with the hash values of the nodes encountered on the way is called **Merkle diff --git a/docs/new-docs/diagrams/merkle-tree-illustration.png b/docs/new-docs/diagrams/merkle-tree-illustration.png index 05c0dbbd4f93da1d0fee78e09e392776991017c0..e75d49668c765310caaa11eb4fee37f79c08e5dd 100644 GIT binary patch literal 28044 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 Bu)6>N literal 25565 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 { "5e7bce"[pth] -> { 3d3106[prf] -> { - c52280, - 87428f, + c52280[pin={[pin edge={dashed}]-60:{$H(v_0)$}}], + 87428f[pin={[pin edge={dashed}]-60:{$H(v_1)$}}], }, "e07bbd"[pth] -> { e47509[prf], "6631e5"[pth] } }, @@ -24,8 +24,8 @@ 026382, }, 9989b6[pin={[pin edge={dashed}]60:{$H(\texttt{fd954f}, \texttt{72baaf})$}}] -> { - fd954f, - 72baaf, + fd954f[pin={[pin edge={dashed}]-60:{$H(v_6)$}}], + 72baaf[pin={[pin edge={dashed}]-60:{$H(v_7)$}}], } } } From 345d1f187a0fe265c7fb36510509b5f396d89846 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Wed, 12 Jul 2023 14:56:24 +0200 Subject: [PATCH 08/30] early draft of the transaction description --- docs/new-docs/03-transaction.md | 40 +++++++++ docs/new-docs/04-zero-knowledge.md | 4 + docs/new-docs/diagrams/Makefile | 4 +- .../diagrams/transaction-acting-on-a-list.png | Bin 0 -> 69184 bytes .../transaction-acting-on-a-list/main.tex | 76 ++++++++++++++++++ 5 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 docs/new-docs/03-transaction.md create mode 100644 docs/new-docs/04-zero-knowledge.md create mode 100644 docs/new-docs/diagrams/transaction-acting-on-a-list.png create mode 100644 docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md new file mode 100644 index 0000000..7f31605 --- /dev/null +++ b/docs/new-docs/03-transaction.md @@ -0,0 +1,40 @@ +# Transaction + +As mentioned in [Overview](overview), ZeroPool encodes all possible actions a +user may want to perform on the pool with a single transaction type. A ZeroPool +transaction consumes one account (associated with user's spending key $\sigma$) +and `INPUT` number of notes that belong to this account. In their place, it +creates a new account (associated with the same spending key $\sigma$ as the +old one) and `OUTPUT` number of new notes. The created new notes may belong to +accounts of other users (with keys different from $\sigma$). Consumed account +and notes can not be used again. + +There may exist no more than one account associated with a given spending key +$\sigma$. + +:::tip + +Since the consumed and newly created account have the same associated +key $\sigma$ and belong to the same user, one can also view them as two +instantiations of the same account, and transaction as modifying this account +(overwriting some fields in it). + +::: + +## Accounts and Notes + +ZeroPool organizes all accounts and notes in a long, evergrowing sequence. Each +new transaction appends one account and `OUTPUT` notes to this sequence. We +only append values to the sequence via transactions, and never delete or modify +values that were added before. + +![](diagrams/transaction-acting-on-a-list.png) + +:::info + +Logically, it's best to see this sequence as two separate sequences, one for +accounts and one for notes. + +::: + +## Merkle Tree diff --git a/docs/new-docs/04-zero-knowledge.md b/docs/new-docs/04-zero-knowledge.md new file mode 100644 index 0000000..6960159 --- /dev/null +++ b/docs/new-docs/04-zero-knowledge.md @@ -0,0 +1,4 @@ +# Zero-Knowledge + +TODO: explain how the transaction from the previous section is implemented in +ZK-manner. diff --git a/docs/new-docs/diagrams/Makefile b/docs/new-docs/diagrams/Makefile index 0a54cf7..1d85019 100644 --- a/docs/new-docs/diagrams/Makefile +++ b/docs/new-docs/diagrams/Makefile @@ -1,6 +1,8 @@ .PHONY: all -all: merkle-tree-illustration.png +all: \ + merkle-tree-illustration.png \ + transaction-acting-on-a-list.png .SECONDARY: diff --git a/docs/new-docs/diagrams/transaction-acting-on-a-list.png b/docs/new-docs/diagrams/transaction-acting-on-a-list.png new file mode 100644 index 0000000000000000000000000000000000000000..5b255ab6fdc9ee5c491fec9effc5ed8a4c963289 GIT binary patch literal 69184 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 CA3ZPt literal 0 HcmV?d00001 diff --git a/docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex b/docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex new file mode 100644 index 0000000..0f91f66 --- /dev/null +++ b/docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex @@ -0,0 +1,76 @@ +\documentclass[convert={outfile=\jobname.png}]{standalone} +\usepackage{varwidth} +\usepackage{tikz} +\usepackage{xcolor} +\usepackage{tikz-cd} +\usetikzlibrary{graphs,graphdrawing,arrows.meta} +\usetikzlibrary{arrows.meta, positioning, quotes, calc, backgrounds, decorations.pathreplacing} +\usetikzlibrary{cd} +\usetikzlibrary{fit} +\tikzset + { filled/.style={fill=white}, + account/.style={draw,rectangle,minimum size=6mm,inner sep=2mm}, + note/.style={draw,circle,minimum size=2mm}, + } +% \tikzcdset{column sep/normal=0.2cm} +\begin{document} +\begin{varwidth}{25cm} + \begin{tikzcd}[ + % row sep=normal, + column sep=4mm, + ampersand replacement=\&, + nodes in empty cells, + execute at end picture={ + \begin{scope}[on background layer] + \node[rectangle,draw,dotted,fit=(lastTransLeft)(lastTransRight),rounded corners=0.2cm,inner sep=2mm,outer sep=1pt,pin={[font=\normalsize]90:{ + Created by the transaction + }}] (createdCaption) {}; + \node[below right=3cm and 1cm of consumedThree] (consumedCaption) { + % \begin{minipage}{4cm} + % Consumed by the transaction (can't be used again) + Transaction + % \end{minipage} + }; + \draw[<-,in=-80,out=180] (consumedCaption) to (consumedOne); + \draw[<-,in=-80,out=110] (consumedCaption) to (consumedTwo); + \draw[<-,in=-90,out=90] (consumedCaption) to (consumedThree); + \draw[->,in=-90,out=0] (consumedCaption) to (createdCaption); + \node[fit=(unconsumed),pin={[font=\normalsize]110:{ + Left unconsumed + }}] () {}; + \end{scope} + } + ] + % |[alias=a,note]| \& + \dots \& + |[account]| \& + |[note,fill=green,alias=consumedOne]| \& + |[note]| \& + |[note]| \& + |[account,fill=green,alias=consumedTwo]| \& + |[note]| \& + |[note]| \& + |[note]| \& + |[account]| \& + |[note,fill=green,alias=consumedThree]| \& + |[note,fill=green,alias=unconsumed]| \& + |[note]| \& + |[account,alias=lastTransLeft,fill=green]| \& + |[note,fill=red!30]| \& + |[note,fill=yellow!30]| \& + |[note,fill=blue!30,alias=lastTransRight]| \& + \\ + \end{tikzcd} + + \noindent + \begin{minipage}{15cm} + A transaction via which \colorbox{green}{Alice} creates three new + notes for \colorbox{red!30}{Bob}, \colorbox{yellow!30}{Carol}, + \colorbox{blue!30}{Dave}. Doing that, she consumes her old account + \tikz[baseline=-0.5ex] \node[account,minimum size=2mm,fill=green] () {}; + and two (but not all) of the notes + \tikz[baseline=-0.5ex] \node[note,minimum size=2mm,fill=green] () {}; + she owned before. For this example, we use \texttt{OUTPUT} = 3. + \end{minipage} +\end{varwidth} +\end{document} From 2036cc684c69186fbb9e1bb2e4f3dd58a4752e47 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Wed, 12 Jul 2023 14:57:20 +0200 Subject: [PATCH 09/30] add gitignore for temporary files generated by latex --- docs/new-docs/diagrams/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 docs/new-docs/diagrams/.gitignore diff --git a/docs/new-docs/diagrams/.gitignore b/docs/new-docs/diagrams/.gitignore new file mode 100644 index 0000000..d6d9a7a --- /dev/null +++ b/docs/new-docs/diagrams/.gitignore @@ -0,0 +1,2 @@ +*/* +!*/.tex From b2895d60c1f829e47869c58234f704df01bf72d6 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Wed, 19 Jul 2023 16:13:13 +0200 Subject: [PATCH 10/30] update --- docs/new-docs/03-transaction.md | 39 ++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index 7f31605..e6149ac 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -10,7 +10,7 @@ accounts of other users (with keys different from $\sigma$). Consumed account and notes can not be used again. There may exist no more than one account associated with a given spending key -$\sigma$. +$\sigma$ at any single moment. :::tip @@ -21,20 +21,49 @@ instantiations of the same account, and transaction as modifying this account ::: -## Accounts and Notes +## Sequence of Accounts and Notes ZeroPool organizes all accounts and notes in a long, evergrowing sequence. Each new transaction appends one account and `OUTPUT` notes to this sequence. We only append values to the sequence via transactions, and never delete or modify values that were added before. +Since every transaction creates exactly one account and `OUTPUT` notes, the +sequence will contain them exactly in this order: each $(\texttt{OUTPUT}+1)$-th +element is an account, and everything in-between is notes. + ![](diagrams/transaction-acting-on-a-list.png) +Consider the illustration above. Accounts are drawn as boxes and notes as +circles. We chose `OUTPUT` = 3 here (in practice `OUTPUT` will be much larger), +and the white accounts and notes belong to unspecified users (different from +Alice). + +It shows how the sequence of accounts and notes changes when a transaction +happens. In this example, user Alice transfers some tokens to three other +users. Doing so, she consumers her (always unique, identified by her spending +key $\sigma$) account (first green box) and some notes (green circles), and +transfers the tokens held by these to her new account (the second green box) +and three new notes which will belong to the recepient accounts. + +The ordering of notes that Alice's transation consumes with respect to her +account is not important, i.e. the consumed notes can be located both to the +left or to the right of the account in the sequence. But with respect to each +other the notes are always consumed in the order in which they appear in the +sequence. If you own notes X, Y, Z that go in this order and you decide to +consume only X and Z, ZeroPool will treat Y as consumed too and forever lock +the tokens it's holding. Alice's account associated with her spending key +$\sigma$ is unique, so there's only one account that can serve as input to the +transaction that Alice performs. + :::info -Logically, it's best to see this sequence as two separate sequences, one for -accounts and one for notes. +Since the ordering between accounts and notes is not important for the +transaction, logically, it may be convenient to see this sequence as two +separate sequences merged together, one for accounts and one for notes. ::: -## Merkle Tree +## Embedding Sequence in Merkle Tree + +We use Merkle Tree to maintain the state of accounts and notes sequence From 9686b04a454edf26b40b17bb97495399dacaf9fa Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 21 Jul 2023 10:07:11 +0200 Subject: [PATCH 11/30] Changes to section 3 --- docs/new-docs/03-transaction.md | 16 +++++- docs/new-docs/diagrams/Makefile | 1 + docs/new-docs/diagrams/zeropool-keys.png | Bin 0 -> 51829 bytes docs/new-docs/diagrams/zeropool-keys/main.tex | 52 ++++++++++++++++++ 4 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 docs/new-docs/diagrams/zeropool-keys.png create mode 100644 docs/new-docs/diagrams/zeropool-keys/main.tex diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index e6149ac..ec0c40e 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -21,6 +21,10 @@ instantiations of the same account, and transaction as modifying this account ::: +## Keys + +![ZeroPool Keys Diagram](diagrams/zeropool-keys.png) + ## Sequence of Accounts and Notes ZeroPool organizes all accounts and notes in a long, evergrowing sequence. Each @@ -49,7 +53,7 @@ and three new notes which will belong to the recepient accounts. The ordering of notes that Alice's transation consumes with respect to her account is not important, i.e. the consumed notes can be located both to the left or to the right of the account in the sequence. But with respect to each -other the notes are always consumed in the order in which they appear in the +other, the notes are always consumed in the order in which they appear in the sequence. If you own notes X, Y, Z that go in this order and you decide to consume only X and Z, ZeroPool will treat Y as consumed too and forever lock the tokens it's holding. Alice's account associated with her spending key @@ -64,6 +68,12 @@ separate sequences merged together, one for accounts and one for notes. ::: -## Embedding Sequence in Merkle Tree +### Account + +### Note + +## Merkle Tree Commitment -We use Merkle Tree to maintain the state of accounts and notes sequence +ZeroPool smart-contract does not store the whole sequence of nodes and +accounts, but instead only holds the (publicly known) commitment to it. We use +Merkle Tree diff --git a/docs/new-docs/diagrams/Makefile b/docs/new-docs/diagrams/Makefile index 1d85019..f3873fa 100644 --- a/docs/new-docs/diagrams/Makefile +++ b/docs/new-docs/diagrams/Makefile @@ -1,6 +1,7 @@ .PHONY: all all: \ + zeropool-keys.png \ merkle-tree-illustration.png \ transaction-acting-on-a-list.png diff --git a/docs/new-docs/diagrams/zeropool-keys.png b/docs/new-docs/diagrams/zeropool-keys.png new file mode 100644 index 0000000000000000000000000000000000000000..42592d5d82ef1746d2579eee8925e88ef1afcfdd GIT binary patch literal 51829 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 bmxL5MHwT}}Gp*mik3lk$3KDrQ-+uZ(13+@A literal 0 HcmV?d00001 diff --git a/docs/new-docs/diagrams/zeropool-keys/main.tex b/docs/new-docs/diagrams/zeropool-keys/main.tex new file mode 100644 index 0000000..dc6daf3 --- /dev/null +++ b/docs/new-docs/diagrams/zeropool-keys/main.tex @@ -0,0 +1,52 @@ +\documentclass[convert={outfile=\jobname.png}]{standalone} +\usepackage{varwidth} +\usepackage{tikz} +\usepackage{xcolor} +\usepackage{tikz-cd} +\usetikzlibrary{graphs,graphdrawing,arrows.meta} +\usetikzlibrary{arrows.meta, positioning, quotes, calc, backgrounds, decorations.pathreplacing} +\usetikzlibrary{cd} +\usetikzlibrary{fit} +\tikzset + { filled/.style={fill=white}, + titledBox/.style n args = {2}{draw, semithick, dashed, rounded corners, + inner xsep=1mm, inner ysep=3mm, + % + label={[name=#1,draw, fill=white, anchor=center]above:#2} + }, + pinnedBox/.style n args = {2}{draw, semithick, dashed, rounded corners, + inner xsep=1mm, inner ysep=3mm, + % + pin={[pin distance=2cm,fill=white,anchor=center,text width=2.7cm,font=\small]#1:#2} + }, + keyNode/.style = { + text width=2.5cm, + }, + } +\begin{document} +% \begin{varwidth}{25cm} + \begin{tikzpicture} + \node[keyNode] (spending) {Spending key $\sigma$}; + \node[keyNode,below=of spending] (verifier) {Verifier key $A$}; + \node[keyNode,below=of verifier] (interm) {Intermediate key $\eta$}; + \draw[->] (spending) to (verifier); + \draw[->] (verifier) to (interm); + + \node[keyNode,below left=2cm and 0.2cm of interm] (recieving) {Receiving key}; + \node[keyNode,below=of recieving] (outgoing) {Outgoing key}; + \draw[->,out=-90,in=90] (interm) to (recieving); + \draw[->] (recieving) to (outgoing); + + \node[keyNode,below right=2cm and 0.2cm of interm] (address) {Anonymous address $(d, P_d)$}; + \draw[->,out=-90,in=90] (interm) to (address); + + \node[fit=(spending)(interm),pinnedBox={30}{Private, genedated once per user}] {}; + \node[fit=(recieving)(outgoing),pinnedBox={200}{Freshly sampled for each transaction}] {}; + \node[fit=(address),pinnedBox={-70}{Freshly sampled on demand, can't be tracked back to user's identity}] {}; + \end{tikzpicture} + + % \noindent + % \begin{minipage}{15cm} + % \end{minipage} +% \end{varwidth} +\end{document} From 011855fb454b862fc8bf475d8eddd73f77e23c09 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 21 Jul 2023 10:07:22 +0200 Subject: [PATCH 12/30] bug in gitignore --- docs/new-docs/diagrams/.gitignore | 2 +- .../diagrams/merkle-tree-illustration.png | Bin 28044 -> 28044 bytes .../diagrams/transaction-acting-on-a-list.png | Bin 69184 -> 69184 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/new-docs/diagrams/.gitignore b/docs/new-docs/diagrams/.gitignore index d6d9a7a..f3df2e9 100644 --- a/docs/new-docs/diagrams/.gitignore +++ b/docs/new-docs/diagrams/.gitignore @@ -1,2 +1,2 @@ */* -!*/.tex +!*/*.tex diff --git a/docs/new-docs/diagrams/merkle-tree-illustration.png b/docs/new-docs/diagrams/merkle-tree-illustration.png index e75d49668c765310caaa11eb4fee37f79c08e5dd..1e1735967fa9e2099b1f1d5d8ea8b8c9410d673d 100644 GIT binary patch delta 101 zcmeCV&De9Bal-;84iO)o{$+Avt~LN>a33xJ diff --git a/docs/new-docs/diagrams/transaction-acting-on-a-list.png b/docs/new-docs/diagrams/transaction-acting-on-a-list.png index 5b255ab6fdc9ee5c491fec9effc5ed8a4c963289..9c4da9c6afc16afe81687569194de2521eaec6b3 100644 GIT binary patch delta 92 zcmX>whvmQ=mWC~ivw2003_=Votc)$J3@x<{46F8x delta 92 zcmX>whvmQ=mWC~ivw1}gjY15KtV~U;jLozS46F~Xx`a@nu Qc}yuomDsfDqI`_n0H8=0m;e9( From c458f1b5e205c3beabfd306297731e718f9b2215 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 21 Jul 2023 14:37:32 +0200 Subject: [PATCH 13/30] Update diagrams --- .../diagrams/transaction-acting-on-a-list.png | Bin 69184 -> 69271 bytes .../transaction-acting-on-a-list/main.tex | 2 +- docs/new-docs/diagrams/zeropool-keys.png | Bin 51829 -> 47307 bytes docs/new-docs/diagrams/zeropool-keys/main.tex | 4 ++-- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/new-docs/diagrams/transaction-acting-on-a-list.png b/docs/new-docs/diagrams/transaction-acting-on-a-list.png index 9c4da9c6afc16afe81687569194de2521eaec6b3..c91263d77f442bc2126aa0cfe152af1a0d03250f 100644 GIT binary patch delta 37516 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%0D)~}lvsPZ%npSjL{YeoZ>JG+ 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 delta 37513 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 diff --git a/docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex b/docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex index 0f91f66..8d42537 100644 --- a/docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex +++ b/docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex @@ -22,7 +22,7 @@ nodes in empty cells, execute at end picture={ \begin{scope}[on background layer] - \node[rectangle,draw,dotted,fit=(lastTransLeft)(lastTransRight),rounded corners=0.2cm,inner sep=2mm,outer sep=1pt,pin={[font=\normalsize]90:{ + \node[rectangle,draw,dashed,fit=(lastTransLeft)(lastTransRight),rounded corners=0.2cm,inner sep=2mm,outer sep=1pt,pin={[font=\normalsize]90:{ Created by the transaction }}] (createdCaption) {}; \node[below right=3cm and 1cm of consumedThree] (consumedCaption) { diff --git a/docs/new-docs/diagrams/zeropool-keys.png b/docs/new-docs/diagrams/zeropool-keys.png index 42592d5d82ef1746d2579eee8925e88ef1afcfdd..b8d75df51f98353b817eab7601a490f115831d8f 100644 GIT binary patch literal 47307 zcmafb1yoes+CPePNk}(CNrNDbGy_O0CDI}-Fm$TaNDtj2gWyX^H>eClgAS#nk`CP+ z|1 z?8_LGkKjp@x#B77OFreBSzm6W$~DM6NqK$ZZSld$d|d-h2f~x7K1CMbvk;Q2tBW(I zqHn)p_f7{6G!TP>8@{eaGFK`2m*g@DPNyUZ-w&eD_hsKrdR(2Wvm}KMJA}WH8ms7T zZfeS1J0#P9LCmD+u-~&q-UU%dL3l5pk!wuwF5au!ycls=c}*?jrm)Q6lc|?~PTq-a z*(JgvGSyU^AB6C2U06$?)eAq9++(d`(J?x#*b!0TBM@f0%$3QF;K5Y!UcOvpErHwtvxl%q= z(dQPYeGt?hd@Z7n@{K~2oqcW<2d$R9wxN8+AAiU@D4^e)!Gq?YQ(jLl(ZYX2YMF$g zOqYi@4CfL{3kF;~295pRHul=0C8b}o|?6Cm< zO<*7xMV7HMOR+*Al^FqHGp4eor+%R9jhl?fo7$nJ9apO^IKY#oT z?2;|$OfP@m$wlcQ3EYlK&h{g>?E1Hu&B8Xuzn-bpKaZ*hje=hls!zT=nDI+NZA2iVdXqKk@{;2?Fw5;Tnlt- zT8d{A`}xwG9ytv$T$X*&FVHX(>tFdr!{wMdo(Q)EK&_HkWuq z#z!VEC)?^cAC;&4=pH_$P@nM_wxuubpQ_Oqkl&&2i$mpf^Vf4Xp(g_mEbN=-cGm3! zL^}BMtfr@9p>A#+;#} zy$??Ni+iy(=q{+e4DqF*aC&;GeK+$Uk9vxuI_KeeID{Yx$qnqsj%8JmUP-Qw*v3-idG+Vc=b_xicj_6ZPB{mf{9hZqK;Leg5 zC@~GP*=cMJJYQxE+n|!qPueQc9nd{2W7%@8QvZHFBziG`i3_<&zXz&NbUbu77wolj zT=xB5)7f%?sHos};kqhWu0KAD=a;Ha3!6hD#3TY|n2t;pW~T}c-W3auoKA$~#Q}kd z>7nLOEFF=7m13L3cG0hwB9&fy!D>p_RO&gCQq~Bj&ZUpZSt7z_GVKfUYaT~F@%907 zm>`BCFDJF7b1Pf&m{a|@`ssn85QEATkMDFHbZYFGTjRn@8MmGccj9r$&6<$b2IVZ@ zjzaAk%QHs_K|Jn~bJ%Q&OvqrV@e6+|f`gi&&LhQ-D%)xarO1j@$d{d+xIvG7 zw{JG91|YUO(0R@32u*%0XWxAFCy2rlBV?agq<@@vwz8u(;wt0h)8+^<-q#3VCP);; zTFuiFdqUtR9y_O|{DpfuEvea1Fk_cv4sykp zMJ!>&#QP}p&4{Fhd9N>X@y>^-xsmwbhrVU3xvDnRPqvOZ)2h}tW!?-s^RW#Z9}3Tz zNS$y}CuNkEfn?u+8Ox^^y#0?nD{&%M+Pbn3pB0BE(}-qPdqy_vv=?e+vLNNP@*yM} zr9F@P8s32U*=H6eeV5MqARP-$_2Rj5;3mw+!b6*JU*2we({{J~On2_Y`KleIp&J$i zwby2^ihgZ^tPNbZqO+bzR-uQQ4%pJ?*B|av)ofP!YumI_L{7fQQL|y*YZL8%?!V>J zpH?X_6)nFdxAv^5cKG6HZ^sq=?B#IhwY-`2d`A!r_N%t>}(Bk?-NlE^hn_LmB|P6?7v=cX)Jm_nRTmm zlimo=Jg$#LZp|8y`>TMW+GqWd7yIgckhz7EPq9-(Cy|&92Z?aLXI)>N2kF3zl+*tx zzW6enhG_R#kc&$?TonfA8)RomP|EulD4ls@LIGyHYpJdg)NWDA%AcZq zp0O@P*d(>>1E3U(tSpYfzOO?zG{(=8@d?0BOc2s9dn$|g4)Ft#nNY=tYUvXG<`FeAC_pKwO< zoYqsT?%RIr&zA&EBHw`B6U$nqH?~EBJ~B2(pQn-A_S5#wrw!8F!;1(Z$rJ z$2UBvu|p5=CKJP@4D&h@E?2vzXd6E-2j)KM+YeLS_k1sFh|(z#!xdeg5jdRzHqcw) zH#lqjI>?>rH#Bt<*D^1Vc#9tHMn=qaury^_XV9|1|kTb8hhTpvf4eE<+_(_`Z0XrTXeg{xoznu}nX<@PWO0NeSGlS_=TpG?ue@NCuV*nfazEgHK9-IHs7O>}ZvGK#KzF=u&M7FfQ|IsK;W32&x*}O4K zD@yV9}K-L*6sxC(88;2wv`+&C6yz4wb zyt@4g^7`eidA^!)DR17aZ0e5GbuVep9r}JAZ=BIn8N*Q!;&5#2Sen&fb_DguHB$5W06D`F-ZdUySQ8 zszz6KAxz^*%UnuNYg}>)Rbblwcv2z-G*&|Md4d54dbVyuLx#JeLne^%M@gV@{y6*d zx@p{C8d9W6Z^rNCI)T*i-D)$EcMrh76DE!e- z_1C%xgj`+~k=2Xk$I}{2) z>)Q1KTK7iV*19w;IyD*QYH>S`p$shaWV3)POY_chO;y;eyPi->QX*}Qkn^#BY8Q0^KX}5!usfN+XU#bjCv=p9^cuZZ<6paaF?)LO7CBI@$5SbtY@u zEEXQZ%N0p3bwAq{aU@jNXoYKM-3IEP#cw;~A=Lb7%_le<2AM#tb>FT|jGA`O!}t%c zwFf!(4%_T@)P!`!>ZhJm{@3;lmZw~vj_T`f>fvMy4|~Ro;V0G4w$4ELL6EC8jW0Pl zQ+W@3H9olB+S{~@iqohFQ=NWv<@Y5+LoHrJU)oS7nggBN*kdt4n;B`-@j=gqlAeNf z?Ug2jA4+c{S}A{ra`0_U?n`vCAtF45Ta3(RoQD5S8_hCyazy%Ipvx@UM?* zPT-E0bx;`o$>y^zzd0QEg|Y=h!1&q>b=wg`g}5urs=0Aiyto*vrTGW0D<$oL3}4Q( zTCaobU@cc-5Z?h5XW?~x(e#NlEVr8tP4iJgpMp4}m69JhGdg8ib=6_AfiPs9C48=L zQU$#2wpH_bVx}iRX__~nA=o#eJ`zU^*P3cKF$%`};tG8n$k2T|O8dK<%JX4^m>8cR z{|VcwY4VfV(2i3Y-2utj2W((K#}m|)>1>WdY-swsmf5Ph-|juR(x6Knm=|dH6m~;O z`4X|?;9Ji)6{L$DE0J|U793I9Y0`%sNLT->T8Oy*m-qUFGLVioKewiTUvRqLxtDvf zKuRL$PjlDOw%c!Me4|iMK4`W*THI0Dxu?A@+AB;l=4eM^7TF>htN#2jp2YXTm(%GK zyfm|%k63RKBVnhX)aI9St%$v4U0rQ7)s~NprF9R1WJ-0=IFi0>ziEn)b0gun{o$|$ z$*6Pqn;2n^sP-fjn>Avv_>{K3ZD-fL!dP3UYDAJq8F#TD!1>dq%7?fQVV+W7&Ohqv z%$?1~hqfztWQN#wbmLGu(X$qQ?|J{wm{<%|VNn0lKV!#2UZLc#qjswEQCh^e{> z-lXp}0sDJHMcbt2W$p*Iz)@w++)9a#ql?~VlPmgFa4p(hCPw%ZNVL@qSk{JNJ- z0w3C28GkZAwV{LB2LV_v?sW!2R=)E5V&ipEH|>f@fQ!J983nYR$$h+@FegtU6hlUG|uVf7YSaXhn()X6CD7z56ZO3VW95irt zSmPBuzjAP~N$gt1U2EUEzh1L`X=|*_e-sN19{#==*jz2AukV&N7~;$w`XuixZE`tl zAfLFRFwfU>n>o#psDy=sa@ zwWN%)TiyQJ?18ts(!W!y)7MCvY+i9vGn`Ew`R6UXC9-~PBDe?M{pBHhK(*<`f8S_`c$4LFT_B}43R26KgT~-op#PC^QtJKj9nRR2>J(R;<$8MHEV(KDx)`^a8 z``kxY)U&TbXCo8Vdch#&fAl1Y+jBQn&ILymw^jJ}rG8R_cNBavWdN$OoU$P=e-K;9 zgd;gqnN}4zls*`o?5!xb`{m~box%~4qj=p)@H0Y5mDzwZ4$q=S{y_Xp=iY4Eo!SUeD);XBJ8`Z zXL$MHZ)l!o80;YW18U8X@YLUR3skA@8+%PMlMZSi3zIkQ2QT}-(zNK&_A2bfF3xyV zx(W6BrEkz70}k6-FZ}n!+bx~U&+_;7i{5V^=H~BJ(?1ka-~zIQ!|A7PGkNafAKdT? zCs=Fgm`3U(Qx3+X4k9`%L`0^N_^b1NAAj4c?Yd{S>G09mWbh~&>aUBHUm>@e@(+zL z?b=^1euyegmHr(2#?e^lxR%ea;&7j%2>x!Gk7tRvgh$?Z<>0e?^5%2g#kIOH^*6t& zgk+Npc2IM=yT2>9UmGm=*K92*4#V{HM2`F9heWuB0&QlUlHk^Yk)8{~qOli%MyUX+1H*!a-w( zUEw0Tpk37siG-48ik-saw<+@cJ__!%_0+fg)o^U5U8)fKzMD+FCbcbp*Ppa0gx)=6 zaKvovbeN?8sIP_{-)5QjCAKcf5M5oZ7JaYH8>)IDI8Sn9CmZEo((Fo=ms$N&V)p8R zMoS?Z!K0E4v3OF;9|hBNMiR;smx0=0rn)5dor9YD>!sx`$9qc|CN3(|3kt(-Q%fdC zIqb)uG4ey{B8#SICF(6lzSDK@M0Px;_obQczP+`ut{(q>Ig;Mwg{{W4fIXIWfYQvZ z9tH1IF|6O2{*K?r?$r;Q9w7>UF+Ut{x%neD>mVeg+b?hU*4Tl;v@9yTL7sdrG+g=+ ziX6mzHed~8G;96r418n_{R5l~l*(IT1^ZKkf>T5*<+CWkm7{9!gq1d$H3pZ~H?4HPDLRWIp2p7)L!G(MB z0uu&#KB1XNM;97)%>~1p3Y=^Sp7_ThN6B?B_EF_}q83oywWH(bRqZaEJVPx9?=1tK zP6ZAFWeCAd&K+Kzh5fKpoyoe7#tCd2o3K6_4j+HhC2}dGE+}X?u?t+`w zpH<1l(i!@a)C0x;I(bL~!{9q9Lsl1Y31erHkIK*B@K3M8ol5f;!r8p_$4=1S9y(`GL7SB9G9m!=KPeXp{(t5Zek^gOgWQ`l_ZRCF)D z@+?o$2@I!kMsCwb*E>N?H+`S$CclX=2Zx+lM`Oa#aX`X)7`nAnv_xVw zQ2tbGxMqv54BXRfEQvm4ZolN?Hf46uJk>$SjFHn*0wpr|S}c^4H^_r_bnGIrtxJWD zGBk}NmlKT1?||w)uo4IZ%3u|WEfu{tjV&>r2J&_zn0XaSbjkjtPZH0fyuqZz@qxDU@k5 z#m;BZ>p|dvJ3~ibnZ^3L1LxQ+?lJ(}NUN%7GxIH{y~cDa9K}JTeq0O4W)%z3>o46@ z2Iy`aB~bP&VK|lNOo2~`W37qUs~|Ie*)E*%Vfq|5nJICJX}zv~pRQt>9dJQVnh}3v zaE>YU^`!*+vJqTXHeP@TLzV#px#3;H$V0VjX|<^#fVzR$<#z^5Ed;htPoahTDYuQ> z9!NLFzfhG}{4k~A;%xaEouQv362y4Q)dytm(_>+SPn+-2oMZ-Tm+;VeI=BO>;RK_c zHOhECH2IhPb0MO;Pa<_O^VU+3x7Z&uZ`|O=(7Vb$za|=VO#uq0kN>8{+fxeMDp^um zy%yqpKnj9KE8|H+&5}FoQ7>hejX;8(+?ZhjG10ttq-@iFC1dmqP+ot3KAhnnmyrnA zn}}<|L11@s5r+rQ+<_DmXm6OSXwx+k=L0rVp$+M?M3=HvSwwCnw2^aSCaomLTn)`e zW6TLY@i(7l)Yq31>|91E!0H(8%t)XcqCxi)>g+MCFt7tC1+IY6gu|_A1)U(4>xPpn zuvAjh^;#gb0DFD^c3hM1Ji|2^&Kmq5N-QFEF)G=oCil8)08oxmd7COC<;|;tYkKzA z!Wo~x8wvPb4Y!-SO-_lMG5|;r7}8-#$}h~dS{YQ#9zBzSQX7fBzL1{avv0 zK7>yG56c)uY{cTO{*io!ZEkx1_74VqU=_2ori-** zRk*G6vUYv~Hts)$#YIcqf%b1-JKHR~ji&0*cl+aOjsfv)#7X`_Lf!vdvQ@!ttp6$a z0lLIL6QAlq(j+hPqBBHa{7s^hiZ<;Zt$-ZmK!BuX{yYhoAi3CG(Z~elekF{kMgaqT zgZi@?Ivt-A-HrXR+5Xs#*;z~b@9%TSUtCF6@&AtoL_#3V+!#R^(2!5rA0ww_cH%H0 z11%0X#^~Qn0dkSL^WhIu>J*-Dq4BrI?7_X`81_CV7EsP%nuOgjY@%3bGe6%2DPX_P z{xOsY%85Bu8FKjA%{Cs%Q|p5h(cmd%%HclUgT% zE;96z6kF>+*YYT(rhW-&|BvD6`soUlo|jzXY2kvJn$OrU92ckl;TR~N3}pcQpuhX4 z7-|09RE_Ut<44uKXe|*;0)jCBEs{$;MoR>Bf<6+%_v{O60J<<{{ipBx&vCgL8cKKi z5`+9IMU7Zyv|xhS9JxS!5t}~dS3e={gF9Trwp%?riK1^=Z&1ey2xCmmL2!uwbz#ba zdQ$igl2z?)@F2GI;Z3YEwe?mh^jwk$XBB$voI4`K# z%y40~XP^_6&mBMKep+t33qyU=qA`Lbz$Y-Ayo8E3e5+dQ7My!SJYUYqmdkO*rHPWU zp=8duxoxE(`!YfmsEK0kohf=CLvNhZ=tyBoonW)0;pVGkpvroO zOMp=LOTz(e);@6O;|u%S7T;HVG)ccrnxXlB0GrXN6lG4u6KQh^X)W0GH2>Pwmgb83 zs4>A_gAaLWpwI+F1JsAHM)`{WOAT;aPy84-5xIeZ6**Ih*Yn;-q<4}4zX++J`x?Zq z1iGMvA%4VX)c+Mf=-XPGXsGw~BNi-CICjB3&Qwb3tB&;kZ6Ozud10$h140;~>^pZ2 zZNvV+)0$1h8q55K zCF~GrDx)X5`)O@{l2v-!5xLn!7p&xwop(8pEM;WV&g(1L0F^7=;evG%DKAgtj?Yq) zra@m~s4d+L^3!0%kfv!8(18Q|Cs-a|pmFW8W_G58K3mcbpLpSdJo{;X#gCTNlPOBx znz5|TL=n~-yY7MorxXls%4+ChbBw5rU)wO8zuDHWS)K3cWXp=X3MP_r&HuC$awOlh zd~F+>CMPFm#ATh$pMM^bvZF)Y;dPMg{Ej^+G{`> z@X9R6fqj?EX8`SlJcwyHhlX}B?Ra_J^JeUx@?&9``$(o_qtw+|O}eig$Q^lCyK~f6 z3y5IS&Q<7Df||sQR>R(Psy%9Hnt1}^k_A7hd*~;4Rs1C%f@?6dd)+sU{QQ(nDkQl^ zhr^E8?|Vf|D(1d!bd4J--C}U4OEYEEzm(Re@Y~ee3{wz{bZLJQ_V^(!7MLe+LW(zI ze?ljsEC#5eZ{RK_CbjBd&6b~5*N14$xwg~=7NYZEE6(bk+FLBWjuEhR*EbxDOZQ<+h@`wm{I2apI(Y^+?Y;uKTkgq986KSr^0{f~)~!Nm>zv zCPCii3yt_jHQd3p+55Gv62_>$-+@1ECitZsoPrB-=EIT)7 zLsdNU*vWA>2A#W^p^I{rA69%kff77#{NihhSxI^W_M~sfnoVC2fshJ&@A%#T)Y6~3 zH`>m;n`wC8%iKW!2a!9Q0WK~4Ew^dZI&M>x95NcYr>TgNjs;;|}HDy-& zSE-m2x8uov?Qk$3_-Y_Y@9PViE#rLeISx}D1*82@1JVv7zHw z*2UZ54E-%ja@Zn&3A&VT6+Ba%gGhVi!l0s?qHFG>FIm6i1Qv_s*A42EfAa- zKh{B;`Y(w;o|4hW_ybLwT8@oCYl_S0d_=wP%sU4v_o>Q{TjR;cP!0kPPd5qY4N@ss zqZRVdZkcmoIH8S{;C1^^Qn#7e z$3mN!j_ycibLuE(<8Iqro59u*BN$0(EBcdndj0wA%#{X`Sc50MjUYw{=i*zuBLvri zRYv*ShZh)M(xRZTR=Tk`vkt}ap1xB@?XahOC8sX>lPz9ZSyi)+Lv||^v;kQL*5ExE zlDsU?OWY|IYK-)`1OqW&IuY2v5Byz^`CG0!S~{jrM)iY-lctd(2sX;M#9b5dAi<1n ziN9K>>uBeh*{a-^?qGIE>H6d5UGR+pRdRD%EeV}K z;_kY@XhRP4>NaE*Wyv$Q$c^tl^|RLOq7>4ed(|VV)@5%5b^caicDb^*YH7@T)cmMl zvaX(KO=C7VVoJRxBxN}JEO1LBAm4guCUGzg8h~+_hRTwZEO>jHfti~e+f!qJ`2 zu*PU#z5-VJ&x;Kcph#XR#7_q$Y4vd~&53tN{X&{T^KMh&g8JKVuLCmbm;Vm_;2Z$z zfC%7z8hAVI;BXys=zh$-ej!pv(7DJ=rj5MiJXQF{QWQlA*% z<&A0l2m)OQ0+dc3f`>alUe)nFPvCei~RngT_SJ`{pA0U zLCg(dTNgzQjCDM|=0a!xi<-3Ue*~X@M2BER^IJfVt>`ph@x4H*^Y7etFW#mGG9Usv z0z@X~b=qu}nsgJX@(17kn=&v^83w2H0#18!{pHNTCS82(5Z&|nN@+sCB;lE?gyff=*Qo8ZFWw$(sh@VAOEX7fkPC=sCU1KYP% zQoHH#?C+DK_V6&Ed8+mQm5nftld;cu1h|*~7RIP*ovu}JoSFJxNcx}DN`Hfu8Z%^H zp&_1rtP5I)Ic@R()jg1cfxz8%Kdk*boer< zf;P(;sb!CFk1A>?rspQZFr{&=<2Rs#8moaJ1?MKG@jz$3-B= zGBMEg86V3M52oC%N*c|{{Y%>NdOa!V|Gw*z%6e8~7&4?;)4~)2r zxb5#RS5dyg`;zYAk!<#nq$V1S5&^KKvUPka;+13L)ZGts4;p6oPWMt$ro97mMTj{$-v45YZ|FNME#d}uQ_TSV zbeqC=@6J)oyPFETvu*0^I9}DM=3?wgP7CcL7J*O|T5^9ji9 zk7q(zgptxzDWCib6=rVtjE^h29X;_LF-rK*61d^3BGrYwHL=DXGKFB38V;u3pWDVwMdd`fT?cLa5;ki)TDll(Y=5}d)$Pz9R_k~}u77ka zU+x_l9%S7c#OD0^$+>~{`l^!qS>6g9kgesSh68x6m_*vK#OHizI)1Tdtsp!+CpLWF zu<|%aQx_9^blz3Um%U#WySQjy(1`amDuA;(d=963m=l5Ko^X@TMKe!F+C@hCw#v=^Mn zh*eO%N13@@BJ^qVPRH4ABCTY>*;brf`^x6VpUge?S1yU@aE@3aN_AQEhcAH%zQ0hf zku$dDQ7}n3DJPx^K-8JgQuO&mtR_Ct7 z&W+(2l40VW-rlrOftC(ALqYf9-Ve>{vPsFw{6~`PyVby14dmWZ>utL7>CjJJfm=&^ zZMUHVyc0)3$K**cLt$l@`n3qMukelSRwkyUV(ZoaXiD(<*`Qn=7F}VYL^%X z#qL-OzvZ6u*QYX@f}`~bEF#6f-Gb5VuGI%mL#p>NuLHPsPaiT`aiiB6a`~)0!qM3Y zz)2w6`Bz{UAMxbmB)zMk%I1rBJO4^k7gjixh1UzFql_>aJGkAab=LtejUJPIxfRaT zS(^TKP{dl6=#%DmmejWI0J8+NR*%6wAh6t%GTmnCcF7Y)3igvpt2(n3VY zS*s*LU;&!7OLOY z1z^gcvR6ZNsa3PZVLirF}e zOfBiS>_DH`>ECc-b}V%pt2&>~KGBeWIZxV9;JT*Imq27s!+#^XA&^nIH;lmE~;`jGAf#ovvjsf$EjUjST(Df$qjI zH`7nO@`DR(4xb*ne0fFA;iiO)rn?Vpl6SE48h7Gg@Z?9djVAdJPRnH>f$@p1in^{- zr9Ls?XN_hKG-@gLrpsmyRTP=hlLSDr$ylLXap0EDoY=FAcv0<4gh+S}?+f*=8O^w7 zfsmv8&@LGKNQx~UZb3-DId9hK#>4Y+N6mKYcFz~js*dl%=);d6tQ#FPw0oNaxv*ks zD-QM7<5>?}uW|R$UsmcE(MDQW7QE12=FQJ)NgkKDx(xw8>vtJPD_hGVK{x<4uoU zXm?h3=>Ix(=+HWM+5$qu0lTWDBTp9QUa9B)TKBEY{TM7WBxTuTkHS$Nx0$!w>ddI~ zPGe)kerB$o?7d?IgRldMs~H)TSJ&>rB<1JH=V_5n-Ik9L9wiz)Upk#X5#bD8dgt|X zEeEMH4zvjKf~Cm;JXhY`=1r&PTlA6y3&SB_+`cKiF(qAruZF5~(t?OI#*M@}#v z07FrK-5~Q|q`zzMSNUa_h4!@9%Q_M4w=Q_);VD7gm$T{0y2Dy)6rAWq4DqWH@oc1- zSoS;tTQw`R3yoGc;T8#9u-;$Zp_Ou!4VQ^@l$FXQU+!rO;9(4HU7(wDZUn0^&e4IC zNw``%wrD!=ZqB2vL+w~3qQBv-4=ZNdgMdA%evxX>me0sOg}Rw5RsF~osgK#c0~Cf1 zipMQODjnXj>0<(O2rJJJ?aha-cVBe zc0XQ9BKGCJq2aIZV%H0{3mO#=E)_FpM#!d6Vg2G=WOF~GjVvpz)5?hayjJeWHZL0o}`awF64f)JOO9~Uhv<^B%tWUr^Gcw<`ByeU{wv#vE&k|>l` z&mcT2D9h2hwm;c~!4jArdB()(0!{zfU!N|i92nAs*O;3WzGVzW?Xk90LQN(NY}gHfbI zn92g28B?gS!Mz6*O3)@swLpFdtHrdT{!_9JKpG%f$CQ?|u6wVwPS)faEB*iFX`5hF zT~H>U6?u0Wf}rm(v_JII72Dydum6SOmk74rC50PIlL$!eH(FVw?+h{1f zti~@bdj!ZZA~)c}UfsNM@sST9&X0UvlLo2CxvdU(mO^noKF|yW1^{PPbQ+Lxa4$^C zw?Rc=kkuI0h);w{L`D>OB6c5|TE)GC)B`pJpLvS+G3)?Z{8cdQ`F<;hAZ!$!$~}knv5po*(W7 zkPH#G85!$eJk*ngjosjfTv?d#s}n#Sjm2cDdQAcOp2ojz#KI-ch(w?yU!gMmL=AC? zn}^HbUTtr^;y~!W_EAn=J;O8X^DfvxW_5JvxLY9C(zx0MM~WNJ+{AT2mjTIuC|ZUNr7qT$_>w5c)41!LdW}s;Ii1E zKk{`@?p6Sm-Zq1@&C;sQ?ee9!xU$(~1T!F^$?&xft9szQ7L<_h=V;Z|A3GCH-JQ=a zE;f~##ps!~$WMk$3A!)5-*pG61buH@5##msKph+e?YZwLtXPUph9Gv6vJ<|aFtW(o zRF!Vc4jpYhPdJYEeS&K8npHt-c7Zdh0$cYg##DU7^||M^qaiCCFn2#hz+$h4DFVF3 zaXEMH+q7iA@_OX;gp<@cc~m8?*KdyY1*UY2k1H!yS^JVTpMGN5UuIyg`hF6P`Bky# z?VY$$c;UXIdlKb)=;g;_#@JeXx_G@XCaln9F)`lIxr*)@QojeRd56uEZt00T)7Di) zXdla^?$)hpW!rBR>i6(ELc0SouY$vdasXR!+(Vd%+E8ryTwXw51+JVYLpFed9XMOU z*z(7{&Tm7okWSSapb1^;V>Xb9LUhcw4HFUgde}IEo1Xze1Jz6}eEw5j`E7N{b@niU ze}~umoRtg7ChjQAquIPEhIw7IR+jVq0J!nOPx^PgV-^FAatfpkW6byO5F`hW6GO$2 zAPHHm=2a~RU>p4)!^Ui++!#7o2(sV;uF+%BxuuHkF+|82+v^7R1RpUV$EXVyauyTG zL{-$Cd>U8aWEDQaaMXP^-@(yP8(RX+W_f@*3Pxc+`$st<9;`9&(zY-_=P;!qs$;L? zeF?TDI>sJ$G(BKty@?sSw}=(Q@NAw4-^x>RlG1E$t|;(A{YZ@x8*O(p)$iha0Q3Q+GCipzKI|~oc3*ewA&PasMdj#b}3(D>p{x`U) z;PjAo2+;bsg!DP%W!{_4d&lLm0mXU41PlKS-4uUX3sbbV(4v8Q}EW6g0(T z(Ehh33{;#J`~D*sn&$0}um?ZQ83*!$ivbS=DbGU@k>*Ym?*)HdpSD?{rSN(W(ryoZ z0Cs7#SNd{~s{Ojg19{3;Wuy5;a`pmIvhW=tg9OP&^c^XoB61Zr0Fl4Z^`PSrwW4JS zk^GA^EGsaO_nL{}{GYhQ8YVA}_I~l($tIzMW0mLVFfsSEDcSr>^iA5m7tDrFqQc)$ zWW3mdPhsH9zF2X64mmH$k%#Bw?nlDx)}MoOP6RRA1j;x6`_sUivt3<3n9Tb|r1sOU zLCc(vK}#5|&kzvjf#DTj$~yUW+&P6!KUv$&*c4B~96dS~kb{3Vgi- zzc)1Pi)IvbexYGpj4!t78j=PH0a6`QkvaloB%3_4ef#PO3V&WQCe-gO+lrJC+fG{w zKPxJf2bC4h33}io-m3Eccn}>B^FvSh+YiF zFqk}1eRPS~4z*@``j&HReZ#`G&#`N-zo8&!K*m-!)C<5MV>-Yvc}de$VvUw) z$<}r=MEOLv@b7o?udEr*2oiz71)m}J_?)qGppHl_F){F|oG!Wc3};2h2RkjVQSPPc zshFn{babV7*tDAOZd?D^p+)sjpR zuX{~^0O9$BT%`w5B$Q6-B3IjiFugXH%a2#OB{>Q zv2IXmO~nTx^QLc~Z%Ge-%BY++@tt8=XW+x=jFqwCYF!$n8sZ5^xXALfZlf~UF+24F zI>w2sw)PprKS#K7pdVUV;n(3`m^`2K^o{gWBV4ua-&(+$<_al8^4vnOoE<}e+0~8W zB{OOYHq#3BHnY-AT1P;l7q9Xk7$Z{;&*~fLn*jPlx+a9oNj3c+`TqKPN{(LG(ry3t z`rFPWKx*@GrA504PuJva^xj$Fq%Rtg9C%K;$kqf?M(1+The9ClO;eLJ*u89_dEwU zVLB`3vXrnBAIP91oC}yf{rvMVPs_@WyyPg@fVzR6EJc}oCLB!Tfs zWm^45cU3)BV`#Wm@ z)_%g6BF0+G^j);JGzQS0lq$kUt%kss;~ktO=8dYaAiWH(88A@}`}}u4KX6_$5PA@r zmMYz1TGEvzCW6Bc4<7-Op1veIa4zA>$oPn@P8adQA)%i9U`L}q)P#T z(Siy{Nq2V)kd%-TVM+-MP$}tVbcZyIk{mtB(R}auJkRGFzt@ky#<_RSPTl8R@xI>I zOMAPAbeaHG`fz|@eR6Q=o=(EbXY3hbl%rBtBbdBH4}4xYd}g%s!8(oslHxueoQ2{B zW>Fg&L&#Cm%WU|2daLpwe6i*AeV}yNI4+LuXIvayMJl@S_+^^2Q+hVgQGSgQ4e%49 zTuE@Fs|>xKl5?XKZ303N<^z%Y9Q_W}8=kH9DQR}{?}a8GywFtY84V~=0GusijB zDs^>&2G1jL-vEmty_W!`t8istO%8__NDe)Wq5YNZ_WM4$;Y81Y!>=gD7bBmdKzAzE zRRcVV)W&W@4HT0^t)GuL)pF6}EPFfYt>^2ee(NKMB*ugTH`6o!-x=WoF|wvM>k$Dy zK!xZ2nxH)MC$r*ZdLz8z7zL=!^MK6GhmTy=da`v#RMsWu*Azs7dcw zJR8JmNy_XkwN{_(!lAysL-yc)$h7BFMu&c%Y~t&|SZ&vHyRCX)hzCy|=d29|$HRrZ z#>`{5?oxq{^h=UC0gGPan`F30>0(CsGTyKep?;7xcirb zclD6Nl5x@>1>Em{1;E}_abH7pz#9ctTJ^i@V0-ro4Yxm0 zU}yrao_jXoeLK)m4nuR2RY?%@#$BsXG5kQu)J<5S+Sm}syU2VY$k`XiM=Cau^=~N* zz)vX31o47rYo2C;p{M>|_EkaGWngzn-~p?KEi-;4V1;Yq;rRv$K8h4z*;FQLo-&Px z=TLf~UiHAd@3lT@zuKXp=bt-$@4cxQ>W^ajAxHo0-o?j|Os0js_nWK?dml4NH+0gR z;@szbFr+B~~uGOxF?no^i@z!UYvof?)2Pn8| z?em#a(jcniMH}lrpZ}f%kLR6x zuq!v!i!K_KC6Gmm0P~JI6r-+I%z0*yicvaQULB(7byn|$R!mmMwkn`72uD4bAPyd5 z<&)U{Mb1oeiaioJ9Id=8f=G*OPSFLHEK}vpH;;{1_{ixF{A?VS>L)8p=kC31P+{Q1OVICI%k%CsgrmiyAz#Q7)5Ka! zz1+c^8w-85?EJ{^B#bF$xzWNUY2Tl5k+(opovh`CV_@I!XEfTqQ z3q5~!{GxgqXKkq}ndSGzLYPLWm$N|JGJJ+xO>-rc)ox$8)E5fDs_U_WF zr&W#=dxQv6Pi2a&t@FG6t=zTzYv%ltOj%VvkOw$kWZ(?a*fY+F&@bERVU|Znl=r5c zbPuLsHB4+su&?X{v$C(m0#6}C5)$9jEjgOe9ZHITH%%y5VddB})9gl&hL_D~#p*eY zf&>i+h(rQzzI*)oSAbNKYes-i^+C!Kyy0%Db|7I}Z>~D#QOX1OT8GZswcqfWb@Ebr zTd0nCx!F2E&N5)@a8cF=T|fl=Rk$a=S$0#Zww=nzhFC`x@SbZ9#aC07I}X`5`4F{R=RccC4@bq5+Y3Y@07nzlE%i8$B3y`?QCCGroxHsygb{G$%k9g>PTp@ zN@02--tRrDlLK;sY57i0lYY5c&tk(2eK~3cN$nS!x(2}6fs%3_3Jpy}X?j$1N9cue^;0Db z^R2KT?{h8*zKf9U5M;&&?H1L4;(vj1M%pfk&hJGq^4&cc7w_PE ztK1oUexl>=90o)xEKya*lI-#B>c#UD<0cEThCk{58(>i{S`{4^6Dgi!H+#~|O(yw3gi*XT1+LPszkXbbK?q% z*KF8;`SLn3*1ySNNy@7^D3IZVLEy1T=ZCh}vFtAy!zlw=>?=Fvp`($}ezpQv_|LBa*v9HwSKh+JTsQzh|6(b1xCcv@MX}0zvtP z{7h2EWVkw`s`WZH__{qY9{%xM&0HQU*NZuc0%r~w1zG)hG zjx_z>u`|dxtVfJA?p4Ch+Vrf1y~}$D>7bSUls6Y4r%oKp8H5Krb^jW z{y9-_g==XEh1q)^@`>R~dtBDx)=;|`Glo3$@RhJQ!z=&yjCfb3vvYhgiw?`ljQ9_E zvk0v2TgpCIQ}wx0#y#ghb_sPwe0WDg9&nTS#%)bJUMgm@CB5*Da0n*T?nA!|IYW&J z5fLn-g}o4r`}J%QN}E4sXFrl6-(5E-6NU|_a<^s{{=5%P5kKnrW^EKijvjyN47 zs}{*#h|hH>QSZlJhf~{`EooS%!pk#@-$gGwZtO>7&P9OfhV8gbP0GvFz4-+!kd=AB zMl&x_8B!P&>YR2=;-i-lt{uDEdw1YU~NLsT{SNHYzaJK|OKwwYB zhBAR6>A};klqRHFgz^F`Mm$@K?oasJ?>lkdxwOoBWYRjr1rnA}F$k}k***#bkY%DfCsC%QP zRFCf!p0A6rL}(?uKOk_skQ_dHS3d7PK;96yI8Ma57N-?o7{ zBba`X6LrH%ACcgjg%fpCX&=aU8fQkmdv$H+Q(}LQ6BlCTj-R1fff}C*#lIaNcGwu* zJY?`IJn5p1@KD2$4ZTNzK{|CS1+6u%5@38E?p#&Bp0>pxpnLRDyWZ56rT6eHp1_Tp z);)tiG@QpZpq!W!x&`&nOp5Yra63%EbOSFHue<_hHCU3Lb=pf~<>kwULI!5`hYyG5 zWb$8f#tr#wUL8bkrbClnzAP!pj6qEz68M<+8+?;46;+3H`&k?H)u zBUtJ`Zy)VNAklyPt>BU;!O4j!M=JixM#6)xerU{3m66NiK5J&aUGW9_GmamX<@QIu z<}_9dA2wsEWZPlZs_uR=EQ6E9WSNouRELV~tK&|U54o3Z`4|^JclQD8H(uFd<{I@f z>xM9HKlRp}%OGk>UM&ok8mRv1TgIVUMg!h9k zsp>U-s1Qgv1*v~HfAG^t@*#7zJ}3~aFWgogC}Qj0#^Pa}GVTBBdYaNO_#`%xgy^e@d6cuCx}V(HJ#QYzt64(A|a} zc-E}9zT#uacui;3=RoUJi;LGUH&lVlqN{9J-*7Z6N!RVI1pO|Muq^r5yW5yQm;a86 z@X-Ryt?;X~v-}_XIDK8uoGVdH`UejbS7z-!7v~Z7OTkp}4h=f1ub-y4^YFWH!`dNU zd#8JF(Q|`eu}Yrunf&o#`=b=S5kS}*T4YPX$0@^Ul(#9$A$s0w0c8YS-E${Gi#L=$ zA9IbS>|B^uGC3dYUb7m;&)oF{r7JMUqkVq(=& z?{?$MKGWtBfuSMsiB5*$RjAS@{_ZXpi?zX_8=zm4hhARtnLnPo)3);Z-tn9O-?&vylVSy|Fqo zDQOOupnlqP(Laczru!#@U4#KZ|BL+KBL|iu}RjpJg^B34O&wR?1g{M~!d>kX9L;hmKfg z5!1}XcEcZ4j3h6@s~BQ5B*fYTmTD=`&2U=?SWw8?-Z^0cq*5{vM*o|%)ChF`962Pb zrZ8V*;(YSwQ=7UzAvIo>;fG4PXs_!Ymfaa$Ioj};V1fRnl>-Y95UcczdS4W`x9A?g z93&?OgfRTpQ9)=92kub_tTmsj)flJv`;efVA!oTdq^zp4>goy;JM3oEL{St&3aHHT z(@(SLHy95{1E%TMQ9`V<2W6j4gk#eGX0!6IVpu5~{GEYE=@2s^U185+XW=|A<$%<# zIFvA3GVeNlYo`U{HJr_4W9jr<9Iv2}_d=?Sj5bE;`MN0K310IVwEu%9AXKQf`QnXnE4l_OHBm5iazyZovM^%)q?y6C zNfc8Q6KUn!ia*MC8NOT1X4o@X}*Yr_OscyP>o>-jGM7b=@XmMEzN?XBF0dRDE zB$-o+Mf8c9-CZfj`6BZ|xWwZ}nD(L)tLXA;K+-avg*HulT3gw2v>lT+ zr5ha2jCOU-v7d}F`P1||M~y=CUx!pe8Qut&Sj0b96jRBsc{_+OKphS~H!yJbur~go zw!LPiB)7mT*W{Xa67|tIk^X{%9DS?zgV)>oPaNtehqKjyuo5^n>oIUNVc+2Ek*dYZ z`VatC9uiV@=zFaJc*?d3cV0$68uo^TjMo`Z3?$b<7zU-}#(Wq*9bA_*PVHS{f0;$J zk*^Fr@~x7ZQ(sWGzmq($HTLv7Fb631l}0ys(`R>zHDf!^fOQ_0joPP9tYhNps**d* z8zv>DrA$eqexDmpo4`Q_{YKI$(F<>WNuc$&{fD~pR#u2$ULyTe6&@e;qYD+6wjS@8 zOO{BU6DADLnC=jH8yT)#9+AqgIh`}3ET9P|7>vBK`ZOIXEz#d^@${1!w`UWw2pXTD zy{`)1SB1<=vx@mt>-w%l`d?B}?XZn(tl6QZ5|71Sn0P2eN+p^sPEZ% z?o<iabO6jp-SI5u(Q{ z{W^#;@PDArvk)z>lJ2A^(jh3u*GYp@@oe_e2|f8aG^P4}{lR$gwi#9b>+Jd1xHnB& zYdd>I08vz8|M7X&^gL$&xM;G*n4K3bh1!s9>hF}VHU@!u*r>RN$e5xAq74OH@%qq# zewmYmlNtuUwEm1_RHvX40M5wG>18*HUIt)uR2gfzM(sXsYE&A$=kw4m%XO7jwew(q z|J+7TOq0}So-HCcM%*i?*EyYU1oo&z9Pjb> zp>r+0ms>)9oRzm6$O5Dn{Tg+q|M=riwqrX+4$80Rm8#y|D|4Nep4(d|;kB+;I%*}< zc&QpG>GbNRzb)c#e-=JPpVSzpob46pp5OLn5y;M7`u-u=PJX2=SdR)60Ek{Sc(0#uNsn=0zZQS2p}1UmUGYo zIjz%a3sly$7sRa5$L_A&S**;lL6!nHITTjYP(qk6;%+F{1R|ziWUXlr+1ZqlS!V+Qj^CcBpjs&#^P_KS=XjgWpQ zAk3%QSYITq$DCkJd@#|yS5S@4u})=#h8Kdh)j*6AH%$R7?SCk*oh~eX3@%r3xlS>8 zElUSLPykfg{}noQSP)8S3Ip_Stb6)@BA2dy#)sL!!bh;mccx1LUuAiFT#}zhLYLHC z4aU98bLqj<8g9lrwuG{Y>O4%<_nV~bKPWBlFw^_chLesuZ&6PH?z}{Gicf#(d~;(- zx*9Ok5$!RJvZjC+i;rYk^t9bA7tSziK}zxkE7>%p6`cK>IlL@?J-76FlwcHwi68W-q&WFp9Prf zubkck4t2QkBXAPeQkGD*gX+Z_hovp+V?#e1ry;pI^u6U6s?{q@3h*uPj_{+!Kf}Fx z06;vuK;^<2)(b=~-z4(a2H2U71!WyL}X)@Ga3G;3q?qE@6W8;D94%cD>x8Pft+BYr2&FK|Z zrrmWmBbIl2e9Gz1KRm?DDTQ*Bn93IS%2H;IghN|5>opGBScYM)}@_184y^MlPeS(k6XIk=LvC}wWB zB4snw9`DJ&clGP2woca(x)h1X1~?#V_?Z*+?*SNoMX{Wu{+@{|I-jiVMyFO#g4o7> z@;@ZMR%kUy$G1zxP|}>cVhP=Sy^RVq=eBWfN8JTSfnJ!%^Q+6YL=NdD5vn11yuQH3 zilJvmxfr&MtDLF5NwI{f>kMcO`gCS5;DEK{@l~v`poXC1U#`PG$xOKX+SZK_*2la~ z@9ddkRsBMSk9Y3O)k~B=|4VjIQtHACcBIv&k<~e#1$Dxjc9(MyXezrr^gI*FLaNx~ z#dy| z02Ghi9Gsc)T=k`KLipp15CbD z^24JHyFdL(bSqu}xUIt3H$@7?pOy{cwTfq(=JH*KLDinum&*cgw(prrCj8Vj?&jsW zNn2oLiaee(VDAaXKe}_n1u5lQMm2rD0Hwrd~I4s>XPE!vu51#=?_oP|f{1d#Z-eZfKF6 z$f#?#(^7110BC(m!o!hqCwR~DX>ATeacrn41rK<| z91K4k=b;m>o_DcYvWsIO9*;%1XEDtR-h4nna92|>V2kx+cmX3F8{k0Fv-9vxtcaB< zNJbx>9Jn!jCIG;dAStw@eSE871Tg-XdYYRg(bQeUEP(DxDc}#y5M6WJF`~-h3$!!8 zT1RJ!2OqtaoQaxe%@lMQf{7hyU%3I0xZ>3=ft!Lr9Bj$im=!j@X(7jQ=O5cSKWFL7>`{A72-&3 z0cuB#ZGe=0W$beCPALk`4Hy`g94?||h-`xFp|+WES6A#M1H&HZ9hoUXms-#M?GT*5 z#A9}(+3D@Kccr&$k3S9!oEK#qgdK_2yeGNH3Lt*NaCzDMbc&{`%9dHjmn9tR?ieBrQUPMWki?} zP2q8`9uv{&lu&>gr|6px(;p&F^(5Gpy1p8(shc8LENHx`(yP&U7UIVee#1>*cbS_I zsRy!RX#WM&!Jf`L?|)G|9+7K9QlKvb)(t8YDSbONB0`5UF)H3Il;^)Jvn3g+$BiOXV$1+Fi<`2mYhuR2CyK{8)d;@dpY2ae zqPhhSs`Vd}H8eC;#a%V&*Z>9w3nmkFxIxpt7&E}<5(R)y?U=Q>t_2rPIlpLYaywDR ze=MOtAM`q~*h zCv8Cj4Z>f^`%lUXjcNFBT3ay1$!Z0}R7^OIA~dqgg>y8|zkP@Fd>2u$o}5iQAloc1 zF;s7D>y?*bxP)dRC$ka5lERD0tO|@djLgf@gO6qfEba@qvJ|w1E`f=tetu;^+x;OH z8(oz_PE*hLj^TTu>5XrwR@pMiP&W&lejYOF?s@0ZaF&sfN&D7w{P{>gd&FK#ndq|( z^`6=f$IN2mDbpL39+9Y9rYEiR0wbO;cV|8`gUz|l0$b(k3ylZ3gzsxb6;GG#rhYs7 z>4)AsAK7&*`mBb{~-&Db1gsLu9HS;+_yAuxR5%9^Jz4B3ntO<@MwogRig2DeM{-o4nB^ zaUK(a22Lh9*YvHUb0$_Qp-eh)k0OLOBa+-DV#9(% z_1x1ABC+9X@P)T`Gt;hrYIu%)w-j(E5F_TlBpD1cueA?7~R2+Zy#`D2*>vU*rvkBNRelg<-RQb;P!tWsyMEsI!lHnZf*_AYW$BnYdsr}E(#+#FvdN+=YB$@>! ztT-+1c;Bv-?tt&iKgXrvyl0t&nYmg$^uX|MDj6q&D8j4wuoh-|KQ>BdyOMS^fXM(u z5S(nni&d$=&PK*&{d0|T0caL@Bjl_1=a2|{dtqR;!0F}uf&m?(Q0y;^+z{6JP-}$c zp8FpT%ncoU{&v1f+W$Mw?!ttTguh)=??IybzTobY_WOUMnt)goY%^Fm=6~6`&T4ft zu?@?r--}ru=bg5~Di-4MgE%n5>)yfttvtXl0oG2#XhwrT+<%fvJpD_w`LCaB)5Kw^ zDx6Aq9^hH|#(fj;uRJpyD9U{VS#a&FED!zvq3!&KMGqq04x>VtrZr*3;0+v?J^j3a z^1rbwQrJ5UOPeRISBgcg+YFGw#Kana@S6XVX0Kg?zy}cbd;ig1@)^Ue#jwOIiD#{* zrc{4Fy{+qWpF!KT8 zEWza}>sqp=&(xJkX|NNQFO+v2)2`}p?T?mu3tp$ENx6+%qRJHRo#=oKc9?QCI~ z&HKxlLB;KwK-kqRlWfxg>9~lbX&1l@cNVTldvyivV!G#ly%g`~xWv01i{<`*gD+Wx=u zR%R8t5>!UQybF~W&|DDFQcXj_Z#SPj{x5jREATBELQFbyW(RqsUwPFQl_R~ zGBnVYPIP}^P%#AHONH2k_mcVlw9DMQ(jj{?+nL481fj4}UEGcYFoHEN_A>DCug!i3 z;?H&<1rp$W2Q^=-rl)~=Gg5?C5;&6bT|JPIT-RY~0F`N9n&n`5g#u!fM{cLaOIeZw zQ!nnQNn4IX&y5eMGXNHB3y|eT_K2zKcmLRga=dIAf6WZNW47dUYT@GRuo2bNUye-_ zDBjpbvCGi7j_}1^QgAsjzij?JF9HY<(4GbY3Jg2R;vzfVs$M_=>g&?D6fi`h#yS(b z&fhZ!2LCP~{l5!{T>E!L1O8jl#s7DStpJ-GaJV}7rNv89la)*@aNXQcp1t{@s=&fwNd(^p`1S40f{&5qqS2MBz_VKGg;(Xmdxtkl!K|!Vd5k2Qf+n;@N2j*6 zYjYRZRDa$|Cc-oS=*kF_#c<;TV=R4pw?FoQ1p$YaI9^NYT%R$kX;0YDj(zGa(S(Pen) z&fZ16oCUtLS9QlOnl$MH!Kqiqlr)YuO0nc*oK1o(!T|lq$L(cyh|IwAa{%Vi{ho*t z?MU!}nB-}zwx|N4&S@u=qN_jX_#wcpB0;eu$YL9qwO(8h&JbF3J3gRsLwIH3l3coIn*v4{OPPv8wl^rOK+ZeAI+7OTh z1d{O)^UE8-1ab}VaR8jcXF-cI@}IH~Gg25`kn^nV_eCNqLLc}0SUzoGYY624XDvnE zHgnCGkkhB!Q&n#xqWnYq`+N{_!CL~{6|*pDpUMl{H~Y9!Fb^t z$mAla1wrkvmd^&=U`@vabG~D}%d)k;=X!z1ctqPlk2b6%C!S=yD+VY{yON|u zXB_w573RwZ-Xw!Jdt2bORK6+W%Z9IM=zEcK;3cUp5r+~f$)3F_AXny~cC4$Vx0>Vj zsWJY1Sz5HrDU$bFPhvNIuN|sSLm4jlB0em2K)mBJZtKxNZ=`MOQqjvgRQ=Ae_+MH` z;fbemja(4e3#TN@rrAv3wTnJB%vrB0P0)Ig5V$}53d4}oxSQ^Ey*E-G2aujX&KdO2 zVGknfV^eM%x~Zo;bHXmM(7Wl`!_Z1{faC z_yv&xbb#-_KI6_d=oKcc2~vzUP&JTKJHf|eL~Bd<_;e{X%T}^O5`aGgRtEnz=z%QOsyH(7M*Qe0`t3cNgaNwuuz_WX zhMw|A(@}*xM#5%)-ovA9Q#-dzHkZ3+Xuj=h&`)Ny)MRh#Db~MfdN6Tw`{wKOpr%3d z+J{vKn0)0F@ZS>_x?UMzk6?G)*SOOx*J^wD!k&;_tiBUm-AIbboN=k@;`XDTY+-bf zZ`#&B^#tPcorgy!OD&5s1bJXLraP5qn3vbrr66abEOpoekk$DIY-&5Ea6sWcvS~+1 zys|ovQDR*z&dne~z8&1(Q@exjK0PSl7%{YB$68yx@6Ab<0+5@NND0RjX*BQvA;497 zI_N6nZ@$FJM?JB4XEe>Met6$SPD$fj7nYGSfLR=HK@YvKH2hWMd0`<$7KbH>q&Hf& zWV2Qmi~u4G7oFaAgmgFq;+kZc#aE@{H{Zo198_blIfzoL`4*_UJjYkKCm!!$7$&7x zMbX))(ZPofXR^)%@rw!@ae#|iy3{%N4g?toY$zJwwL@1Dq9YCzxhL6emNuw`&{$t^ zV;$j+?o!)?C}i-kW*(rZSpKD%pyjf_09p>vsWHQQI(_dAKKp6xB_Q|>X4TSp6h~A> z=AT4WNIQD+2-CZeF&ff*n*I5<^HGc}{l2Ea?Om^1dD}E*ON?Ddr8A=8qUJY~vaXdq zhe}Z{Ew_~F>7$uJz{xW*&+^Z;Ggb`a_cQzs_CI{?V`%8T0IM+$>~b%{b?M=ncO{&& zkC(eTRMjol$icXrqjtOu&XZ5K_WlwG;9bk59_mDtCaH%pLC)QVo3=~=(ius1#JTOtpM zf4ltXtW^}BP%A1vQM;>8?<+c)HwN%_Fj3W8FC6_8-n(UbDXw-<-=>Qs9WKuZpXiWq zahOqTc{IKC-s&mRufY%|<;$NAfARQVN&-h=`7`Pqxe+z4CZ9xHHg=xx5o&22dWDx) zkTVldRM(g(AB!!9}AE$C6$a&fz0%KArm8}{1Xs~ewnJs(Gwdk;}|%QyOZsdK6LNJc;Hu)j1Z$Pk>E9TmJ_iczwu zLDO}XqQ^~*-Ow3bM_EN*npb=KN2|Y5Qp}dW=$iUui)BTqx_qvkss`Qwu_TeVetPf7 zI>Y9}D8Q;;FJvMQ)=FqN=DS?=~`F;fQb%R`#ZbQPR1EGQo{;~Y8-0YjPMySI7e z@n{t5JTLyup;MwLtDxQ^2mr8{Pxq}|f9z&ytQ2%LUc2nD<@|MyHge^6V|}AwR9Lt5 z>RmiZv@Z`pVmqc$3eaoLWX&vmM06pnlG}vr8NVcHu)&Gglwf>jH^3`o;C|^ZjC^D- z;W0KrNlE9r5gW>lvpbv1avecc;?e@o` zrjJ=~gjIR#knJ;~`VwWuRebX!n7z%|^PkI`+*v!Qh7aYRW^`hmPB-xkLB49r>H}@N zD10~ay}_ZMV7grw`Ga*^uE}__m`GOMrO@D*q?k}DVxfY*M-ie|7jK@86b zD0(Y;~>wc?dac*ejm41u(}xN>f6$>UN7RjRemr8$aydW6uTTz^1pd z8(1+fz5I5ApOB98iL9rNj{)OqWMV#GI$$=_aZQE~`4#Gk0)piW)b_h@fo)hLM~u?v z3nh}~1BqgDrYFgwvKom^miB;vvKiA6PGhTJQXyvJ(cPAm=&~?2g4nAu9S9CLDP#mo zI>fa!-O3_(<*cj^L7B?#WL!2(7OXENaA5GY)Uky1E`ibW)+UR z^;hvprDy$P4F!e^C_~YIbs0#a@4r&BP3pe|XJSY|wg;-UVI@DnFfaq$cZC`aF9XZ( z0*)m@fY1V7E@%>DCt(Z*GF5VtTDg!LlBtY{b+#Y!ms9?&VrNi+cAZ{tC|V=e)dg4~ z={jOaNyyt)@rQwA91zx{lh(`ScGsFGSbG9o+YKv(0{RsRR*u9<;r|uLC;~8aKq>tH z_EC+E`xc-hGTaBWD~`TrBUD}Te=DDniiu?eF{g9?+tg9&^tQcfgEJ%Xt8c;O9V&_L zFXKR86t_UU-3wg7-0UH{Ulf7vjfT=rdNxu1)ilu2k^kuphq~Gl|IA^9gXupS!coUR zKLqsB*FZP(ug18!j8&8X-IE^l;J+bw+rzL=8(tFQc$SQZMKXqa+leXF;RyP%8in8I z4%w0QVa$pQ1Pn6Z^wwoT66{U~Kv3I)H|`#%#)CIrA}S_Wjd1Kh=LF2mk$|oN8L^SH z>_6QqEd>vzRz^xK0f`JCBlu?7|E=SH%SHnd{GU$zKRwI`X|Xycx|jad`ZmlNU7FMK z<8>b-@+4pzDOp8{lHdY%grm=@ZAnp~WHPCVJf8*zQCIrQhe$s%t=6<8Dl^OB?@vAO z0Mf3+Dsq?B#!O{MO7HXY!5LsWrO4n<)$f@o4A`Hh)Lq{Zhi_A_1pZ-KI<%db!@&`8 zg2+F6X|MRQTS@)uy?X=55f!Lk>XY zXZs`R*_1s)Pjj2MF|gZf7J;lS2w^BafaL+U2E#yDKpWE!I?Pbu;Xl>e*UmBWOJ1Wu zN};l9gjHZ%AjZJ6DisRC5RQU?1d*^Xi!4FD<#(yxR%YdJ6;w79HK2fkhM2a6;)lBD z_Qa)^x>UI-M#z|YJ%?U?QoP{3N)J5cy^gzHy%R@Cf5H)a`hI#)>T(53En(bnel;#E zs8YuPQtl*g^Kre~hi(k^Tby@nON29A2`T%m4doPhSoJ8N7S1ZUnt=s7+go75uFmH6 z%IiIq#KGWlR%(#P>q$raT+n?b;D78wc)TVckE`r>1SEw2t2fnl$fu?;Lr|?)%f{eZ z9XE4zk6xm?FhT{`$|1n(Y?bwPZ45UNE+|kc4S3QIegmiD$aF`0S37W1Z$?O2!h!8M zqIW4=ixm)oZ(ppxX-J@0hS*kEXWlAWDpbi2K5+< z&7AN}8e0n}*j)U#KrN0c5_|qofhxbhUHY%^-)|ugb$?0z+XV9WOHsi7_lRc#!}(wP z8qaos8tzS&eqIbiJsQ4XGx7=yPE& z^ipB#hUXnI<~wMi0cB0eqXaJ9?ITGi%;gSx&P6$E`h@JF;r^wgQDaw<)m6<^6!`Mn zMptdYV)$*%!?9&r`85=jl|-O zx`ovWU_SYIr46zF%io)d28@w(=#fztD@a}TSKxf%f1!w-Joi&aohu1`mdzPar=?0a zU_tA=3qHtdaKVNLOH;f)`~p!&6%F@*Y;7Mg=S;yO_I66}sh9~_UP@#%S}MrN2K+if zm7J}g%m;d?iHun(D4z}%z}(NfMHDy?gCQqpC*f2=@d-{+lK~|;*P_NMHM^ES`iHhZ zS~)De@>2y)b@vTnI}&v5YO+Llf6yIA8%nn}Z*K2d=Q~7{@qd~#D;Yw*$i(z~gK6Cq znH88Nee3A+^@ioF^TDF%7L|#EU%{P5!`h?8kVb!Zf1yBFd~rkFKn`L#S>KULVEUAU z_))q-ay#}_3ml(dE=JbLLh~a*~$#*2f*)C~sxF(J#ub>B_ z`=W6hy(U%(upP;@@kWaTrT(RZ-Xh-8D0$OTSA$Dw@g@|k-F2&Eb;3v?Awws@tHhM- z;G}GJ+4DPs-U*wvasB|v+GtTxP)I{dTi8?cdMnb~9qI=68l83a1V z>qdCYJKG$D=}2Qfss-jffZfJCS}jTJ+5llGng>^h%WTYU*7}YGnbh!(2b=0mB9X@i zNSfbKycal?{GL){`d00V*$^o94+AB?kXTEQyzE#iLWlG0RHTSsV-niEOUFj4)< zP;Cl+o&W%obiGuW<-S;yi>h`X6Iq?p8%sb2mhL3;_EQDi2gw9bkQ);%0Z~y$G@ICl zZr>wxu0OkH$>|Zt^q{lP`<1rf+D3OmuK8U~ewP#VqV>GEIHyh+KK||7>{N?)=2O;G z(6Ug{OewRaBM#|pV@^oj-O&(P3tTdW!^VPdFwOFH7EdGRzJnKbWZKG|WBtjOd-pcN zF!OstbIlo^!mVx}j?WtiQA16UI=#;ULV91?2f|44YD_2ZgrSt~vkuUZr1l?i_!8`O z7lX#Vb(NFhy*WWV1%0zng#KBs7i0ZqE&75^LGI&`eq>3rH zi%XZ5474EA#1Hy9TZ@<$iJ4D>QqBXz9w9-SsE$Qq&*01XH^J49%8M5@Fvc_Qev0>$ zHmFCJqhE?{yZAFauK*;cj+FVZD*3_22*6nTX6V6@nFGJl2zqpoPZuMfv{;tqR`x3T zQ#1Y-XXE^iX)g}iW6>tdQ#8hOb&tze)>MMk^eWdYE8W*`*e%YD8VbZVsONeBM^7yP zJLVAhZDPhNwERiDHlpZlCnQ|IVk_4C&X9J^`AHei4+q7P(Xq!o!m+uAfy`!yt6nBg zr`_UQCRYOJ2ZpadC?Y=Sp!jo_t`fj6E3zats(WIm{kNFQ@k2>PIr98{VdzL-%q>y;W(!$dI(Yk(k zH~VqK95vfqUC_g?$d#Mw%Y^nHUe1~uYWA1D;k5D7$4}I$7um@r2E{w;q;3>bA>UAo ze^3**;h;}+Ds=Hr)v(i|Qd5<~gGAsyv{(GA}vj`ETkEqsk$ z5OXqZsOOf=tQ~9yDp8LqZdrfZTqU&Da@uSNo_5Qv&?rI{P%zK2r`-Ey?DhJ42Rwig z;#R4&K@nxA>!fV^%I=w+G&lR#nk6?<@gH68M$azUN@U8lIA0hV+g9dJkBkUb0usKlEU*}*NJ4F<+C$a$s)~Eesv%E$yw9p%Xw=F;fyKNvZ^*lR ztB~CNbC$Rr|BGCqBB>IKp$Ec@Ov?iqEo0WDZ*;PpqYVtt`YVIct)aEG6I55wN&m)3 z3J<`q<%tvY(8Bce&TuqmG30iX<5{e^Ux`+f<#}Cl*;_x3ehS0Sjr(dGx!;0)Lc&p) zGoem#$TPM6Ps~4qW>BAsWnGN-{SDVx*$(FqdAa#ZPi0M?f{@J@oH$Qa8%~$%N?O`H zdF_)NnZVw<@|jr&Na*Zoa~^kkSHFbZgNm} zGSxQuTkk`poNG@3gzlHHS|Kv1Qf8bYx-sLBMVJEHh1r+TeOs-M1cgf? zX}K-gwJ#=Y10VC3P6vo@sN4dcwy;p1vNl^JwX31>M$oTg3t6Z4$dQ%Y~4Vm?*SRAw{URU<;k*m zNpWzVkhR%~gaxF?BA-eC^*ggfO2tCSEZXI9fEknLpLfN>!6EKcL$Ulqzj``jeFvwx zwOyz%X(>^Q+CG@-GmUY*Nyo!a;97To;!1J;QmR86xXg1w92|0%+;3wQARnP@PnYKp zbqvbrPzq$Pl-|9X-<)-K#8Vx)gQFW7#PTGIud={e6C}=>va=I$1iNRKx>V3G9vN9+ z6c`UV!@-HBfP22G{c%i8US>q8#NO1apAM@zU|`(yT5)L4}b`^ zW`D#*Hnf)Y9%1+)48WJvezH3*ji%O|AtDZ$Z{h?oKXqFA(FunBoh;Wg7@P#>i;4kL z6bC@aC$MY8A<=#SZc1AsaI1qbV_Y!a8eRh=cKF3$hmY;m9%1^$( zghVQoo!{w`F48$YiT++ahvZg0_2tl4w~J1~qj*)kxs#~BrS%jVWe4A$CXYxRETAbV z!FdXT*u)95700&{s32cI*`GH<<~bnq+NcxA#)av+I}^`=4Wc|Plvq9VQ~2eD$AfXG zud0@=Nv-==>poXz<%gfFuqHVq*Hz`ep_#%nRgO z>?6Zfe;K3}#KoxAd=2Lr)%k_TlM}2#uH{r;S)lXF6F=69_e{3$RpVR4K#SMsv4^gHjt6!#yu#^9U1!;Hs7NS~VT>NH7S~rhn zkvTGQ*4=2XI*p3p4$hZ$`rMUQ-_}Qi&XPvVZfDkl)ySo)*9YdKD*jh#=N;B$_U-$q zqmCdriilEV6bMZ~x^zcGx-@}M0th0V0HFw>%%G@|rt}U<0O>s;lpsiv7BrMlLXa9m z2)ziQoHsM)oO{mix#!;JK9@g|kYw+7*R?+1mHqBLSM^ee?TQ+0u~&WD5(4fqm&>-z zMJ2uLOA>(;-hUOHle(#=w{WCIRC`oP-3Yy|NuMzD0SRi+mr;?E_T8S{<^;KN3j|**zT;Z#d5iVdPXp0R zgpq|vqU8c&@Fb_cz13Z=fbxnQ+}-Ey7@xm{yaH6{*ORs{^*Jf4?hdR;wjuE6U)KV- z>m+v)B=^cSHgBXM{I3T3N2g>_^9^r5+mR3kFkN-EIPJH5=|u0~5wnU3I=SfMOQF~& ztz0LfhAnsauXS|DzX2v>-k#$Jv96AVJBd>grV5)9lS0)C>Xx6LfBQ#Hfh1-8>s z^^CW++&QcxCR*}kbNau<1GAYkaq9#y^2!Em5=Y#1xEW_9Z!o%%)?av7>^~fN*{RxT6 zyHk@E9=onPnU@H8akLMTVknY_OvnA(z{HnJzq><>5Q;^>i5@Bkr&CqI>>l?`?K^?) zrLp&rg`_r3F^$=Q8pgwB^CP}db(b+DpqLymrBink4{5EYa%uh1?6G^NXKSvB+zX~i zB@te}Oe(OLT8c;Rcwk7aXnJbj!=}{hZa%ubh6c7#`zUYU5NTs%1cndq>YqzYZ#bi;@xweAw;;-TEc+5Np9+kl5`)Xo(VItWzS>rxu; zHB|EU!+te>kPVSQ7z(jI!AI1lM79TO)k=xgiRCA)B*_&&3tWs-3@9Q$qT3Z1(F_kE zi7a@pV2BZINLh+%7|fZfU!H(^JDV|#YKBMgk5c6BaOsGpx|+7WMPV-$Y_WFAmnjO> zmzeuvx88!c3-RI~RchtQMHcjt=!BId{j|1db?r))!vI69ODEkB0z28MKw1VTr0opHIs>$DMjE1I{Y;?f&=~ z?9=@i@k(Bc@$!U*{;!cVugXBKSjEYS`eC!k?;rZiOQ)WL9V*hReACrA6drTjmdvzl zv7?0shqAcw0AmW2!rFo? z)zT?G68R4tVR~2xE8n4D^B=o^mmXrb1+HMf!NeUP$E0W^vw%#B8RmBYNQsFX#lHb& z0+eE;H@PLOTovOIL;G{bH4{x$H}pGUaUQrJpY%E?76gJwo|O}&Ry8kqeERk`RdBb- ziA~M_=~|TK!PbHlw~KhqtVEw^(5cdk)n1TzY8AS8ACY##(DmL-Cd37?AP9CWcnna( zry7<%A^oRX z43@~oo@o8)hhMS0`b|E?Y|9V>6o74`AP>@A(UPPy6!loKWT<7RrvH5tEg|e>=QFG=hF4a9U^`>pXAKsMi#8UMFdg>?V zNmt`dVs-pPA(#EM{quUwUM}=mh2_e(Rh5k`7=M4OH2;B*DG)Lo({G#qvZ;`zcx-iN zbqL<&5xLl)V+LvGI20u3WV-vZ#64rq@l*oJ;oY^2$=Qtc z#lwLWCH<(rQ87xxxvT$7Dj7RC$sox~1QBqK+XQNj{D*Y$!AKU3oAwZY-KAx ztoc+3*05c>Mzq!G_3~~0Jq@DGmWjiT&57N4s;)vQE3)XiI`lWz{BdDOtN7$o*(d!!F~oFh7iQQ0pn)rKF^8qLz_mNUaf%Bp;31{qBR}`#GV7@@47RF9qlLEOR4S+;1b;W?94_8~zIe zcMWW@SEVn4jN65%J|=SOi>DJWY8A+6j{jor{b~6tX=3)P#h?-`k?>eolIJu1R+(g9 zkrWS_H9zR1p8ldro~~{;>q!hJnVYC(ED*F&bKV}-QhdK!ZdCChEsan$@ROJLSa&AD&WiZv4HCc@Q|465 z^OQrnLkK!MDQ0)yd)ijtuk~HHt9whd#dq2Ls}hX^!?(0l+&9q3{R+6G7{3&EJn&ttn+j{@-jQDDy zT)85;@#9;+$|xOdCU)If%_Zz)fcG`~niSQqe}1o$>NH_rbgzKHBZk^g`bxHMsb6Qma2dZE7CSXO#lrMa+HNMO|{{ z8eT!#my>!yArUA;ZhfB zK5e!n1Rb@K$aBS|A?}@E-!9knx5Jpo{YyxsxB{5)E2wJc7yS=9E5)B4>1K(X_uU(; zWfS|IdiR^U37b?&ZV9s>7WV0v*j->=l(U4c(aw+oL3yrE&)FurGq}LU-KD~REuWX% z+W`zNx3!hM?$dEwUsly0sffwRQJ>k$u=g$KN!NM_$ z2tk-#S*aaFDmfR>Xro_>YcK!0@#d6pmDdWnT{Kszys{}1Crz1dGCLUn`Ic%Hzz@>Z-Deg_H-OoACxlO%c?&W1v|;1NnczlwUd4vU77V%LREd zC?raF00-LbH;!meJp&cDhs@UdfEs98JU(dauS7B%*3ikMvT8ma6||VFGihA3g%(&s zznqAxV`C8F20KD3FR#c~NiW4=3si<|5*Us_(;}@q&(q_t?~)SLWuVwAr+D(csX6{4-vZPkj&(9eTrwvk3K#5E zO)!^r!WB$HB@x>q_IO*?)}`<%?3QNHDbSx_AO=2oQ~jGPKhLgh$kw}D#`U<^J?$o( z>eJIV#h)$Hu*)m4%fRi@Ik2FJCdT)%HsT^t9Xl7dHD{KK+_t;6q&j!BIe1K#rhTRQ zomh0h%v8EW(e8YYFAAg_hndYD=#S$NKbE)qFDN)sAaeGxEwypj;9m0*{vN>e&!Q8eTHC@ayPB7;*?Jv5NCuOpco`n_HjCr;m7; z(8T8N&C;os@dFsM)nvKWEpsqH>+nfyXcMq)sjeNRYq_8nQ0JFJ@2&(EcLflGB2IC@%8YpTAlm13%Gs!S7a zhF*8`7~qW^CO28^k$rUtu&mA8WU%?pJuI6t8-JVnh^wEv0`nz8|Z3In6RE?KW{XP&;e zn|XBBDbVitqdBfMvr%m-V=o#KUY8(df+?bt2`%zw>c7|ru1=c@d0upm`aXl4;#m*k^Q&^$-2Vayq+tr3k>-_kVt zrn)5S))X`24KPnxU~~Aon7!7E)wQtljcvPN#E)HViaoKoz*gdl;#v6bH*_mQ#9$^2 zF;!Y-K);3vVAVz|w3?|0;~hltGHiXnO7-zf3Mz;N8r=i1-)ITPXY~D(qy?5i_WgvGcT!n3N2*F>9=C!1)%AP8X=J!j@oU@r zy-9*$)42>rP}B9?nkE>1gDpUPjmXD16GHYqF!%ia$op&dg1J{9eZum_;^Hg7ZtFzz z+A*+BI~cEler1$#*?w)1@I%_xr>>6-Hj36R;BH3tey$L6Jf6fm61U6Egb!1vG_w(s zx|-RhYDP2W;?o9w%wbtT*6~iuNbV+^15E>&e-gI+f{o^eap%~NMcZiB@P^VmsIryK zYFiOGO&Z_<<()uzbnp8#!PuW=zzx4iQ-|)!Fqc8y)~$u=y~pm}aqg8@MsO@7Z|2Vr zuaVn7^mMSo)4eKV**pnCP2JnFl_Y+T121D*?DxbY9UBxq6<6fd-LbSV*}70>G@)!x zy0mt^Tre z4_mZTkVsaR`$8>Q>gfIlzZX2aw*q)<%6Z;MEQ&2h*FQx?tG)*aLE0Dla5$hv@g_7d zb*Gq4pLpBy%}RBxerqO1-tMu}!pqKTmCFww)^Av?%5&inq#s1sM$5vjqbDCXYit@@ zm*B7JE8C|O1GQ15c!C7kcWn;n3+d{}&eKsGMJfq|>7YR)78k8z>EqB`5_zRPEN9zl zj#I&UFiDP91>|g(RsvC{rQ_PKe{QRYL;1JWUglaUsr50=Oiy{P23TW;Q*;ZLRXHgQ1|(l2yQ#-Wcx z4>k4*RS5|80x6P3;|P9CDvP3~v3B6QkE3DN)<=xO)`zF<5>OEbW0QCf%whi?^0=Qa zKXEi-q_(j-&Cpu;F}E@Y1s1{_&P&L~8Lk4O#f0*DH2||UIeA12;_^n=2TfI>58fRg z+Mt3WQhgvcSC$Np2N|faqU$*K*5Z=X)wcNyszg{*T{yg5dD5V7`WG8=#1bi91Kh%B zLicOomP0bW#sk+Tl()`NL@lg&vm3-8juVn0Ju0jF;xYuZlNWzPck zcBly^BH}FL>2&T*jjIgf2X8{cY0K%o1AeBVTZYI@DP3B7l=f>H)8oSHHgN`#5{4<#;OdD8D-02Tgky=anO~YUYW8u55f6gilaiqi{@q6!#v%0u2nuxG z-Cq)HSiSezJr6u*S9k~peMY3Y90Y-1SIYVFIqy{+jflb=wdG{k$4xKo;TE;^R5-_# z2NQ+avE@ikj=|O>aeZHX$wjft-o6Ai`&81<8ymuQZZs2}rG1lM*M)6t#`2*NR#Mgt zru!dnlpfX_>CiTco9l##|Axjv0mZ>ew+bdaxCekveYw_bn7;z z1$v>&dw(+k_-aQ-CQRSD=7D})*RP>7!%OAS@~*o!_;z2m6Ce;bEv4RMpn_(9oe{XJ zMtzS5c2qbnc(AQwkR0p9c@oeUg&S$ASGTmq8 z%Ni$OV)UJ2*7zbb)$(F}i@mscodyI6ik_ZhGPjoJHh5*)Z$y+YR)^r?Se`!G|Cdg!+@~o;)t*j%=a2ABNt^))l$SoX zWEeUk5Fl7ybP-W`0K{)CJV}~7K=l_LOBL6lulzk;c9ksidD{TQ45(I2t zb~w$*Zr;VQ#gc_+s8WF8Guhqg$k87~ zyJ@dmB(r(OG&*@x@mneLI0*Gma{XwkxYO^!YxTV@yk5uegy}v{)w8SYyI=v9+{WE@ zho!{!jJ*f{z`j@Vx>oKZYz%fT?Dpoj`5`k(mel^kEV~H{pcw~Tv#*t*LpCc|b7lu~ zRL~St$@b9q3{(VdSoji6meAnRzpAUQp`ejGeL!w`$5F%|Hc!F5a&kJd>Q3!0`(!r2 zq|3e)@|T?#0Z*vkA>og%c}4hjzns@Z#-rf0AnhCtvyiOxlon_{6jQ_>=VjDPf8Cg$ zv&%ajtfb-KMGk1I743@PbB;xo#@Vem$72)9IMxyFGj2oP`o+84>fjSko{>(C3`T5Z9`;?LpG?44M z*Nqb5w4KBX&i6^9fLl?_tApA&;lhnwdJ7?Ocee|}%^a&KW8<>41~uqGhxKZ5xf$?{ zpv$l@CQw@+ld8#Ie)f&TxBLUt=l=m}=jU(aAI`wCf*Box)K|EJu$@3?pnlkC*{){F zTS1p^B5(huY-xb9lQPq)F7`4DA?PvOJK-Gj426l#NhIZ@9mDf&0Py&YLq7(cyRCbn zTaW0et7nd)zNk3AcgP=oj_8=e#YRhKYrIF;i)aG*t27?qwL zVAYkC$cLJG6yEL)rz{vE%gv08IQb7{s|&n-_-$j%qCu2ad_PsE>p zPYI8|V9KpO5_@+gt-@?8LmsUq=y{iDsDv-RLtRMbW#G3?3)O_Vv{;6`a_6I1aFT8pzS7zvOt9%N-T-aX(DTJeJk-A0TIjjJ!gSfCY9v1THq$npyn??_inmXJeX0?U_AMf958 zk|Rcm8Ns)AEUO2oWN})1LABpPsd@CiL7Ya$wM|Oa~&^pun1Gkh^ zq0B#hH~}C1mYF{S*z7lP$jnPzss*qSJ%TaCF?wFtZcV2(utd**1n5>_bN<4~)LVSq zp-M4mu0cdin)PtdB7+b#{gxe9NE8$$pfQXx*l0DTPs~WbnhsoQvHJ{QWgUPHVqqw88JA%FU8z@x~P6B7Y<6UNtRj7TIr1rKrVvc+Mfn`%|8$ zzMaNq?_sqqPuViF^9?U?w8{wS!jh1FbJul4M5@ zb~m_?1o+au2Xwepu{W@r@k4vq%;~KicavQEg%7(T|5@|syjKCI;e4|t=*}p z8~$}+{jlv=D@-#hW8zGca)Rj$Jb+2JLa}?SpTD{?(vI(<-o-wH-E2LkyIiNCgCznz zOmbVMq9P(jQ)!b>w{pPCTc9s&oh>cD?sdGk@4Fj+usVGc8m= z2X1ssH6l)DHjD3Gr)wVX8*6W-m8_$R`>F~;7(7wy<(RZgu-_LNM;I1M2P#xBE3vxq5)!yWYT{#4YYpL~U9*uGF} z($@-of-B?O3je`ai8IqGYpFRObjP>Qn*%2YvvPk9lB^y~w(b{e9~~lEU7wVegG9CV zzMTd+6a%r;5epc=ueBpQJrTghxhbm*sU}4sL24vrXX|tIL45&2BdBcRwqn#71@<6l zV2~heK<6ArSjopd{Gc^GMaut}ph#=b*qPZR&*l-p(`Tdr6Ww5lk+wBeecXBoCkA8y7@B7_wrt3|L~1TQ$jIFn zbQ_hXqojdijM^IT?mn{K{Fx+J{}hdK16c0Q#mAe4n<{a79_%>u5pZ&=xEYDLd=K(m z+P4?3-AHIuOWm>ka05u45nY~%XJBjt2#=VR>o_SZF}+gw9(X;PlA)M=Rw29;fu2o7 zYGx<+cV!0xI;B~Xps>tHWxY9!5e0Wbk2)lDnW{m%P{^(BP%C%7KUCSISpvu; zWl~ud61>1vD}7-{Bx#yk2Q&QG8}^i)>*XgY|J*HD_WpgxFo5V{_SAYP-5d7s@n%|N z_x?~}$6o4#$qRw{IMijhJrE+y%25Tvw}*p1s-K~?Urf<9?zfvNasggADmNv?uw)P#e}B&$2LmFSI#7c>p z^WYc5$?m{daK)!VrYs8uscbIP4BvP`wWPdn%<&)yMqfD(+YB5jy3kay`v6soOHY}V z*Vxs~yrf;|<_`=mFcP^7MzQADt})V!#7(?t`S0RTb+tunL&Db^mOKYkH6A1a4yWu4 z|Bnl!WY>Q&P!048333xho7;0M{Cm@_TKh1VeFHsgDnQen@fkmshS)cXXgng%Llp(x z3Kv)}9MUxTdRCj8>Fz6OqquJ182b%IkIhrwOmgB&<$V0bX__|`gE=Iw`f2~dg1TG) z%u$Fttv@e&;HC0~9YFa3_NsZ|fKW^d9bkr<=V2o}O1{dwltUZbDnMLh1nxUl?a;?F z9EuH76vDR(ma}r@C?3DQYhn8tSSAMomT*{`tjA0yk8?Fm1|Hj?ye5=Z&Iu|OrN>=h zt~Sk30H0(&kH-D~+KRFh$NV;-v+~f|B{QJkg#5K2{!bqJJ1aZ+IRj51ncFh561Np4 zWTYS6R#KLhR+d#1zkOTz_H9Z;*YJN!;01f)_B8l^PLOgl+!aV5@}F1mck^ literal 51829 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 bmxL5MHwT}}Gp*mik3lk$3KDrQ-+uZ(13+@A diff --git a/docs/new-docs/diagrams/zeropool-keys/main.tex b/docs/new-docs/diagrams/zeropool-keys/main.tex index dc6daf3..97c46de 100644 --- a/docs/new-docs/diagrams/zeropool-keys/main.tex +++ b/docs/new-docs/diagrams/zeropool-keys/main.tex @@ -41,8 +41,8 @@ \draw[->,out=-90,in=90] (interm) to (address); \node[fit=(spending)(interm),pinnedBox={30}{Private, genedated once per user}] {}; - \node[fit=(recieving)(outgoing),pinnedBox={200}{Freshly sampled for each transaction}] {}; - \node[fit=(address),pinnedBox={-70}{Freshly sampled on demand, can't be tracked back to user's identity}] {}; + \node[fit=(recieving)(outgoing),pinnedBox={-110}{Freshly sampled for each transaction}] {}; + \node[fit=(address),pinnedBox={-70}{Freshly sampled on demand, hides user's identity $\sigma$}] {}; \end{tikzpicture} % \noindent From 5ebb70ff566343a4ed66076d1e8023146aa4a8cc Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 21 Jul 2023 15:51:58 +0200 Subject: [PATCH 14/30] update transaction description --- docs/new-docs/03-transaction.md | 42 +++++++++ docs/new-docs/diagrams/Makefile | 1 + .../diagrams/account-spent-offset.png | Bin 0 -> 23778 bytes .../diagrams/account-spent-offset/main.tex | 85 ++++++++++++++++++ 4 files changed, 128 insertions(+) create mode 100644 docs/new-docs/diagrams/account-spent-offset.png create mode 100644 docs/new-docs/diagrams/account-spent-offset/main.tex diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index ec0c40e..cad284d 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -70,8 +70,50 @@ separate sequences merged together, one for accounts and one for notes. ### Account +An Account in ZeroPool is described by four fields: + +1. Intermediate key $\eta$ of the account's owner. +2. Spent offset $i$. +3. Balance $b$, the amount of tokens that the account holds. +4. Random salt $t$. + +The $\eta$ here binds the account to is owner. Balance $b$ tells how many +tokens the note is holding. And random salt $t$ is there just to make sure +that hash of the account doesn't reveal anything about the fields. + +The field $i$ is pointing at some position in the sequence of accounts and +notes. All the notes belonging to this account that are located to the left +of $i$ are considered joined (spent), and the ones in position $i$ and to the +right of it are available for spending. + +![Account spent offset](diagrams/account-spent-offset.png) + +The picture above illustrates the meaning of spent offset. White accounts +and notes here stand for ones that belong to users other than Alice. + +When Alice performs a transaction joining some notes, she will change the +spent offser of her account from old value $i$ to new $i'$. And during that +transaction, she can join the notes that are located between indices $i$ and +$i'$ in the sequence (thus maintaining the invariant). The current position of +Alice's account has no effect on the notes that she can join with that account, +i.e. the joined notes can go either before of after the account (green box on +the picture). + ### Note +A Note in ZeroPool is described by the following three fields: + +1. $(d, P_d)$, diversified public address this note belongs to. +2. Balance $b$. +3. Random salt $t$. + +Balance $b$ and salt $t$ here have the same meaning as in account. + +The diversified public address $(d, P_d)$ is binding a note to the account it's +owned by. The values $d$ and $P_d$ are derived from $\eta$, but don't reveal +$\eta$ itself. In order to join a note, the user must provide the value $\eta$ +and an account (belonging to $\eta$) to join the note with. + ## Merkle Tree Commitment ZeroPool smart-contract does not store the whole sequence of nodes and diff --git a/docs/new-docs/diagrams/Makefile b/docs/new-docs/diagrams/Makefile index f3873fa..e71b403 100644 --- a/docs/new-docs/diagrams/Makefile +++ b/docs/new-docs/diagrams/Makefile @@ -1,6 +1,7 @@ .PHONY: all all: \ + account-spent-offset.png \ zeropool-keys.png \ merkle-tree-illustration.png \ transaction-acting-on-a-list.png diff --git a/docs/new-docs/diagrams/account-spent-offset.png b/docs/new-docs/diagrams/account-spent-offset.png new file mode 100644 index 0000000000000000000000000000000000000000..25ac2d06ec056b700ac81e612e9dbf5ed1ff0c58 GIT binary patch literal 23778 zcmd?RbzGBe`!GK122n&*3{;RV0VO3TN{t4|QKHo7?l3@5N?ICaqeqS|1pxsGN4GR1 zB?b)Gc&`n7p67kOzk2`vU7y{!o!4<5eH`a;*8N^hMUIk!mI4FCe|`X9pvV8s17H~$83Fz#Cnp1c>+9=5|NIZk=Rlydq|bl7IRyey zfr#+H2l#%G^!oB&AQlkl66piLTm^y1N$sZrF+d;yAyEbY@c=)sgFrMS_?kU0p%2m)z=K;s|~KL`X6$_0UfiFyV)l2MQ` zGBV!0ebe3DT}erapPye$Ow8QeoRgE&-rinXTH4Oej{H11NEHME1NH@hj7gFTfk50K za&q!h45vUAAdm#;)a6sRZrvikL=Gw@X~vPHWWbN)K!%2fT3T9UWMq7NeALv`ryrg^ zd-W_CIT^?l1iB3ZeF1?Ufj}IfQ)H(=fglhc=pxNUU0q$!H4w-R1X2WnbU+{n(1mLk zK=(kP3=qhGq>w@o$R7l{4+7bPKnkF4wQv`IfIE!ZIK+4FZT;~=H>myi zqf)UGzOXs@*g9+Fpk?`BIpT2rVEJHic}1GKWU!)!e?&Zm0pQ})3q?6;Q1H3C^1zSt z4)S`=AP^4|@xN0Z2rwWth|C3|EJLQ zh+K`r_xE9XjW4bS1qj}-(|va~h~>Wd`O9A+x=KR~E8b~q1xBfBeyQTO*2cu5Z_NaF zJfJ&0l=|SlDjUycv( z_5b=fTr#ePiqr%C_883w0|MhC3g{ybW#<0hTD~TkeYy?_fdkQH&Hy*;HhMyC;X`mz z9%Ul-VfNvu^V(537v%rXyMgWe**XTu1rX>tedw3{XjxrmZeAOlcbYA2uR#EP&V~uV&Xd|%Ro+Gprl7vecGnMFJ5wAc4+S{6t@EM0Bd8T#_Rwr) zNkz**1zlZVRmB2OeWf=PKIn!kia`mzBWO1NPBF}bK*c!LiQS%GcSJcxWt(j?BdHs| zxyYh{#88;ZRkxy&zY2$NJs>lFa@;gyBV?pVrklmW?Y!4g5Ds@O+#ahNxeX!WfEc;) z`gF`SX`naXq#yQ5^ImyUIcJeS``#9ZAD!Xg7RD!)ZIm}bme-~p;&08?D6Dyon5jyx zrBVpKzYpyBOkt&fL1 zv}|o!IF%dEES{iorzCE#=F<-uG7yxWHv+`d3X-3PDm)= zhBkis(*Ck@t69+;#6CuQ9o?t5x1*!__5q;7%pG-oer7IXekiOX2$2_r2$Ja;k>04k z?V;a-yPeWfXEacp<>CAYR%fuzOE6^X*mM!s!!jIgb=K@ypjWW9R1kWj583^(D5D)! zfA$pWnkh+c&^=fr>OlxQy?Lu`Xj*R~O5C^whs&L%oF{~R`Jsg+s5WoBx7=Hr^2M}I zN}iL5Rnb_r_q3OcPPtISn{uOOT^YJ*=vcB6c*3B$*}O$Ix+93-fWFddK(p>GhE-f> zJe;Tb(KIXk?KxU>|K8jd!=-V}qduScrK;pQx=W|>_+b+LY0QAD0gfN&c@r&>$pNEe zMWXNOzsBeeb0A+nc3u*GiTHLOd@gfyv?bPS}eIU&!*i6TZ8c zLp#st)%Xm>p`@8$EcS{AK12MsQ&MDch5L>2Ot5kPAJ2M%S`dx%{5tCj4Vq)EnalO? zGGbH`ncjK;XK#hK&oza^X@sKUI239}?id_>EE5leyZYlD7FRjJhOWJjUTdjBg~Lv| zSxZ2;hP-^7?fc7Ju5;D-SW>ZZH$SX&t&fNDR$S#}!kH6>k( zTmQL<2n~wX-ddXaql>=Hw0fv{kr}z1uZUi*Ibb|j2cGzvYAqQ}82Mw^!M#ON3X&1l z%#5t)$Ti>@V;yc@st!AO7ySaCLpHFiubIn+4 z-*A1MIkc%FnsY8?H|SbSYN4oIn<}y!KDD$_@1n3=O_%EiDafA+!^Sqr4TjQ=ybUHzFlUaT+I5OS?GskF95Yl+u&+&(t!rtgZC0G0M`P5h3< znlapGLJm0^KOK&nsoTOt*FlzhRKNFLC1GafR{H+OS~!QSWPlR0v-hWmK91%Fm=U!z zn9^~EeqUAsM#EMmU6+USLMy16j@LFcR4WF(mxQMa$g~CRy1Nfj@g9U#7G}=|i*@cNdU~hYvQ+CE;GUEg5y4)r1Z$qvprhjg>I-Omr{ibl1zY=Xskl|7e7?^C_FYGGu5y-aPK(-aBQLj?vQs9rX+-5uf5e1A% z4%CokOuY+c{qtTzuj^du?mRyxr|19;D?T8=UH6*%njAH+AmDRZyOzVu+{axKAj^wQ zCZQjLzJQz2{oj*XUNOb~l5sl&S%$cJL@J;^pd)p~IehDdkHLo_dGb=cVXwio-D3lC zKYcN(K%&fuii>trymi+*>;A@@d(R(86DyJUI8=Meo5#(@YOHj zHSw#)F4zOUb^;Lp_K znvD+z3LXsHwRVd0HsAhGza?G%nmaF$E*s==wGq$?-e$_JR{e!uwu9(_&l$m4S+eNO zC^+*@i1oTyFP~tyI*T6HJPN4pbRWSGY$bLRlg8tS8EJYAHQJ2Xrh}TA<)C=HNZ~v` zEXHeie7sJzWQ4)lj7i>tmsb_Z1T%Z9on?R2BM%*&RmD+VN?DmUNtd`2u^&K{27jQ@z|}AMLU^2>@#6* z>TKDRa~Z$f%m;4;CVNGe=<4o_ftuyK%}-)At<#tSi#7Lye5{AzzVdOlU?*h@UfZ!O z7Sl+i4MzZdC=Ra8{_+b^Dn6K@;rN={y1w5zj{}q4skQo}gc_=vDoXLBjoO}fr)Il>^0o8KUfDOd@W&5Y_GN8VN zSjWNV0{LbY0Unu=B2n5S7jl2=pZpkL9imbPW~YzQiQ+KZvx8JXZ-{j!yczpcsfps| zed|-2a zZFlHJf5Wd6i_o8gvUYms?*TQ#gOJDj`DclN_bEtKZiCcx^_#@WmynJiQp*h<`ZoZD zuLfruB+mkQ{8d6FpD7D*Nd7AR0ovVFUL7W5S{73V>stSF5>O~QH>eS-D={itI`1MTQYILhHHdSoPCB0gRs z#mK97S8N^wbIqGU@2(J$nloCm6H@{}oH)6-5sxZA5sU-&@D3GG?2jlSt`mTJFcMG6 z<;0W*h<|?JKi?iVf*?fo0mD3zvO^9eXX7_9QX5G4zdK#$rRN^;Pv z5NmdB?b9ShH^%3mIo2*SiQWlDo)9+W69~p*M*hAC?Ev+Xfgq`w)i8pH`;h(drcOZKvpoH)47zEeBR%I4k~pTN^u+5Jal*d@C0}G9xw1K9<;j<6 z`S{plCHz5rJJyTHO|->vl-&P!FpOQMBC1Lt;`y`FpxEtmcgOZjsNB}4AhOSI;sGOKO*cC` z3arP)znemkbjJGnuLE5;=~DHeR)EAiOWZ#vRKNZ~lU)49e}e@6#d49Cl1Rn*{7oZT zk`p%`cX?b&E(8n@Jd{m}Brj09|Ch19RQ{sikvstrKS42n1rl^3>*W*le}(vT0Ut+l zN~OQBC*=NW_f^$*^ve@foG2JTm-Jr>{)@%nuMM93?>2f>_1BEe@qbnE_%Dc#=!wst zJ9cmoCF4*L5HJEHg}>_D4c%4rzm-R|XxjFXNY|mbem5X^+jr7CxochgTiVY-kjsZ- z8&>L0IzM@`PgoaGSx{wwohrS2Y*CMB$g+DB>J>jK=sM97#M1w?`8P^pvM0{zA6!*T zBry?n9dhAQbDW$1h0UOj=0dKTnE;W2BA$MtbAl z1Rh(HmvaMo>UZODfD)_LpWmYx{>{vk0!gVPgr%2BiGhUB^5VCab3o2B_@wLgZx-LO z`I0=Egy&5$F*lRA;`ujM&cz6lHxp;%uM$R{gb;OijQ;t3I>3WTvcCVOO7$<1{!Mkh z@!!on|Dl4%&&Y*%iE@1TL&{1d9OuCjz|csdQ}rLs9dT*IghwoczbXZcl@N0tiOK7i zxEX-BAn`tMg|D6%B%~j2Rft2LJoG9HH`AZZ^LOd>+9QO*xn46E-TF zr}0%3KT8YVfF=BE3FDS;wC?=}KI3{|ksq>ia}p{5rPr<2;tT!i=^!WWaOriZ>*Sa5wzqOk!01b~;*>I<%_?C6M*i1& zJd!EI^5aOzJO7QI7rmEGtP5JbH`EA}7{KUHM&p-hS(JKW z>Bq+TXvdswJ@u0SN>@gNcytK=`*#}Z#lWe*^sW>?NrR@&y3m|7SUy{d79f=fB=VAo z&r}d%IYJ7>_*Xn9p@{7DRYFP7Z3MBz8Csv$*?%~I>wmCv;$YbFw*&9e1!pW?3=s#> zr~xiz=AeY`V zHe^!X`LRe;rV8|%K(vWg6rl4Zh;?;(nJ!xNS&yg%I`M%e%#S-R`cA<+m|sb6)C$5P zv~e|2k(?Mj#Hx`?1$ven%K|n=C-PbP_8I=8x~E~c%QCD$H!@KDZ?HUNXwqjjr&HkZ zgGYKgRKQfP*H>`A<74U%Cv?=ExvUDJ7?A*ZK+^*p+?S=SZ6VfEg)LzS+jg+N!W6PT zfM^k-Y07rszzS&gShq_HylhYBB?Nb7lZ^L^9FS9qp7Id|Owh=ow-G9wUAWPv=7vOh zg2;`{Gv0q+52OIEle!KPuB$*5{RG2fz>9`Y&NBei0T+T;_d`M)skFc?!_fm@jKdh_ z3UB)S65S7G`}@9*_&yfgQWZVWXdK27781-x^bR6#$VV`&@JP$RFxAALn)+$!mL9R~ z8^5m1`|TIQF@5OZ2Vz{dteVQf7`IGN`|FL;--J1b8uB}eJO8#qf zI-mT6@D3j^g{-h!h)z$jr&%mAvB{>+cEkCXdLuf&P&B-Q&(XQZR|zfDDs=JTQ3}^< zI+hL^8DQK=sQotsgWvtcylSgFhwaryjRof_gX|=IC&l}6ewpP8KCRlRua%q}Tgf`Y z782H?pR{>KYY$%Wn%vtb%#4kRuP+zk^Rg~NTZDdgcp1t0JjAr6HfAkY?fdXv_-NfYlx%GX9 zF#R22?=J}xK?1vB9!5fM@Tm_A4l>Kr=Q7VNdAje$a1-$3LGEo0M~zL}I^Z=EK!oYm z=MF@$uEDC!05Lujeh64Bpvnr@)uy`iIC%p4h9zm0c90)N3|(Js>c=*Z1Fm zWUv)5!p`}1%->NRysf7>nH*h-wU$gMxEjvhMZ0lWF2?&~^F6(x7rI@jf|-Bb7&)g> zCn9zrJ0PkA?x5;2rS>*v3BiyZ_`J9sV!Lpa1!?14U~jkK^49OYD*7XKYK>4-!>qN* zD`M+hpxw4&U7!W=@2{Z$hypxzHKGCMiKbh#%ad8hH^kbg82b!h?NZ=o%rxH%)7sou zBg39KOQ9*Sds8_jd%J_+NF^|B8g;isqf5sXyBPuVaUIFQ-k`~7Av$PU&dXaR6dK@1 zrD!(gmx&ayHc~aa{hdoYyM$3TK{_sZs8qR#4){&HZC9@Vozzgd$Wi^XQZ>XBzxBek zP)g?D172$$|Rn_l4(jH(vPU^MEDjdR{A&+xp^_`FYVb`&_lv<6n9 z1`S-!`W=b{n+34J>dN8$ewXI*U~fGp?|Z9KX%G+tJ?9?=Dwk#G>dt?fGETe@buB}+ zaI}3VEC&2LY?YPplSxVV$b^}4t<$h$VgFCg;lPayZ&Qf^zXk~nGwy-22@LYATYvft z4iCmTWZZCY7Ewkm+OLi0N5)K@{cOgQqnWVA-up2AZcMNyEMzV;l`swISPB*&o)?!& zTFdO+6+Jz4b};HoIA_AS2iC7weG=iZ1*rpd5*MCdwdraz+8xtoDWsn>Hdp=V-xMw% z`%e+p4XcEP3c$)LI*sLVYdLj)#tHRLBWdYTXhY<3`h5|vL2iw(a}f8k^5jn`@dq7d zhh>p$GhJehE?e}Fj*a!PGXMO8w5ZKxqXXJsFp=s@`{-zOwi`L{xymYAV?vg{yH6xk z6o!yOI6Lo{`B*j02W}P)xz2uEZqV4znz$Z=y5p#`7CgP7?udcYxY~EYv_(9fC)|u# zm3TQ*eM}jvv(jYu7RN?$(h#oUWU=n;Oyl94Bxk3}y}9M^Fxak6+n+x6cukXrECo^P z)wdtvWu|B=+Y#_Vblgit6 zU-yvhUYSVrY9v;7*tW1@Tof71Y`jw7UAq6ETAn)@g-*Y+-BQ%6lE%#4s@Oe$cpogX zx((^Mof(w^TfsyJMr$7xOSx=fuGZ`hrTbfGi1S|!OF8%utxc<$A1M}%o|8-ZFP4XzgQA@GDgW$=Xl!Re= zdqU96NVr+Fc6NzKguPf)EaAaN89!M+zWUV%)8At4B5cI2D?^*O#{Z~Ry<-2TJB&GD zI$#wYSO2h2Ayn~C2rIWL%=vbMh<@6|H6Ab*enb6-Mo!ceX9iGh;NV)Yqy`56eYfm= zLq(kP%eUGkOq8ic#t0w;V=v-q8SZ0&%f-uYe{1_Yg|*6Po4QR){W~u=h3gqbc92GmA#l1+ifP3 z?6~alKbvgl357NJaDqmB`Lm^);uyQwdb_UDwykKrPgcm`^37t$=i`2wkILWa*2dYn1Xn*a77LG{) zyN>BNNRe{yx$#-o`!ok7BCyc+qW9j)hGf)_z0wP`CZe!k>oJmpZx0PH{QYs?)bz(; zzBDuCi@cLu+(!|i!50Bi`WuU4Hxty9%VtvZmLnsj1W$c<7->=kN7RZO%`TH0^Y-0Itk7M>Ozb%H43FHUC%Ect#>XYqgRzyEIE*4M+Ob$gZ0~M zZN^sg=N+xsmty_rujf?=?*#klP-3s+mn=fY{bHGv{O|Mj3tuaIpLu?dNYOj!^kZ*E?&qYO+rz8N$My(rNoMXG<4LH@@;n|KMwDuO566 zbqZK2DCCCqqd%y?8uruo_$wYxLD=GA{XS^xW6Vvg`%GFVR9X0_s)FhXxKTJPn=-7u6#w~v}5(S+@^Bi7DzgwBXz z*%kdn&-7^d0zyc`jIhy<${^#xM_TT#*b7H<{s_;5WTRE2K$U`hzsOK+^}dXM{i+Z8 zy8QB3TQIB60(7sxpB^W+syCR_BRN>9iAGz)vApZBx~C0o{i5!C(*`pd5XJR3=>!#S zm+*xG!g9m1aQCgEENF)n$5Rdu17OeUuqC^-GYe|u!T{m2k2q5|;*rhJ4r}hO*(=a| z+RlIUWMSGuyOHe9=8jarqx4MPmh*4MX18}HR|RAs9A??)B0A)ucAI*K zpNYDmhU8gBU@v{yil(9+oD>L2Y?P7~a)AL&XJ`vP!lfJeH*M(Lb!kQL)5wML+$^dtVf?f6rG(1CcFeH{8yQ?sveIdtpax9 zzhae!>Jg)>>jyjhu^6N1Kha364WV9ePqQP0=N>GUY|y)~w3r~gx!zy%3*t<#m?L}7ZRZNW+Z^K8p;K6)mMa`YuStT?3FK|R0U(6e_1_^^lFs&A!UkaT5+ZBh} zbzMt6BlOPsvAc102jr( zsczj!O~S4BQk2=<;pdqP->X{hMIW9k>seh`DVxYb?2by{M^7I~i7cBVJZE%^stXh$ zP(@bc(%m_5mizK%>0$oJdT-BIxiemu>*%JJMDADzeeVV6f-)3=*k{Oz*ZiK34}cx{ z4fj|(*&8j}Q@vcp>nxN*@cKT+7<(!~d&6?q=$^3#i9VYQxx=0p3Glg}wN)5w;Fghh zWtuLJS`3iF*kG}A{>l|#q*c%UBU{Q}i?7(zDh8fE(K%`|F*cg142s3(xI4}4&Yz+0 z(#luH6HutAY2HPGjc*Pd;qKH#`)jajVt&O^)p&ugKaPNsl`&ss-u61^y;8braKN1P zjK$w-z8>4W^p7MnafyLbxn{sp$bEA(v0=RT_D_YnXRA#=&mcE$66A2pSQS``cK~LZ zKFvBM?;vd!3?F97%W%~-zV%i%=WtI{E@^j@%z}HWx9qXkxbt#ELY|<(Y=2r0zAbb9 z3MPUT1td#Xp#|!uOv^A1p%)-ksSo>U9AyTt{`$Nm??hH5B;DuBBOs2fCC;?%M)dLtR(E$Gn zDZCO=`N@$A%ZDV)o43g!f0?+FnK-%fAs;GtCo&@kf$Brq8}6Jjka3u3-h<}4klPdz zYhJ(~v(a0hQWZd*2_{s^MjuFxR5K}A3sy0`OX$gcy^iWmxgUpe(GJWq9x1!zV<#80 zqc(H3W}oRHKpxd4xRfULOP?mw?`ybAV*;Tn8c0k7xka)zU7}fCg>qv>1*K#WI5 z^AWXKKHReycBt*ABWwv<1?OV(#kbZinVXkwj4Oiy@=F3$-J4?cL4`}&@eF<0uV1Q! zEGJv{sWKDCM^<54^%2)gK9ZsAtD;`kw#~Zet`EQI&a;~w0->|rBkl~ zoJF!bJ!3)Omt6lRPBloj9=O@~R#RZKGYT+hzrw?dz5&s9z+Z_p)k>~TrV%-AN;GkIri@d1kT(83JyKAXnAX-PpwYfo*R3eXjWi=lgWiXw~mp(65g1+ z1J}fxJf;B{mm;_Rvp!4>d)eLx2GAkRyh5;fsMk{wzOjZy`ingAr~s!`*M9v31+o2f zAB7HjY-ICnn#(yz$H(^K9{R1T#gB0veM7~Z%GK-21W3Fpl;7SC_GFwR4NdFl*!^r$ z_h&zL<1rd4h32eiHC7+joxEG#ACY*MLi(9qURgT!VUEoQFxFS;`s_?#=z|oN=lyON z{WKUEcUb%Nu$tayB77^dF++1vab8bFb7fR-Yn17$u7U6N`>;lSQ!~7bcfJT16Wgg5 zDuRej?JHq3`WQ)B#?SchempA1d8+bNqD@!Ygmo%wkMh@Na*lxE6ri!S8_t_qu|flB zU>ij*DMinhTH^WE2JBZq%;B@5t{iO4n1w#5v(M>Y!ycW-(+A8Wlrfr7!aNVz<=!35 zbTBEbI6;xf)G)7-`odT$8>MuodS38+LXenE4=f-AV_XVaG z#Z?JR@sL&VZ$}~}FS1j6sB}COLf~aC=-j!mLiYaF1OMr?!>pFGNSBvd!^5GvNEv%+ z1l%om#irtDdz~Ehc0hwkXJc9dmTlrphHuGNEo<(O> z`Iaa2o-u4fTfBt6$<(=CTY;(JrNMH7^eG+K^3CX*af;A3*3T~K^P%I(wzoKyCNH!S zPIqcn*L7^Q+Te(Dv68j$i`lmoIStX3garc5F)P{NmcEt#c0I>L$j)l zD{O+i*E6G3i$mRtrRY{{RNXdo&hDN**pgeY(Pd}PIaX}30C8BQF2%*2Okvwvt`3XY z?;Y{aSl6^myXidO+Xftb3M_Bhk~^9g(}0PkO5Uyer<~I^2rXFy)X6q>pWEMEjaV_# zSiM~qyIx`Sp83TWUpHk4*LZTQP(^W4>BqDQP8;=%1ACo)*=Q<}Hd_%o#`w6Kve%!#^dB+kRm^9dCbhl{zc&O&J;M{j|_PQKHNI6`yczGQ^HbXaHzvI8i%UHp?xm7I1#dZ12IUY-xp=LMC%(gY? zTRKfADy4hqG^JgBsxKN}3{0nsM2=?9OYvBX)t>L7Lf(gQ*mSKyxW9;17RzqNNXCBo zh6!q%@Wjl>N%e3EJzmzJmLpxLgv9@$CI_&kUu<&7|KL}S^Gn$P^<->m- zXZRpT7Y`gu^h8@(CpG*UWM!3NaZ^1HJtNb#sVbTgyO%G_IpN3IAi-mq;yKpTas_HK zX-E!H!`1qRW%E3RO6M2H8qW!QWs_)4+Fh5OlqhyUFB$Wza4#0)9~Lu5U#84Pu|x;#>mlVaV%KbJH35zUm;g}H5F6v)dBqs&iWmz)dL zt{3s&uV1gNavs?}7|nXNB?eiJWkrUgHdE}|=wS_SJQ@z1ChkPkxah{%H~6~mO8YcQ zK!aK#k=0ep;tad7-BxeMl|1>ZO5pt^0kFuW;IHn&h`6Vp(;oD$uup#Rog?!zcFs3~ z*N;)ZF7%h)m7e#C(vFj@7P9cP>L})&yqmPu+tkM0D#NKFeBXWsq1Zh#DBK*n&i9mscg+O-hoGQiD9*etOV$GBSW)-5+7)*D`5zx0@(&)$|78yGcb|M@nJ*-g~^ z_g`$ZIv-Ibox?&ys-KP%gUNKYM#gZ4-x^ zY9eBU?J2{k()vFtRL~$^wF?eW8>p249j-$neMpvk2>5WEiS|e(jhuU!Z_FjgSo@xszr=- zgeG*x1RISDEQgN(Zs%(RJp{x&oUQ0A#A&z8+0@3S7bKHq&ta z6A{C3AeRlm`-g@67edzCqwH^x*Bz28z^mwH51$O;DfFk zX%@@M!M{=6ed@9XChJ+?kAD3Jy}2sj5qs_MA?U(LSNE^e=UO{Gvwk@ z5Vt&LMTk4qA;jZAkmWFDB*)uFua9DDSuT3q2Q3Gu{eLloFENQoV z8rUtb1|}h`gsHOl%YQe)wUbanPe0F|_IsUO7eEg-TC5CWYM>?YMZ^qLRt{)JOC&d} z?p@(KfK^7)_BSJp8ug*oS^?PdCjk*fux^2ykzFlPy}kPfd5$|4F4#PHC0S@~s=7YW zbvsM2ZS6`Fid6;L;2`|^CSe>RTgY3C1bC{9uYZKGUq9mu; zo}d$jV9K*{da=E0B?|>FfNgbtnBKf}Op8y$?D8}EZqYm4n#LhH8ynh${`{$AZGry5 z7wX|z+Zk7Vx!-7sU|zRX<=q5!T$G{9lHA*Ftr9*m#>$U@E1m$$%Z<=2VC#2^tNklq z<~DF{mv|1wTrQOuv@hO=7 z9mhj0`u8nNia7PYEp`n*Q$f1(b8<=EeP-V6Ij~iCFgkp$gTjv|Eu@rjWKO~lgDgwU5RJy^g=Ev+sL?ks6nR95_yR~>f z@2i0i&DpK|H=WaYzxUX$EHq>a_b((`i^Z=j*%yq|y*9*$<)3ytkJtKhQ6Bp+BP0 z1G^Eb@{>ott(Zgf`mOc&4ME_r&MSDJ4#vA-9XRV(mk%a^5^(_^BCEhbAmBrE5r8o8 zA&LXQ{Qn0G&=5&UByAik7T53xTp7xB~uv_&o2w*!zM7lx}e9>-_-Kac~1JC`*X|K_p^0VBa(2v1Nr!0 znFbSlXJYaybdjKoT8Y^NI5nNS3$Kl*RD>;*Wvt(~Yg4ZJT72bC(A)N88Jr1Nc--o-hfg&i7a&H;X1W z^j(Pu7P^{g@N;Sf6Vg>Ly2*^FTZe6G zG}{xTDKku!IX;iu`{L3s_I$?%!{(jN(QK0Dg4eB#zhSX;hZRDt;2#R*QgmpJC#X;4z4bYeR-1%=e~FDdM^*DJ8LSH z9QNeD3vcm>HJ=wYA1FD*Bq#e?^d^0d_%xt(OEw7HDvP^WDIV*16)^G34y{rsGSeU| zUz=jiD!s==leROF?D5kW`mdE?r#MCw;}<#}fol~eOx7kjK0MJ{S691}7F^xlW>PV^ zk`*8Krc&T;=}>nbB2UCPHUSrwP{!?Fttl(?Dskwd@AuAnQ5u$C1wQ37nk}jU@N=OY zI-OQ!sZN3gP>z_q&rf>QVFK24Aj)|Y)sST-T@)L)cp+P!lmVNH~I^xy}>Vxs^2u3;x|{4Iaq-^;Vm(F=4DXTDq3OQ zKqo;>OHs}+^UgErUFq4rB};5Qt(7|N_TfE{>mSbLsw1^E3uHSLKO0b9 zPYhSc&;#r)|1mjKlaY6S$Ge&rM$iJgtChk_zy{xu2+o62`` zioWXXp1R&AVF^rjE@cK)hmRAvy2ihOWAA`2(C3w!yRe<(ov(Ei$2m^;@e8S z@hFu9!0%(YI*Dv@ap{Z@RnU}HREJ(15C`Qpj(pS2|AYiIyJz0?*FjR z)4w>UdtIrD5p$i2t=11Z`hSKjzcjt${;R!>FyZtfE@))vdZ9x*3BSdFE&*DL!3Pib z-237pJxU$Lnn3=zN`vPl>gk;(1MtqxowAWo@gEYL#~`@50?>||3~bRQ-gNjFPb82 zs%UzC@LzHEkD z1*A9#9!Af{Q;9!=yT9{r9Mx=5hL5=N1JdvkrAc%WbONNwZTKrqAk8plJ!EzIbS;fd z>6)R9a1lDKTE=7~%V_^;#dLA}y4$ck9D?ZZ=SUX+=(baVv=__`q@O>>V@I$WqF@By zl@&~Rc^Tet&FKx^V9di`yGB>PVM_V8+0U|I`_sVg*4 zcVf4+xA`SXgMS~>@XsqJgg!AKxaX`^fPm2Q{~Hjew|c~$k*-I(KU5qSet%f(?~`+K zI~vdH$to0hH7QI&BOrBI>`8D>gxB@PpW!3z7iNbYSAtRgbt4b6Y+DVt?t)9(U3RR$ z)Y^H0U$}i*%#z?7HE}Xc(!Sqno%Ufz`mC?zsVq_kgjCT=02#2~*b>Uw8JtM=-0t`e zbj93vMYrH<&Na{!J5q(~`r12C6!wP~=MU z{Es&eHCbrdXLACtef@AVvFtk}{9;OKgMD;E>w-agnUZ&YFq6*n$B6vk*FQ`vjtm!> zfzkU~oBqnf5HV86HeyH1cMG`<(I!!#i2ZE?Q;#O$6l9RUmXDdGPAmvEknV}6(6f$YUOE5aL?1oSpp8X8pc4; zR&iD3=uthEgAP-dk<&V>sEu8OrV_~@GRcpIYp$J}&v*DS`15T%sTH!lFoPU$G0Z!Hc!`g>@O*x(k8 z^80EHEv-ulNobUW{yydr-R2+lZFBVl?Ga;5eM8yJ-P2lE3JrZDma;`UqqLTP*Ii41 zcIfZBtL|kwyfF4aLh=x&`}4*eQ^WWMp={&wKA$?}xkAoewi>&73`F&;Oh`XP>oae%E8tEVkg?$0XC(^!hs1 z28Ys2udlEtNeYa$5slsXg>01!wb}=dHLv4tKB}71HepAku1uwP>yB?c)|5`zi&zZQ zf5KQ@D>RUf3q;+k{ki<#lhXKwcPhZ`6f*GLWE6Z zFv+-1#%D-SKFT|03{krnexv$}&Th_-ZG9h-bUK?(g|Ba6vPe0MZFw>bXWzg%Qjwdd zY~KmjqB_ABSXH<^WPLHhTfp|5yYA9Rz9eTq7N!`$p8Dr}I3jn|7t;0?oqeph=a0ZT zi7;22qgA$$Z@9?k~=5f_MTNg8e?{CT7Oxql6se3`YNQWChvfgq$Md z&@IuWgGxDZWQ+>h+4;Oz!#6GRip`rstbk@|B&9MFUr>6&LpG+!y{=9q-P^vv)DgVW z!a~*{0DTz&2m1EJYGk+KRV>3o&wSVuR892YwmgZ(siv_aNNd*Bk<}1h!@37_%3VRB zcr=_xA_PSQH3WH#^!%CB!vChf$Zdq@RUyB)%A{syebBu&a&*<`LFfFQC?saJyVPIA zgrhpkB7@V&-%QD?Hq4yQ<9R9od|~R@C3}@F9qt?L)g;bf+3FQ_2jz~ugBLJ_AOFHA zM^rd2?yzjL@6GNcNTpsI!37+>>=i!C4h`=K^o=WXdUSss<4`YmIDg|IjsOL75d@!= zH5zPFntN+V%T5KIMN`{4!+pz~|v$A7?w6ZL-+Lv`IcOCF#bBelOD_v(|-?0t*MQAqw zS+?6}g%&??N*f+t_AtW@O6WiFy++^>EnZ`yF=L8%xNy_Gaqt?3PI_X%IaH_N^ z3Eql{m`VUt(_GrVUMN*O0Oje8@G&;K$}dRTEK9D19!7>#L4jPDzA4zAZkm1nee z5=r0o>mXDGmrLY{rn?O?AiE4khd>s@Iq*T>1in@=LUb@*7l2zR%u*LC4{n#87K~I`GKU#I10nNlY3TCwDTq&P|8eQ+ z!mY>GU=(=w85F0E4-G9k;W%4Znw_%bIP%SPc~wf)?YcJVwFrdj7r|q90o53x6zhY( z1ffb?PPBn2o=43lqo#@z@@Tr)yYKhw*+k8sbYK^Hv`i88TK0T(Xde;DxI}ZT+F^odNTqwQ z7|y=?8F{TDc-iKO@#SMXd*7T@d@NuJ&&1lKqU8S5G9Ms5idy$DIfJ9_-#G^f5s@`K(F!mE#ElKH1E@9TqV zggNH{Vv&C6v11F7Cqq!&coX>w>=C<@5(|%O2CkAGW-$Ysng;d{X-|!PsIZvmFhF=T zf(&;li+Y)4F-sV81${^%t4~N+vS+4MY;3;U zJ#QuCJm;Oj-SPXtvqt)LNHlG~XCjK5OTH)#ac)W9XegYv zcn7oUtvA3koKEKNbMmK&L>;u~)kGGL4mHpXd0XY=SLUA+3!8eLp(R&WP1fuA{`ygE zF1<9{L*TmXA)l=3EGlA82~4K*yjshMjFi_Ek`wbS#@r}Kc|4-uJbm){#m=wRoYl+e z-UCIzCtir*wzduj`WsL? z;$uv1iSVhz_~MJkAQT1&%iHweU$_STH01ZBGLY1HS&}Lb?(z}CAG`XpF2g@;LqOJH z1$5Xun7;kiYGLC+Vl5%zTgr0b~ zjHYYXRZknP`p>l;1;O&q1?4X4V7itXcItl2kM6iq6|Hh!vJ*{cIVLRlLa2>1X>@_TeD&+ezcAkm8$d$(WW%a_bK;&b%2EzNy*`nUf^L<7INX7+bxFuCH3!IOk(3x zOOL$Hj67axure|v5(oktqsHlp3bM1Co`pZ_mMWO+*N$RWY-%(^W>%uA1vVW@ zJde;m`Uh7qzN$}{G3J@|k~mShTL{sXf&wja&tfu1q(Zv#@FAzHok}7++1{R1D#Eek z=?~0!Zho7G4QLgCj3%~!+Zd<)yT%4%N#hXb-u0OD&X?))lf~7k{ztoGbzJZoKJ&G} zf4Ytx|bUZ*Kl{Bo_DFern89Kj_oGoz!)n9kCL}9iTSoD3feWk9+RO z)v#fFg`*O=)5I4w^SVtgJU04`AN=b@v2K}*Uic&<;e;5L#S?eiPm-Y@th=o86%TK5 za&#+H5QT^kAB%n<3Gu&fgCH^Zum;E;fQ@!DEVILSi(9yl&S(LMPHk#5FN6v#VYcfJ zadfv%D4N4QILYQW+4g0viU3g7Cyq9>gn1ZF4g%Ak(d6I=r9ylW(M%^V0=9DF|^tG!nV zAQ5+?MGQX$TbAkP{Ujl3e?`}w-GeB4JLh=7CY~R2%`u$k?V#nt<^gW1svT`T#-B%) zZ6b50B}!@XZHA}MDE;5G!=Pnf#J21Dm0+XB1yKZArxO&h5W1Vopc?s1--iV2Qbrj!Zf~v_?UN;4@|G3m$`r3vBM4t1IgXI`YldHDpp$RX znA@>%>;m9dk~u6bJ4Q=eF0PnSIF@^x%KIDD=?tNYhk2c)4Vjt@1JuQkCB5Kuf`Iss zRJm9wsp;#KgvUcZk-wp&RcBGLl*%~sDTy4hBS1CR42>%qdUEK*Y8ZH6avt5;CASK;2bG{EbydT>zdcn@%B_8 z1IIxCm~AR25&H$AhLb-cVJ|Q4gQAhencUBUz;uWrj-uSb&eQhrSC5_h+wC1O`2uuA&J2cDIp9{_jl~gM#E-WZhASQG)T2Y*Nkx?-rrT5ca6ZKkh7_hH&ii5v}^4e7R~j``M+V0*qDhTO)D!-Aihjy_Aq=_1oP~j71xoX zpCxVhU1I*0j@ty#OwAKuoNz)EM2o|1S~Bx+DMq literal 0 HcmV?d00001 diff --git a/docs/new-docs/diagrams/account-spent-offset/main.tex b/docs/new-docs/diagrams/account-spent-offset/main.tex new file mode 100644 index 0000000..ef3c435 --- /dev/null +++ b/docs/new-docs/diagrams/account-spent-offset/main.tex @@ -0,0 +1,85 @@ +\documentclass[convert={outfile=\jobname.png}]{standalone} +\usepackage{varwidth} +\usepackage{tikz} +\usepackage{xcolor} +\usepackage{tikz-cd} +\usetikzlibrary{graphs,graphdrawing,arrows.meta} +\usetikzlibrary{arrows.meta, positioning, quotes, calc, backgrounds, decorations.pathreplacing} +\usetikzlibrary{patterns,patterns.meta} +\usetikzlibrary{cd} +\usetikzlibrary{fit} +\tikzset + { filled/.style={fill=white}, + account/.style={draw,rectangle,minimum size=6mm,inner sep=2mm}, + note/.style={draw,circle,minimum size=2mm}, + spentMarker/.style={pattern=north east lines,pattern color=gray}, + boxAround/.style={ + rectangle,draw,dotted,rounded corners=0.2cm,inner sep=3mm,outer sep=1mm, + }, + } +% \tikzcdset{column sep/normal=0.2cm} +\begin{document} + \begin{tikzcd}[ + % row sep=normal, + column sep=4mm, + ampersand replacement=\&, + nodes in empty cells, + execute at end picture={ + \begin{scope}[on background layer] + % \node[below right=2cm and 0.1cm of consumedTwo,text width=3cm] (consumedCaption) { + % Joined before, can not be spent again + % }; + % \draw[-,in=-80,out=180] (consumedCaption) to (consumedOne); + % \draw[-,in=-80,out=110] (consumedCaption) to (consumedTwo); + % \draw[-,in=-90,out=90] (consumedCaption) to (consumedThree); + \node[fit=(consumedOne),spentMarker] {}; + \node[fit=(consumedTwo),spentMarker] {}; + \node[fit=(consumedThree),spentMarker] {}; + \node[above left=2cm and 0cm of spentOffset] (spentOffsetCaption) { + $\textsf{\colorbox{green}{account}}.i$ + }; + \node[above=2cm of aliceAccount] (aliceAccountCaption) { + Alice's $\textsf{\colorbox{green}{account}}$ + }; + \draw[->,in=90,out=0] (spentOffsetCaption) to (spentOffset); + \draw[-,in=90,out=-90] (aliceAccountCaption) to (aliceAccount); + % + \node[fit=(leftInf)(consumedThree),boxAround,pin={[text width=4cm,font=\normalsize]-90:{ + Alice's notes here are already joined, and can not be spent again + }}] (boxLeft) {}; + \node[fit=(unconsumedOne)(rightInf),boxAround,pin={[text width=4cm,font=\normalsize]-90:{ + Alice's notes here are available for joining + }}] (boxRight) {}; + % + \node[fill=white,opacity=1,draw=white,rectangle,minimum height=1.5cm,minimum width=0.5cm,left=1mm of leftInf] () {}; + \node[fill=white,opacity=1,draw=white,rectangle,minimum height=1.5cm,minimum width=0.5cm,right=1mm of rightInf] () {}; + \end{scope} + } + ] + % |[alias=a,note]| \& + |[alias=leftInf]| \dots \& + |[account]| \& + |[note,fill=green,alias=consumedOne]| \& + |[note]| \& + |[note,fill=green,alias=consumedTwo]| \& + |[account]| \& + |[note,fill=green,alias=consumedThree]| \& + |[note,alias=spentOffset]| \& + |[note,fill=green,alias=unconsumedOne]| \& + |[account]| \& + |[note]| \& + |[note,fill=green,alias=unconsumedTwo]| \& + |[note,alias=lastTransRight]| \& + |[account,alias=aliceAccount,fill=green]| \& + |[note]| \& + |[note]| \& + |[note]| \& + |[account]| \& + |[note]| \& + |[note,fill=green]| \& + |[note]| \& + |[alias=rightInf]| \dots \& + \\ + \end{tikzcd} + +\end{document} From 8800999b60d5f1d08e290386ded4950b08ddde3b Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 21 Jul 2023 18:40:57 +0200 Subject: [PATCH 15/30] Update --- docs/new-docs/02-overview.md | 2 +- docs/new-docs/03-transaction.md | 86 ++++++++++++++++++++++++++++-- docs/new-docs/04-zero-knowledge.md | 2 +- 3 files changed, 83 insertions(+), 7 deletions(-) diff --git a/docs/new-docs/02-overview.md b/docs/new-docs/02-overview.md index 8d6adb7..e3235e5 100644 --- a/docs/new-docs/02-overview.md +++ b/docs/new-docs/02-overview.md @@ -1,4 +1,4 @@ -# Overview +# Functionality Every user in ZeroPool is associated with her private spending key $\sigma$. diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index cad284d..d61ba54 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -1,4 +1,4 @@ -# Transaction +# Transaction Overview As mentioned in [Overview](overview), ZeroPool encodes all possible actions a user may want to perform on the pool with a single transaction type. A ZeroPool @@ -68,7 +68,7 @@ separate sequences merged together, one for accounts and one for notes. ::: -### Account +### Account Structure An Account in ZeroPool is described by four fields: @@ -99,7 +99,7 @@ Alice's account has no effect on the notes that she can join with that account, i.e. the joined notes can go either before of after the account (green box on the picture). -### Note +### Note Structure A Note in ZeroPool is described by the following three fields: @@ -114,8 +114,84 @@ owned by. The values $d$ and $P_d$ are derived from $\eta$, but don't reveal $\eta$ itself. In order to join a note, the user must provide the value $\eta$ and an account (belonging to $\eta$) to join the note with. +:::info + +**TODO: What's written here is inaccurate. It's not zero hashes, it's all fields +being set to 0 make accounts and notes behave in a special way.** + +In practice, a lot of the time we will be working with hashes of account +and note structures. Hash values equal to zero have special meaning in +ZeroPool. + +- Special zero account is used to create new accounts: zero account has $0$ + balance, no notes are associated with it and it can be spent multiple times + with any spending key $\sigma$. If you want to create a new account, you + "spend" the zero account with your freshly sampled key $\sigma$, and after + that you can start using your new account in future transactions. + +- Zero note hash means "do not use this note". Since the number of `INPUT` and + `OUTPUT` notes transaction works on is fixed (to avoid privacy leakage), we + need a way to encode dummy notes that are not to be used if the user wants to + use less of them, and zero note hashes do just that. + +Due to collision resistance, we're extremely unlikely to ever encounter account +or note values that will actually hash to zero. Therefore, it's safe to treat +zero hashes as special values. + +::: + ## Merkle Tree Commitment ZeroPool smart-contract does not store the whole sequence of nodes and -accounts, but instead only holds the (publicly known) commitment to it. We use -Merkle Tree +accounts, but instead only holds the (publicly known) commitment to it. We +use Merkle Tree to commit to the whole sequence of accounts and notes, and +incrementally append values to it. + +Consider a Merkle Tree of height $h$. To store the sequence $s_0, s_1 \dots +s_{n-1}$ of accounts and notes in it, we assign first (going from left to +right) $n$ leaves of the tree hashes $H(s_0), H(s_1) \dots H(s_{n-1})$ and fill +the remaining $2^h - n$ leaves with zeroes. And we compute the values of all +inner nodes according to the usual Merkle Tree rule. (If no transactions have +happened yet and the sequence is empty, all leaves of the Merkle Tree will be +initialized with zeroes.) + +This way, for any sequence element $s_k$, its index $k$ can be naturally +interpreted as the path to the leaf where $H(s_k)$ is stored: decompose number +$k$ into $h$ bits and treat $0$s and $1$s in it as a sequence of "left" and +"right" turns leading from the tree root to a leaf. One can also efficiently +recompute the Merkle Tree if some leaf is modified, or even multiple leaves in +bulk by updating a subtree. We've covered this in [Background](background). + +Even though Merkle Tree allows modifying any leaf, including the ones we've +assigned before, we only use this functionality to append values to the +sequence and never modify elements that were added to it before. Say, if the +Merkle Tree leaves currently currently have values + +$$ +H(s_0), H(s_1) \dots H(s_{n-1}), 0, 0 \dots 0 +$$ + +assigned to them, the only modification we will do is assigning value +$H(s_{n})$ to leaf $n$. + +Using Merkle Tree commitment to implement a sequence of accounts and notes in +ZeroPool means that the total length of the sequence can never exceed $2^h$. + +## zkSNARK Constraint Systems + +**TODO: Where to introduce nullifiers?** + +The global state maintained by the ZeroPool smart-contract is given by the root +hash of Merkle Tree containing accounts and notes sequence. The smart-contract +allows anyone to replace the root it stores with a new value only if the +sequence commited to by the new root is obtained from the old one by applying a +valid transaction to it. + +TODO: Introduce zkSNARK CSes. + +The public inputs of CSes are: + + - root + - nullifier + - out_commit + - delta diff --git a/docs/new-docs/04-zero-knowledge.md b/docs/new-docs/04-zero-knowledge.md index 6960159..355d14c 100644 --- a/docs/new-docs/04-zero-knowledge.md +++ b/docs/new-docs/04-zero-knowledge.md @@ -1,4 +1,4 @@ -# Zero-Knowledge +# Technical Description TODO: explain how the transaction from the previous section is implemented in ZK-manner. From b7f8c90159c1bf2e986246e1394bf89b4ac729b9 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 28 Jul 2023 13:55:02 +0200 Subject: [PATCH 16/30] Specify randomized mappings on keys diagram --- docs/new-docs/diagrams/zeropool-keys.png | Bin 47307 -> 58784 bytes docs/new-docs/diagrams/zeropool-keys/main.tex | 20 ++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/new-docs/diagrams/zeropool-keys.png b/docs/new-docs/diagrams/zeropool-keys.png index b8d75df51f98353b817eab7601a490f115831d8f..b89b399833b467d3a7607b9972b6250b87257393 100644 GIT binary patch literal 58784 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 Y0oK-pI$pqZ0+07tncH2ifn7`f2d`0OBLDyZ literal 47307 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 diff --git a/docs/new-docs/diagrams/zeropool-keys/main.tex b/docs/new-docs/diagrams/zeropool-keys/main.tex index 97c46de..c2943d0 100644 --- a/docs/new-docs/diagrams/zeropool-keys/main.tex +++ b/docs/new-docs/diagrams/zeropool-keys/main.tex @@ -5,6 +5,7 @@ \usepackage{tikz-cd} \usetikzlibrary{graphs,graphdrawing,arrows.meta} \usetikzlibrary{arrows.meta, positioning, quotes, calc, backgrounds, decorations.pathreplacing} +\usetikzlibrary{decorations.pathmorphing} \usetikzlibrary{cd} \usetikzlibrary{fit} \tikzset @@ -22,9 +23,12 @@ keyNode/.style = { text width=2.5cm, }, + snake/.style = { + decorate,decoration={snake,amplitude=.3mm,segment length=1.3mm,post length=1mm}, + }, } \begin{document} -% \begin{varwidth}{25cm} +\begin{varwidth}{25cm} \begin{tikzpicture} \node[keyNode] (spending) {Spending key $\sigma$}; \node[keyNode,below=of spending] (verifier) {Verifier key $A$}; @@ -34,19 +38,23 @@ \node[keyNode,below left=2cm and 0.2cm of interm] (recieving) {Receiving key}; \node[keyNode,below=of recieving] (outgoing) {Outgoing key}; - \draw[->,out=-90,in=90] (interm) to (recieving); - \draw[->] (recieving) to (outgoing); + \draw[->,snake,out=-90,in=90] (interm) to (recieving); + \draw[->,snake] (recieving) to (outgoing); \node[keyNode,below right=2cm and 0.2cm of interm] (address) {Anonymous address $(d, P_d)$}; - \draw[->,out=-90,in=90] (interm) to (address); + \draw[->,snake,out=-90,in=90] (interm) to (address); \node[fit=(spending)(interm),pinnedBox={30}{Private, genedated once per user}] {}; \node[fit=(recieving)(outgoing),pinnedBox={-110}{Freshly sampled for each transaction}] {}; \node[fit=(address),pinnedBox={-70}{Freshly sampled on demand, hides user's identity $\sigma$}] {}; \end{tikzpicture} - % \noindent + \noindent + \begin{itemize} + \item \tikz \draw[->] (0,0) to (1,0); denotes a deterministic mapping + \item \tikz \draw[->,snake] (0,0) to (1,0); denotes a randomized mapping + \end{itemize} % \begin{minipage}{15cm} % \end{minipage} -% \end{varwidth} +\end{varwidth} \end{document} From 4e7986bd7d807d56b1802f39f0efa7165ecc38b4 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 28 Jul 2023 13:55:07 +0200 Subject: [PATCH 17/30] typos --- docs/new-docs/01-background.md | 14 +++++++------- docs/new-docs/02-overview.md | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/new-docs/01-background.md b/docs/new-docs/01-background.md index 280f473..8a41b6e 100644 --- a/docs/new-docs/01-background.md +++ b/docs/new-docs/01-background.md @@ -14,7 +14,7 @@ high-level overview of how zkSNARKs work. ## Merkle Tree Merkle tree is a mechanism for cryptographically commiting to some values. It -allows efficiently revealing part of the commited values, recalculating the +allows efficiently revealing part of the commited values, and recalculating the commitment when the values change. Leaves in a Merkle tree contain hashes of the commited values $v_0$ … @@ -69,9 +69,9 @@ a leaf — verifier who is checking the proofs gets to see which leaf was modified. With zkSNARKs we can overcome this and perform both operations privately. A -Verifier (for example, a smart-contract) can hold the root of a Merkle tree -and allow a users to replace it with a new value, only if the user supplies -a zkSNARK proof that modifications satisfy some criteria (for example, that -only one leaf whose index is within a certain range was modified). We can prove -Merkle proofs within a zkSNARK proof keeping them private and having Verifier -store only the root hash of a (potentially huge) Merkle tree. +Verifier (for example, a smart-contract) can hold the root of a Merkle tree and +allow users to replace it with a new value, only if the user supplies a zkSNARK +proof that modifications satisfy some criteria (for example, that only one leaf +whose index is within a certain range was modified). We can prove Merkle proofs +within a zkSNARK proof keeping them private and having Verifier store only the +root hash of a (potentially huge) Merkle tree. diff --git a/docs/new-docs/02-overview.md b/docs/new-docs/02-overview.md index e3235e5..f2a0203 100644 --- a/docs/new-docs/02-overview.md +++ b/docs/new-docs/02-overview.md @@ -37,7 +37,7 @@ one ZeroPool transaction does the following: `INPUT` number of notes belonging to it, 2. creates a new account associated with $\sigma$ and `OUTPUT` number of notes - which may belong to any (not necessarily same) accounts. + which may belong to any (potentially different) accounts. The consumed account and notes are called “input”, while the produced ones are called “output” of the transaction. So the transaction always “overwrites” one @@ -56,8 +56,8 @@ recognize them and understand that they shouldn't be used. The transaction reveals the difference between the total balance of input account and its notes on one hand, and output account and notes on the other -hand. If the difference negative (output is greater than input), this means -that the total number of tokens in the ZeroPool has went up and therefore the +hand. If the difference is negative (output is greater than input), this means +that the total number of tokens in the ZeroPool is going up and therefore the transaction will expect the user to deposit the correct number of tokens to the smart contract's public account (on the underlying blockchain). Symmetrically, if the difference is positive, ZeroPool will allow the user to withdraw the From 3aca9e322da54e0e169495af95b4ab319e9bc8d7 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 28 Jul 2023 15:46:39 +0200 Subject: [PATCH 18/30] update --- docs/new-docs/03-transaction.md | 34 ++++++++++++++++++ docs/new-docs/diagrams/zeropool-keys.png | Bin 58784 -> 62356 bytes docs/new-docs/diagrams/zeropool-keys/main.tex | 14 ++++---- 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index d61ba54..d90f4a0 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -23,8 +23,42 @@ instantiations of the same account, and transaction as modifying this account ## Keys +The spending key $\sigma$ is the main key that controls the account and from +which all the other keys — private and public — are derived. The following +diagram shows the keys ZeroPool uses and the dependencies between them. We +use straight arrows for deterministic mappings (which always produce the same +value) and snake-shaped arrows for randomized mappings (that can be run with +the same input many times and produce different random output each time). + ![ZeroPool Keys Diagram](diagrams/zeropool-keys.png) + - Spending key $\sigma$ is used to sign each transaction, which is then + verified using verifier key $A$. + + The $\sigma$ is necessary for spending ZeroPool tokens. It's supposed to + never leave user's device, and is only used to sign transactions locally. + + - Intermediate key $\eta$ identifies user's account in a transaction. User + uses $\eta$ to create transactions, and later to prove the transaction + correctness using a zkSNARK proof. In zkSNARK, $\eta$ is treated as a secret + input so proof of transaction's correctness does not reveal $\eta$. + + Compromising $\eta$ will deanonymize the user, but won't allow the tokens to + be stolen (assuming that $\sigma$ is not compromised). + + - The diversified address $(d, P_d)$ is used as anonymous address that a user + gives to others in order to receive tokens (through notes) from them. It + does not reveal the user's $\eta$, but allows the user who presents the + correct $\eta$ to claim the tokens sent to this diversified address. + + A user can generate as many diversified addresses as she wants from the + same $\eta$. If two different senders send tokens to the same diversified + address, they won't learn anything about each other's transations. + + - The receiving and outgoing keys are picked fresh for each transaction and + used by the receivers of notes to decrypt notes posted on some public medium + (**TODO: Which one?**). + ## Sequence of Accounts and Notes ZeroPool organizes all accounts and notes in a long, evergrowing sequence. Each diff --git a/docs/new-docs/diagrams/zeropool-keys.png b/docs/new-docs/diagrams/zeropool-keys.png index b89b399833b467d3a7607b9972b6250b87257393..27e57933f567d172dac07cbbc8ce4e6b585c22c0 100644 GIT binary patch literal 62356 zcmbq)2UJr{*Dh8-P=rVof|O8{VnC#WQiK3fRZ1jC7a<_MgknLulz{Xi(xi!i5Gesc zdR34F2!xj|C4}C~J@I}2|NriP?_GD@@3NK)IcH|ho;`bJ_OqY8!}WDFE?(fcKt)A$ z5vHkTNJVuHL`8L8jOHxx#7)j!2l#c(TGQ}86_uX=71fJiDyn_p(Tm?yRGv4fs1~14 zQOPA!QL#QxuQgBrUYxel)=;B5361G#1pcCZu4(E{MJ2{Z`FF}EPuUB2NbLc;uTDKr z%}FmK-Kp|W5g3gMrgry%&*<`za+v(YGf6mD7 z;h?CYw}!cT_L!ktt~ra}ARrS)*Fq>(z5 z9W9`_3(mXwhU$Obo05;nc$ZnMVQmj_TvA&T(2KNaIZdE*XA6(fliqF&5>m5G9N+5K z(AFGauwi9UQCYv5`Yv?L`lwP{Kq+K%BkPwtX5B#8+>X2=CuF9A4&-zMS$^ZSY5XgI z0~F-n`B=avz2@DaCj)OM#uUQV&r_cyB|J57K^w4M^qZ=7UeTlsPj0kIZ_ zp+B`&hqpMGphF}w6-%@8hYsZ3{8U5Smv_2gaxRAG$V|=0~9ZShaA)%DZDY4E+o)uNkz&y4suTC-3 z@#btF@!8(7QHx2BV82mBl7gkpbBpZ>qgb=sBTk)@m4$!=dcrcg3!gNFMWiDtx0ZWy zJhPb^bvm86t2Bcn&YiI<5z><_x+0RS59O_RkHJtsBoH(9!yP8N4%(}=g}El2`Bj=< zbi9g)h@f@d0r_ppSme&s2JK%$lvy>Eh|#hf9QaR-vdRXg?MU!RSpM+84!Ulaa7FD= zX0Q3<$71QRBClv@C3%O~`>!&lAm4<%I%kS{YWW%C471tts`-#R`dHUZf~Ac03X^~u zOK8$Xtw$o&;=Tzb$w;IWQmlU~FYw1<@rO~mm)s=ts-v=A4lZln*=;3cH6qYH+#=sb zsF1C`P3=5A?@S9`+Y6J^_2kC(FLM59WE(ScF*ezCN-#g*2AP{6mgnJA*IQ@G$iB?= z{gQH*n33DKasWXC{mS&{Os;Q`=Wcf&;()iEygI0e_l*XtgWS+RW%?& zw2vk!{6-Aim{Te1w>h^YFF%g~1bz@n?l2Q?jCY2{C3HCL zRP=mAiZ|x9C_j{_BRu)_tG9KW=IGcU55tv{N@`CG)2}*T4pM?5;R{|)6XJQ+C~r2V zG;WEEpoD;i8Qp_TDflp59KVQH(Cv(>?SdGKjn1y^Xl+ofu%7(uny+8KvVrPY)dEf{ zWd}ym#y#wAt@ma#6Ef4=ADMK#&H8rau6g_9ZKFpd)ME>|+R*Hno#-OcJ0bbD7J=JU zkIz#Ja^)-~>=tO*kw4~tL!IT-a9JjhJQu;;YDz#1B3h8%34^YI zAl{<|Wg{v>1HX8xfAwcpZjZFb1P?VaB%n2&8i!Vjm&{gkC1`uV@o@D*Ts3F;7VhL^ ztWLgkMt5)XK7)KM^!xzslLD~Cj@NE1ib;sJcR~#y=AE>P85St~cq#OR{p394WPG)8 zDrnDAZwzs8?nBkgA|kUp5!naptbOd0yn?u(q80c>dFIQ=_eu4gPxOxa@@3LwnYH2A zS5XTH@g7J)z=u!psifhq!`BzV@%!{@YuYh^UBD&Npe$gRxk}g-JUBR9I>h_k z26pH7sJ|&sliMAxfLGJre7MFI-0q^z}85^H|bw-JM zhi7p09t~=lkLbQQjW-|8kUR?2KQ3vZyGiDpAyNcMR~vejPV1d)v?}aw9~x?ebL9}Q zKO0UKT65&Y5H3VyDOIz|Tj3A9EanE2vQ|swkR-8o2XOw(49|$1L=Dtn;B8CG0gHqH ze~(_ROr{sRd0Ub=O1{7%U1_XN#*Wj?O`^i?fIa?4VZBP*izuo7tdhL_Xr_~{>2347 zYoPY+sjL=9e~kFX!a-nvkLGV|wGTZzqz}v6ne4Mg2Wx&2%p)#n&Zbu!^YtF}`{l7n zcg;?3vDA$1l`3;nO<`eJ2T{zF``)TlOqTPTopX>tMCaJu2MPfqh)y2G8HehGn++)J< zW3%o~-q$GcLrWs$>ziOk+SSd%?oIr=T^PijS~;#yzIq|FRJ|Z=`UI;?CBC*$j7jh~ zd5~W1We*wL?cn>7qoJFn9HItX;EonrZhqg4c2ZkpJ~`5=U_w^6!Vf#trLWkVYqs~c z)*>VCE8c5|8;ozS{FQM#z*1T4rJqU4UK7!YgbI^3ox;mFV}2i69}pSSZc91%9@uY2 zYLR)f8cKJ{SBB%rU#jZ5me6ne*Pu#m1;a7hu8B4}hp)70H}y)8KGG`7<~P%nrm~-w zda|Vt2HxmPIqjesgZSX($d1bzt4q|s((X}H_$c)4_wLz33}4y9siiUnXUyIn`MFbn zIG;w0iDt6D!GihX;La#Ma2T4LQSIfuvz`(Ud_-79%lC4T5>8nzO9LM3YZqWc0&n;b zqgcgzHyGZ1^LH7mnw(xAP7GpL#dZAv`zSo9!6vXFCWeH{+iYTV z+!HnmG+oHpS&-jVdlPlqq&ix_cXTwXJfGhC7F#^vQt0VZeK!&}bL|B!eTQzTEM1#% z?Uan=F3B)h9a}iZAg1oxC#k<;vEKY5L8>3M#Wp=Rb?lXrmG#v-H0c0Q;G;NRWbRAH zV;ewwkv2G2+k9w9>u>|&9>}FfR2+56%^LMOc%-CMO->jnC*9VdzgJiFF59TRfbQLx zZ&m~LCJWQ~Z~L0x69#d|J!@&FD{qdN-OIjUy9*gF;SV@dP-Ul*E3=fseuH-i$EWyc zGd1YJ%nUrJ8@Tvlol3FS2%~1Yov$=)?!pi!Z`0F@OdZs88>-&CVvZxuP0*g948rmw)#<+eqL>gP|L3)1Y0tWx;ZTNz3j$XWP(n>uSaUU zl3nA|?u!NxNWqhP{1qQCrt**iCvcesMD_^eZgYbxhO}n*Y+_~ZNIa}Z)4Qv3*`q{U z->o2UKUH+cq&@?rnNk&0T>B{?1@MWSFD1bU-o)0{*4aV!PTu$LM;kt8ZH@&;Fw0_x`Og~J+6Le`CABgfV zui6gJO6G$v_&deCGd%Fx(Gr))w)*zL@qLX>XU6`5V|9GIge6X4`ZuO%X*5YTka2x( z1A{HOou&NxLu6!kYf^N^;bx}3-l^O69QezI5pyA9^`!hkI}%-W-?Qo(o8v%@^jLIU zxs88`L%;#?&EXa{IGs}|FfUQmKG){kW+~o5v%@44aVbfB&0Tv=ObMG2Lu$|4oD}rf zSIon24YFSM`(~YvvsOhnz`=s0M+-apKOL_UJS7KaC63peL>8Lu!2o>WI^U>WcGRhO zgN=*f6_53K1@!__yoZ68Wn3=7cvUyFT*kgfP@^`10(FkmXzS%^eh%!}#nhTp27jX{i!NaN|8GS02MzsOsPJD9*?)n`e+w1K41!vdE4?x(z;c=_u>+^?*?#BSe-MP%|ymRlt8|d0` z^rjy<=qP;xnW7D793O9T)|>57sLo3%FGzV0WTAPvSw&MbP_TCZEy}pezI593a@WRl#Rs^-FTOu%3 z#&&y+&$;YiYq0Y29$Q8JBbVN4&jTKJBd3>F$#{}XfV$UQt*8yneQsTdY3i;3BnB_HQZdmkSt9KPDR(UN-f0_HuRI+YYv2RMRxMT-fJB4C`1XHET7!Dmhy3 zeBv^W?pP!-X~3##&d%D1AjDPpb;3k0iQh^nF>$gG5H^JpMxSY^SA|Esp0i*cLeLyO zB^Qx`khtG$AYsgoL*>?bu8;-P=WRGWn_5RWfpyTi%vcy((V5A<8@KbSHioG+j?%qP`qmCM4-^;Jq_bEq*m;&9wX!b-jf^;Q-`H?h zGM1m!Q@3e-vNT?hnE@chKocE)+ix}}tlNDqB-+>3QtDTtk~t%(xt;6UgMS8!4(kTA z=awF4%RV%2$Bd^ZM1oYOmRBWUxU&_o?sJw^tiAU_tCD-)Q8J??VhpIBksm3mw2)>hiro^x&T9mncUGUw8gT{VB&iV@CM={^`zPfNx z%N)5dk+=~Am&w2~(s$8*{fqZW)7rtzf#MolOzM-z)d?+@Y)VK{(b0j&z80f6>grnaGFcOM7@_o)9%-&Wbv*l&{Dm#NF6s4aq_~+g9|SJ#*~KRvy=3dL z80d0@7T1dsDNZ!}&4o}BHWLSpOx8JwNmjnzkNb|yFNscQ&4mOufI!Mb`J!s$56f&I ziT7MskahAlc8oZtXO;x6BkIg<44sw4X! z_W3v3b4?e`Qrjw&jLSQc4iEd8X^UTLBC=Zj5Xp}L_1ow;iFH@bJ?gpp*Rw!8YwyMM z5~+?YA=4_{a7ma>v@`05Q=Qzvr%#_^giN>)5~&<7a}Kau7uI~t?Uw2a%^al|#Aze9 z;hI~4RgdjhNYq7;U5JLY#fYpx;8*VlNLH(LkhN9dYBY;|Ys=4hi`if|C6Z>A*8}2s zliV2!C zPO>-%?tiFFvfYTzVHIFyO@f>1vP+j=v+lEgtonH4>?Tp*1syx{>SKm$j9Dr1hDb$} zTC>chw3pn77k7typqzd)CBDIS1jh({r;BVq38UL|Moj171aR!lXmKi6U2eAEUZI!S zxlekHDku6&I+MSMot&o%$_fgwUm~f7Ez?`Bz4X(Ms(vY-*t-foPy#>CRcJs+?%o@9 zbxsjONuPb+&KuP{_p#j*Gx>ZEtz zQGL`C#k;u}JD}D>LfT)6@);i8?q2%+%oTk6-09;&W4Cg@GSx97w>gVm+E0GR(<+`b z;`1GHkFUAU0b$6m^!@ZNf?u6J-NW8C**QH2nX%!|&GI8#>|Jk_=6csp?eaFY8HR7vQ zx-&(eqXzYFSG^=OqL)5OhxPMVSFl2*4a61NJlU4-^$2{4`q(UYNwwxGGz~d#V|h7C zwd;kA^pBRU?P{;Zw|_(6XypR)m84R5a#nqY*w!WO0X`{a`xO8KZ|T3*N#FyconJe-^Gc%WnfR=hBLbew*el0JchE%CPd=ms{I%OFY7mP$IE zovIaETwQO&(Sc4nPHQbuQS7l5#K>nYmK{PV!NRhu6{zX!V&6fauGl#A%`z8uvKlra zO5G&Bfha-r+m_i}fYO}X3v3DgdMSoLn9KW~CuptGoL&H$qn0Jj{g7zzA8}PYdbK@C zY=ut8#>dA=5&DyZb?-uL=sQd{{QWM@(5_ATl~o+)=dABB71~eu%DE-f1_-$P7Wj?# zM>ljxN;3JC%@@QPOpV<@uLugXdHOst)HB-}b$dQf?zg-jp#3#3L`?TPAD_e%e-k_- zelm_xmR38{ton%QJ^t*Ez;5v^JW?+P!RvidlWpB?;Fe9nkmX}*-Pz@_J4}Y_8P)?1 z=l`J=KOx&s*2j0d>(}8**p9)kEPmaq~*znxZiSR5+?&WZl({9_?+giqHkMz9wW2HuFACW$mU(q zg&&;#PZ)nPoMMO$e5&JgdPJVJ;cL|3PP1`(gLnMSYh;=7m=~t|PJrV|A?m&rCtiw< z>wpPgaLo7e`jyFavwTbkzC+Bm z@CDQWYp4Iv&~5lSRCe}b*6vCf$*uis;KWjN+!289yVELvx%)@O0D;e(fON>Xg--n$ z&&cp{(wOfYuLSv#`b~|9nu?_W zp%iod4niAH`2pGI*(@p1$8XG z$|bvdRi$`W^G>ALOP9^31*WY=gCjAtT^$|5X`Me=5@vd5f@OUr%Z+XRpnJbdOGKQF z9f0nS9Qv#6S_8-Drk+@R@!pP(=&0aI%s^#9=ARg7V zlPk$Pxq1UjzoJEm4HLP&9vLI$;n$SS>aacihmS8tU%}^+t}X)+W4A$fxd|lW6+%)c zC@W3B-0H5ndh4rGolEs4p_P@l9m@b_!m0`deL7b)USq;3tG3s7o4UjV`oT)Y##O;h zs?w5yZMlzputqe1@?}41`siCG$+AU1p3zm<;E$WV_2iL7m~^?zFUw0L%z$atJJlUy z*}8N+`2lXqRIEUf|AF^supgEKfAt6KaC0{5)lUp6!OAwo{sH;Yxl5xY+rYm0hja#_7 z$b+Z#f1UwPe*p_7Y+|ilM@LzGSedcaac0uiXt8PT{!(ACI1y`@=oUX^yTRAXNsLlbGFEdAR zf^^PKML>*D4OYwD$&5cPVZ|k6JDpgw#Y$A$e#j-;v$DW;yv(})6Y1;i07!pW=^vz@ z^{+^O*#YVHTouzO&)2)>XyKu(ttBy+CM*teGYpAp%x|os@U;tGdQG$=0{Nd(u3n}@ z7hq_QX^O1>9_9Lf1K0mPLHyrG{@)VB&I15;&z%rRxT0~q$uy4-yyve_Vaz--lm(St z2N=fL#eTMS%cXtxA!(&)x@Z}3SFl@{Q6maii-A(@&X_~U-Ya{~_<$zK_4w{ZxBg^q z(I&G0y><1hxK|S2l4ZYt-M%4obcN`V$Zrnk;-S0FlKojGH;Y%T`%Z0pnOF0R+48G7 z1FS({Z3(x5xh(6|(g07FE82iA7FYWJCb?WbfEeg z(AC&tA%UHCmFXZc#Cf+}=bTQ=MRSi2V@yK~m2;uDXaJ?{cYl)uaDIq;FEQ&v!1(huSfig-6e9!@dQ>GKPe)D&L!8;-0$EC(L?4AzFB@L z`vX9bC~*-On|}H#S~c@!Fnb~Onl|^|u`^#MSpQavsP*-17 z)UEnLYz@QT&EiEd%~PT#^3b=oejrY11N7$788t3Y zozR=)b?{t|sfxQuL!(X|sUQ0pSgp+fgwNrztHt6ZlF6^PG0S%*PH>?t1*9QsiPGGrWHRNS(1^2to~}jkxF%UK6IVY`&{*IO^|QO zTC!pWO$}yS??{b^SiqrtPabBax-CdLSMLtgM~2!F(htFH@P00EK$3-V{`mI%Cp7?- z)tQ8;2_(Mm7Jn?)$rm^5xYsQr5SQFCg0qescEpieCE84as?fa?8lvKgk*54im0ySb zJeZ3$`B_|9tRJ`VCsLQ0S1&WiC3E|Vzs4SwVk9EwIY>@rL^E^4p+_kJhegFQPq$Gl zgEAuund(+vZ787~Eq9hmlY6{y!f}@bsaiQhC-B!hAl%)W{CjHss`b?MOIA$bBf6UY zbj-FO7dvW3J{R8w(~b1+qF5!Iyh+ZbM>!zg`$yLwYIm4sFf$p$%U6-&I~d&7!%EE_ z>sq7CP;z-Uu1iyAry4E zn*_~n|NXku-sao$vWsI(w=tFYGz|nZ9D}X%CDz^eEUI>AP$q++ShO5s4lh1vv_0Q2 zJZOsEjI^3^z#3J8P?wYHKihpZ5|^_3T!n2FoM`g6L4(xJ&P(gaOW!XV5yafKJDPmd zP@$tY!VMf`@L$yJ(eK2#ZsX5W#8KUFbd83dhn2?ZWCyl*Ys_ICm zR2BhMZ&%AqSFnt!ty?Y*tgkX!QZF;l->^9Fy$$S452&!LQN9T5C1fKbTHF!Awk~&j zLY4`4$F(Ut19V>D=Y)rRisaez@(11{#@J_QwU6bM>-8UUrGc9U5oc zy-`D-l!#`EzqTrD-+C@J0*V{oX{Sh$cV+WZ?dcOAVaQE;toMyC(VT;c*WB2Y7qc@g zR6D$sXCml*M(BjxLmt4(T{@R~c(}XSHokS^29$?$#L7m;+u=(F)g@3T;?MQ&?k`Kn zV_f!UJb~Dp>t1zDhoIV&)Vv3x1(tqGQW_L56BaKM9_gJW85wUPwG=bOuj^&Ep3w^9 zlpy3J zHvcT(3s1SVL(B2|3B+Axu^p02K2siDq z=Fp&qbF`N1IfCPpUEXBNaTdfSx7Qolu{+^DB{^*nE3m&eh{Y>O+DD`0cZUb$N#tAn z!1d{8^FF!_Uv%nL`U6^9E@NkTVEY1=Dwm-C&-kQ$dD1Es8g8Yv|EofQAiS&rZoBd)Q%ENSTnC~E0<%6>zG{`FOmjnaWsXXoXD z3B!Ezo%u6H;GhoaU%-+|2oQ6igQa`91ndu&@K;qz;`}8d9o+{|=ua_`0qkSvjo8p0 zx7f`@btNT8l&n&^PRs$hvv^0=G|NL=AZh;%hue#+=^BqM*uuHOf9Y8oy-&EivTJSr@y~5wk{p$^nQCt0L3-=tooQo>pckggAp%QeaHxMPJ z?e>X>@1vov0XC!I`0!_qitBB@p~7}~dRi&ztF65$pWo+#RqSbOdQvqu>wE`InSNc2 z9X*5Fh_lnia9l|$wJt8%Io^>U5x-->bVbj6LjR*GPC$$Iiu`oTO4}#Tb_Yurd4)?U zrJDZa1vkw%v??zYZondDm1{bK(y5RBF=(-_=3H&815W?qOIEAibt8INkj4Y?vT;B7C`>*ohhUTCiJm6 zVIK3t{qs;lM3k`Og@K!MdmWFK7S0v)z}SLi#Y692e*g!;6dH(kl*!DhcVnW2wbx^B z=IX_y^SIx$IrOxnALHtEb>wKA&SSYWpFW}>opbP->BzjQ-hUrm{#XQLWF$r_~nNh^*E}BHwi=)P*c(CSQ*0G*S)ooN6EwBzCNE; zaNO5QVsJ-EbbP`UF75p%dYa*C=TVSf*}pVXbG+Cb>|4fj1}*!~_Zo1K)P6jx+#C&* zVFN*|DTKGnM}zdLW6S5a7CC=Chy(37P6?T*8gsRFC6@MWPv3{HTC3O$F~#`Vx3pX; z8$Mexg6LgjmvRz?mbX7sw(%0J5*Xz=t0GV^#OGZ70Q+vCJjY2VAy8ZAOF?DseY)1& zZ=mn5S)y&(IDNbBCcTxhrO$4t{mTq*iCMqX#Md5-Es|IwwgYnmcbz<4Ab{Jyh3yLzIe`40_o$&O6Z$>^W~5q8HUeLP4#=sHS+Z6O*@mqYzqUII3cJHzC z8Q_aL_LmqzhWBjlj2deAsuZ?be$*6dp7U}QGRb1fR)t+C7|(4;UapiTLCj;S!qGH) zYlMik8d}Y9RdX&such(C(xokLXJpo*wtZ@}d;XmUNu&G6;mOHRM=dW8kL|QidAHA^ zOZQt|O~MWg!2#TzKaXNJ=}gjuX#JulXj#77{U-IBv?WE7w~Y08c6*|N!M*ad?2!3> z?7%eS()ZMegot^)ccZajecaYd9*A-UcAJ}aYfN$)R~^Ov*=vP$0aJ0?fT^CazdYkB zU6FX%`z;P>5m4#Yix$S-r19-g?L6zFB!8^b#?zu?9qrAyX!6X}bVuC9Oe9f*cjBPE zIAFacs@wAlqYt&Y7#?%!6f zJbxaAInoOVC5)SNf#B@8$qG?=+@$AkyefcD_kXH@*PkE1ojiPc@YU$GHZiyhKMWo7 z+k9RY$zXvIwR*esgQG%Rbc*wu?({!F)9G{0sCFs6JIyP@34)1coRw!IVnfh-;nLxF z@>%O-4M$L(MR#@h05+M*2;A?#{V1*OwZ36!`6oB`LR6ZRf~J2g6Ih2yjV3 zL6>cxfYlX-AlaTY2@{vMZyq)dVvt-7ek%7m(XQPzW=Z3!0qlZ8?yfcQh1+HYAD4E= zU<92W`S`E*<#cgLRXVt&if0qjMOfOkXr!kKe{~NSD@^>`^7vUA@)x90&N}8%%j?e5OP#dc#X-(+t$mL8tx_xYa9hq+Sb7UW#|q2}4+=VX zG6QV`JRvZuoOMI9XR5?A6050WEv`Eyv~9&Qh~2V-Mz#>=nB!&kpDSZ_teH{JaP{R@ z34u71m1S29-j{$7ZySzuSZ?KKqUPGMs(U^%f+G|cKx1-bBB8og%!A3Coakut*l0%0@YY6 zEU6PG@!`Xmc$%}jV9?`Cb8Tdh?wsW7rT4R%+YNuYA3&h4EQ84{ojAV8WKwJOL(W@k zPAr3^o&c0HQ?X(Rw|z`f%eJ}Eagi4~av{1hSxxS2>%$TTOODE6f>RK4B$nhEkfFXT z#Z$uCeP0QtG!|o^Jt<~Y!wNEnhPNV2$?YwUq-^L<09#J2dqT@U@EVfNVd_is9YBtL zBE;i+T~Qq+QcgGmd;O5afc09n0K2TMQ9<>4{<4#My2ScNe}|A?zt@am#?Emw`a|34i;?OQPVoKM=)kL? zNrRI@sOu2N4?EHF8<8#kWsg2zipfcgP3BVA5xvvP8)s70lJ_u_{%&{WlCkEcXCig= zm*PxrAIKAar3CULg~vJ(IwidFYw~SuDEa={IWPz4Z8$&&TYx~u{Pz{YbUvoqsyM|! z$}rDiDK~RISlzL4trv>~vc_%*Jcu$O-7CJYGa7-=&^6d=y3N{46l06MWhvY+MD46% z;iO{8uRPD(nRY}(JWBIP@_efnN+2pU351l#EP==cZpwK=FWx3BcwQ*>4NXqQ zoL%kgtNc_G+NSpB&NOam`S~d0$-UOxLRL;L$F%D4ftUnzM1_%l*MfmTy7By0)9rXW z7r&Xhsu!%j@19{0F2$FstcHlX>r>>_*M`>R6Wi;##(>N7JHYNLh7Dvd3U#T=eE$4$ zlpS|V%fqGnKTUh2rL#5elT6^NT|nY@^;QK|ab+J6D}$rHwgs3-CH8iFWND*?H^bX- zyv6c@NcirTt%(gI6hpi1PTbbi=K5w@;X~-8A+|QbFBd?VVvTVGzzkmBgQE@$0IP2}{$ ziixar=VS-*96hmy>q*p$CN|Sgbri`1FU(dBF) z?B`*wy?Ef*e#L+7$}1k*vk8;gDcfcKR|g)GvKMazJuG=SwKy0ZG_+J-_Q9$r9paw& z4Xwd)pQiq;;;+5*61@Rme8I%*8!20%7`5tC!qYOx4SbgkyR0jJAA0Tm{Oseb+E+5o zfiJSsZT#(7n=B210|ZCYtJ5Yf95g{E;4Z+srh6kYlkGGIDF$wsSmH@tv?DlKlIHc1 z_to{A**3dF@uRJ>+PKYWPL<{`)+MHiNT>Exw0zgVpET{#-xdp`D$vUJ&#l9r#oskDlJ#AdP1sp=m+=rWQf%h2-@!VuCjZRq#y zE9BSPmxm=5vWhPfEZAM z6stowOC7e)H-6$FwJM@NmFc>-R>@QLYX4OT>i6nsUo!=N14m?GGTU@fxMXB+BMN}_ zZ)#1`TYlP!&B8X4fNRH(_rtB|DI3AzUw2(UdyeaQHUBJ1$+oFr&hoG1}h^*=d27F-Up)H)@?9zP)O_xf;mNdY{zl9B#{!@ZAg(9Y`}1VA-#+ku>^I4RIR zy>Kc^ns!%)VeJa|*aQIQZP6S+#HjI_z-bXv2?!t7r0#1BX1Dg9SMzhCCFlXZM_%b5 z9lx-DX`bJvSDsTE$zXBvF5YQd5)vRdW$p-^8US`3Fu%Y&Qef}ZP)9cc*GYh`q5cHk z4{UUQ@QjO5x5WKxWnN&qU&0}zuR#cKiDAzam{Ms^5)ajPg^xHrFaQNK9!=)H2XXR#}O(hlY& znNl>ge?c5mYaOKhQRsL(DO6MW9RU4dwf8hjOk&rcz<$pI?kPG~TchRG1)pQWa78R| z2=NawLT&G~t-6ROzM-%Q8Nv^2c5YQ}OfdOvvaN4Qw{uZiFt5A#&(VW$!gx@rd0Giaf6<#_WS%+N2OicJA+qaSFr)Jjbyhc=3eUZhZ4hFnbA z*Ao?vdrf00+Nx7ICz3+~NSuf;Sw#srALT^Z-g+U7_?%l77ACBywSUQ23HkFI1DHs+2ml9ye_dHv;_YT5dv z5=$blm9F~YEq@9xnTrWaHZ=HAK>j8T{0S_}izKN9Nyc*Lw=!NFN;i?muH=)msw4kN`NJ7DdAd zJ}Z^}f5xigDbEZccm6Xee3*&ecl-%_q9PU$DK~4eSu*=jG#lVy|5nsyj=2|2LE}Tp zdQhe`8vT#{;VgfY0+a)`NpXSm3_cS);gK76Pjy6vo z>7Ua3kAC-BqPqT>Gl6l zTEO{~ClgERD@snqdDZIOi_wPQeW zx>zTWyPoR;l3)rm(pI5tl`o~d)XN3pqSzgU^aS=`7vO@8hu=Ik zx7LdOb0i_VMFH_4K$s6`Lou6wDR&-#jJ#0?n6$PY(X*7{1~O&7(B~3n@7w=R%_uYb z)3+9_AI!#*eW6o+i9h>7 zDS6@OK&^FP5mQEw&6LoAuP=+9fysGA^d!fwHqJLTokRz{k&5|Q zIQwUIm$it_^2+j6W6ZC7P7|Ax0R3!&^x~NnsrJ`e2fq3&=yvd&|D)4^e);E#)0B zTZLI#$^N05|JP;wvo`xYe|XXVo1zCsoYI6ALTQABKSybIPqm2;S zwo7IuLml*3sbdm0x52*k4-RSe%FUW%Z}QrA4LUx*D4Y}9Ixj9Vh5&(1p}AR@Kz`3J zuR;pX0EBv@B0|?X?4@#AY6pY?+VZ1fjxK1;Z^^Agm41zv2g+~R7OXA=SM7^RxAY(L zD@7+r%vi8DS^xDi%eS(Q7tkbN8gj}sqQ1|L-2)HvpFM6@3V6?*CGN9S<>ZVq77e-@ zCo%p>mY!Xa>DtK@Q|d{}RSZwg=AbBGiVKx@%P$40@BXe{TyGxd!J$qLSlkwGzx?j( zXfeJ|4aO~2CCbbMwo!6FGM1#Gu@)x}ZZ!zFPJ#~IQuH>$HUwJd2AB7}uSyVun;!Ah z9E#eTYjpfxb2DMRLD_KjVS{!*lB_Wqk)=X~ghxMJ{BrPjp_Q8a8C{cA5aiXtGid$l zK6k^L&Se=FOhKafC_`uObzR3d@U6OK1+&5F;D}ek><&KRsx(8m z9x=Fkt&_5N3r;a(-KSGg_Qv^@=*_QEZzt+dXs)QsHNJL27)Q7M4AX*@`U=({kn-4{ zkMM|nPv8_%@zX!^s6wHniSCTnoWgBK2G!0Nran$MPDw#ufM5FW0Dc4M%IPxNp-FF!0ikg#poI!>&=bmrD^ONqGW z{5xY$$^xHsZ zK}?+sfc}9xrY{yT80TlZUQ3G?298#4WWPTfg4&7>xJF3HuKA>1oO)$_SIm5fYFa$v@BbLj9=Z9aajm6 zkg|02rgKmHa z#T1&&n@y9p->CoD*%3A3+wZ4AeVLMel}pDaExMeV%qAg`8B;=dFZWZ1F~<^moAL$mQl2`<{HdBkd=M zZf?!wml@)#WS5}TRMIjmCP{|g@w#CV-(<}}=CAK5(oksbjK=hCsLI{8tm?lw7S{w_ zB%)huCZrd0S~V3O)GIEwh%k!6xuS1w;bBr&nI#;WAXl z{kaHk+4^;+mAMj~MD5vQT9fwM97ooZhe-H3)j@h;;O2d=TGM zO0JpRa<>GSN`Mc^*=6Gv9~<l`?%#S5Yp}dIOnQ{&&1Pkmg?}XIHL2*} z?el%t)9QOCTz|P5<8aIu;9Z)|9Cxa7E)Gmr zG1n;RrbQ{{)N)(LNb%*)B=l4tXL2gIsNL1&0Ls4Y)qv7Y4c)*(Mc*C8m6iJqRY~!7 z@BCcQVyFSL5bi|xrM1q&)QVzlVdRLL?$ENY&Aq#U{>ngk$>Z%l9+sCt`1B{JC9I=F z^>Lv|xs^(57;`-4T1B{lE9l{r?w8`*CpE*zOSlb0(lbzjSE4qlvyQy_+{J6ht-KMt zvz@!eY!{`gBsU~*h*kO}ABJ%u?;%UyWjO&^JkF7oaxl3-c}e>gcTVre(tMW3tw<)a zjb8Js`3=E^_}m*AtrRbUUplz_hE}%auL6}?b$~@3z@N`aVAKx@wVP^O?+}ru5DK{#kdgmE z*jqqF`L%1~ASx1yG^2#TP|_fs(nE(JDIhH+-Jntu62s6S0t1NB-6-A2P{I&OIt(E& zbp4;<_rBkEzV)7S{%g5hf=}$dpL^eV-Pb1iz*47%{YKz!KSL;Atj8S!<`*UZ{03K& zpNW7{`$xPykpkA6y4mID`{|KQf2dFtR{YAi6f7Pva7QtaQcN30vZK~6=wf95)7ksS zi<`F5vV$Ow{ARL~m9BsDDSg@)p|Mw3{hyvHT&;>I#*_E-8v=-K%~ao~yaleg=L>j} z(x*~p5fFB6e5`>(l)VLbgkMIFE=6`z+o7}yU<+*=3 zt(idmg8L2xVS|0!fB3EcOy#-lKT~0>ybtVKFeHE$rPpM04b1!Jg8%F7dO`q2zpcn% zXiR*qqUd(JuN`l|()=g$j~NsTpaI~RaPM!}^#yNn_TgIPc_y_0@TdO(n4+N9NrwbH zv}ir}dZb9!Z!l#dIjAS-za7i}bzl8~{fAG{|o?<1XhPln~ zHjpRypFbBCt{6R(o_!s-oe8)TJ#EteZ-?>Ek|=zBV?%39cD*Rh*I5z(h4bHD|Njho zDc|PNJP#K9h#eI$_S(T)L}F>;|9`!oS&wXTVS}gH)I^gz zh|>RglAdfpiemZ4zhniCs|S1~I1zv>{oj@m8%r^89qsqaJ&{)`XtwT1KmC^@;8{b8{zqq|yxQEG##h#&x*3$6|C zwxrS1(G8zY_?dsBN3yqel^G?1#ZAtJ0=-)M#Lv#hzsYFalI&%Z$3i#2Aj(M0+mPCm zcIIs3>oBLCm%WW|Z3j0b-Yu|F5`4j0rvZZ>wLUQmC61c@l^}=xD3qYr20JVW|;3)q;JXKgFiD>=OXTp%PXaBpV z@AJZkM6tn!nl$i5ARyb@3Ta`G&m(@efw7FYFZo>PY4+J7Xz~~6Do2Ub84!Agaxl>rh-lv@-wud0|H^QzTlFA$m9T8#muxXWG5g#p7CN%<80B?ALNlSNp)@IABbr(|m?|*h?oQX?$I%_{Z@^C;zV5)pQALrdFp9KZAz76SOY@A7 zo$jm`MclR;r87;=I3N9O(?sX}Yg?x`>Xe6x1$Rc+_Afs=l^%^WOB;SIwccCv-jgWz zNJk_A@Mq^d_z_+|xa+hK_dYU88xgcsWw4XMmaSV5;dUKRUD)SqdlR^k1PE>iFzj zsvS)s$;AN*?-IIC-hcz=+erQbi@%(W5EAAanun z&2@CKSIoUK9J0b4^7Xv}p{=z^ysZM$zDJ=M&{B9JfXo83CyW{ScxE1B8?+6cbwPh9UlcMC0Sg{UDcZgJ8Al>lx8BA$w z^q76cvTnCChLH(yBd2rt9%a#3V4cXcHuoQ=lwe{_> zNIG%xElA(SBWf8+^30|my>-)#uTT&K8;}x5Oc#f0KKQ~M(pW3i_&1RKAI={%-J&K6 zyN40_HItFU>H7!d^pe_7gTL1<#6KlqCi^+m;Z9P(hSeg}2GfOf#o0uPDlU#%OKH>nmm|+ftORBLaJTAn z{;U+<@>bQt>bVj38g6sbDdzhTDfC^8mfuouWsd;xswZf8Tw0|323)58p8-pHna^2s zvbP?L1lekw#WG5*xt)Xu%s6YED%**o9?+R|ny?4^UN6C^KBDz%E03G&L#FROm8Wp& z#uC)-(IUecuQi2a2u0b*LVn5?us98CQ3t;b!*kCqq}S>NO3NY^b#H{O12*iV*yTh`Q0~VDm&=RNji#-B+foNpc@>Tf3#4$7=dx__N~zt@$Eb%Fl3 zOf1&ggCX4iZS}|#qB+F|ITgmz|J8!wndcF+SeUvqbuJJqSU^SCH48(^?y#xGgT~biG=Nq2dpf;7d z0QRvUoE_qC1!(=*SzsbqH|xK;Zq$}QgBIclw5*bi6?k}%n>`39OF(>BttoIyK)qi- zG}7qmPBja5hQ;1AR8scG628D)quw@$dbw&WQ~ww2q<9UTq$Aod*XbP#&TeI=Gz>$d z7r`>>c8@Vv`8!mMqZ|2E73)^Fjbt3KPJJ+H`|y?KHf+exiD{M(P}1SOqWC~==pDry zj{VYIn$(tiH>9@(*46q@yZ5Ip``_S_Fj{?sMK;{NLn);s>H7(cdWFRgnsF&GC22{v zGm-Vz(?bBqSh;<-WD{jSmW59`+4^k3*TJx3=+SpB7Kv$3?yPAT9Uu%gRZ%+TV*?Z^9}CB zmT>eiJ)GVb(nJLW2fRMF>6fhn8|Mz?6#K1ccce_~CFh9z-A2f~*TS|t7no&L`ZC)+ z35v(p+N;EG@AM2>$X>5uIrZ%o$*$Jfe(icOC$yF1VppTMC{OwgqdxDc$Dp1v4`sW| zrm-fe<^AuAEZA_%`~hjwKghnxv69j=$o#0-qQCXr&CdBW(e0Lp<4q$1V1NL~!nI06 zG8t?Z4rFt-BD!Dze^Z@8g?L6muJ~Rmw;Ro4vgp5i5B|!17uRgw?p>qu2nOF<(@2AX z&7uI8#Cv(6B^v^0lko3#< zU*_;@N91{B#|6bML-`YgxvA88il#4G>(nKW z{sfF|T||i7?B)o1w75Mv7aO619R8EQ_p4%DjgCt#nmnRo=J3U!0)FRp7RYtXjsW8w z(O2fGl*;XRWQ-<4rx`l2E=WXilV5w{XLJ)cU2JVXw%qD&01_$UNF+$dV zN?WuJ2#bInGD^hX_1YkQEFoMHMuB5Vv6nFIOe{Y&G0UPZw{tKix|S%^%IE7CMdKgq zD~>p(3*b@OQNfHoIbK)Ej%?LDUok&HS~U3mQm^*UM`c5j)MwV}Y^Hw^3tXmx}cV(T_*U)STk8fw9ARfg%??h7dr%{EUUt=&D{e{UQ1(po87G z!4@j&AY2EaeF-o!i`|Udz3kkJL@|_Cn8SxaL z*0v-El%>v21hnEwqPQUl2SDbwyD1{062WE(fUp8E0BjT8f7V`j`T;QcbqS5l9OiQP z@YQu%!Yqt+<$fp&<2=*rtto$_k6p-uq^*nm(6 zzWn%7|Ch{aJ9!b+KbHYgdgF@VireG|Ru)bh3*T6-Rq5hf7DWJ+E=;d`4KcX*;%55a ztEHXYklzfmK&8tS;MRqRGnJkAya`FUl4s|-3u*t`TLnx3GXmKQ8NR}K!x7Y6sRBF? zx}cear+UdBf={!*xn*~q9rD&bzxsQ%x>LP2c8?n?Kk%(j#|--+%jPdZSBCV|Tr*IL zr5F}QtjAaMk&A8R+~m9-;#c!wDSR-QhKm421vr$@CK|jeGJ=X4J|6bUJJ<qkUB7=4ndbtyNj6&;%& zdnNU2#yg5S8AM)?DUClHuGo~%>-p3+XDlY!w&!!y`=GU zlQlrqB6215AwFdwJoK3O8*T&~X+uqga_MpyZ+&TDWGZ`uc=>^x9D$?>nA#vjGn>N% z`%%b(Qe>$f$1IH(%HmGUbEU-X_!#BB8kqbDs7W2f^Y`e&k+0P5YRgGICH?XQZUb2` z$Y;4%m8RL2 z%fN;6=1-6C*CfRpusyNxoa4z6nuOmL%sITh1pO`?!Zs3dS}F0@|8;UuCMrJRokr`2 z5WN@QRj{!!%AR=`68U1*^`rS7s8>mm_=@o=A*AcdZ~c4wXh`;zpynlsv$#Gd6+Itn1Kia1m z{9!!D&0p(KFK3rh*%Z5Ccg4LqPYnZ_52z)r{4gLiudmYAgnj(u(GwDH`peW4w&QmC zAOtGcK6o#s@Oenjb6Piu$Oy2{JbhoObM*B=ME~&9`#CA%bOld4RObEidbA}r zKEKN*Kj74^7XzMW1GEXk`wp#8QlCb;pfdul(n{jnN5l7u(0n#^s zo^Z~gpoU8_WC~denjFGd9M^_gaj^wcNc%F}P{7yqSy#e1GTqr4vRM4*I*1aN_=~sdDzi|t!n!En}f>sO*-r8>N{wyVgI3*LirRJ}q+!Q-<%1ZBbhRp$TL66;d zhr^bFW{bT7MCynjcR-EJl9BC^Gcn~pvUF*@j^!?Hb!NST#cqw=U(e1rzZc7`2=Va? zt^v%4c@P<`_O>LSU4NFPsgJ*R2jTHo+_;z>%PKZY_%AX z4SDMjD0X&o>)>Vx)H4#mGCa)#zwX$;N5!Z&wQ;_X@G(B%+$Xd0>?b3WMX+KV5tj-QTgj85`J&_K6 zNz}~DBM12|a9Qbez2Ln$w|S9mKd54$+o6Epbm6Ucrx8d6o&nW+L^)!P>7%)yiWB}E zKuii~8cI^-aym^pDXzn;SlR}Q(UsS~x31-*%voUo%98M8x1w$4JaDY3d+53-2a!?f zQ>hPlIvY zz!)$_47ev^s)39+!j(UAD(ZmeN?a@{d#rYPs2_D}DJJqMg5ijUE z@Ea!Nu{M<6BNUcJuz&nZ2b-mbBPD(h_qDl_NfrG~!i-~|Cw04{rg$_{DY7sTu65p$ z3=bfRsMcv2?cu_1xp2aGQE<{jzE5A10I`0iC}-^B+ZOi-txU0aQ(@S#X6g;rrvk7Q6KZVe~FhKxaZ&}%p6Bl=eB<%s(ek1b`BnssVHc^5Srl#j1O~J;ViYDDu=9&Sv}TA_j)3tlC6PZ^-46g; z`msw*V9n*kV^}U>YiPRaw!<2fQ9Hbwl}Wm*S2RxV#i#TS#?ZFqb2NZN5eb5R`6F~C zR&XUO_mW2EFHMop9uJ!aEv-wv5-|bi)Gn{gE$q{3LZS!KaD(h;(HeebR?h(R;d-#R zZ&(ZW-U6~2hN%{P6bCmk_<=FG7vv9H0h;ePKpcYs(OSwIitBLe=6u0f(ch8tnY(N$tj+A;@TQf{VAVsFz z)1E8r?DI3HFncY7-_ie@yeF$YG7 zka(B|TPlv!fVocoV-ylQ#vPHoM+MgRZ7l+Ey$Sgbk`(%3W-SMX}OfK znm>q$5~N1&hs~2e`|WiPnjc(YKlH?lsC$E_dwq$ZXgRF!aAj17l9NeF+5 zX)Y(=pUTE7vNKXxmpBJeGn|mi2TIz3ibO%IfC_am43>iyxwLd*4CB#C~`{Ww3%R!*b8SlF~L;yg{Q0v{x9Vuz%bq zsQ1W{_Cr*!#@m**rwmZOJSNMboa1jqPHSa}@cq%bd+(W1M4Cb@p~Et#$mNT05J<~y zZZB(MMp>GDlJu6<3-&*W6>BH8w4LuJe!FAU`ut@StL4)U!F^l%O);%uSO5o+9k+C| zsh(|%_Yr8nO6Z}dqN_+8URZ2aY@=5Vv_7oTR?B-W`AjPa>Rg4600tBB}=Ostec4A(yZnp2~*@snaK6{tc!|e3q z$IAJ6y?oMmVf2)I>tZ85S4`L?GbdM@BJS_=>0GQdBy)F9X}7dpa}}fKAo>+0)H=_M zIA1Lf6<>^f7nVzBj-9;O-ZNbvUBCDHrA=R_T^g_BrRPq*xXfWnuTw57Umb?{~_`y9gsA2_z}tq?&?e9UK8N$A(Lrdu4xH7Q%_V+TLIlUA!PgvAmsb9Zg#J_Uc4wFsd6svof{p4pRMMN78)|wk^3}H zI#-BQXnG=TWwRL%_!OIarSIw+h9~RcsJ3smxB^>bURHJhXcS2l}Fntm$pODZ{WB2SLkSgPR&Ai0sqF!nVpory^$55m5X=cn9`jPvua; z-y%UXRu$p6jWDdi)#XU!G$Ce0UXOV0M%A;I`B`fyb)-eM{t~gSUwzsA=|#NVr>fOF zOiUR8;K>fCUAx)H(xMfn~%uJ2ZX+9xNPFECuJLF2+Y@`3WMZZ4z z`3lBxYw?dni?$wV6qli8h)wEtP8B`5f22sF&&F3lDh1o}yCClnxRbL(WdM5i-*1~i z4v^n&<|e4;8TUimG_|f8j+quJr+gg@4=x;1Aqgpbk~3UV@B)#;0UT?A%{g<sHRVTK}<{x{}{l=osS$)^yu_m*A1*8 z`u-l2m|n2H$Ko|#Sxcm^y3)$?%-L(69J_2Z*^UQ}%8q&5$^npg+Zx^tVS16ElstV2lk+Y7A)UhbFiIxSjzUxbS9*+70Ycfh_owJ+wOyzY(&7baVJFmi` z2ap3iGN%%WRZPNqXWYgSBOuzq5GCv3kb;z)80>CnohVvSf5R_E;P`RLvz*86t2fwM zUByrU{s>vF2HXA;5hT}u~RYokZhSnRgwr%4cNjs~+BWdbBI zf*TsFUh^t~zI_IF8O88hlQRz^y;7-q6FeGsc9a%gaE^Qe_EEZZ)tuvG+Gg!r+LLTI zH^B30n$JiK!v!sO&c-GPS`OzlwSj>>^-76##hJTQ4nU*k3NfD+EEWOmP9C~sQ%6vI4eF0s4GV&#ECBo}#?jd5qL%KK{P$0& z+Q!LtJ;X@;V-^_!@o!;SsXrsNbrV~HmgV~2_yvmo)P0Ied^Z6wLZ_#^)5uT4CSDIS zar}P#l7_=5N>Hwg>PZu*GXuUGr*MtqfQ2(2X{W2>S&;g=TQgodVCy}Ld9^#+xmHbyw5us zEzKNw{gbqS09FBJba>bzk0=U#IRe`a9$eV^?kOi%J8t8oWILz`xU^==c~2~c$vG(d zN3uvcVmjm4bCn^45elf7_OF0!?J{2TW$ry7j;}FQXYZpkk_95C^^hRpgZr7Ny%#S- zJak^&4P|7mWPxG27bpGsvV{m*YROzK>%`M;|1FiDf#NIE{ct@5VC|?-B6X@S+7WP; zzcwXk@u-Hlc+A_!v2s)cr-cT{sinCD_MqB^l|&&R;epRg5c}30ooU9;WH}({fzSw0 zM)|zJE!BW6kVFluIR9A8mgahf@$QwM`x5$df>X6A-PL1O95!M=o@i^hy>|AH%)r7& z@WK|bAv+Hf_-u(WX<<%i-dkQ$T}rh3vNR>Sfa7atrW zhDFRyOJ&LcE4pyh2O9kA=zQxVZmeH$v*V9LDG~w}F)_7| zo4=R<0CZ;iBj)Jo?*hVj4zZ|e>!(Y64-nab;~ux+rOcnUy2DWO`TWX0^q1Q zUStNYR_ssWlPRphmro`~e{0xX+?JSswj?0E-`7A8H44lqm1=qjvLHSjF2F^Tkc88! zZH#TXsAsZi7ukOz-Q9lNnbTSM1B|*+=;Z%2@)n+Mie#?^ul)sh!E;I~D2tphrDCy} z518J258ya5>W}eMVD)~LH!K%Fhfov-V17gFm(-(+AJTrp$IFB;YzCwb6Ayg>`%mEEk;L0_8pTDPlT|5@I;(tAOp$a_8Ej*eylD z>^~lug-F1Q(w80@JnnT*@Z7iiN=Xp!_JE9Vpb$NuC3JF`Fo!q-@-y43HJLX?hPhB| zfAI48th(RCVv$Rc$9-8~QSut#5#2M7Oc5lcXX?c!%yE9vAxmn4Y#0hY){Tgt;fgYv ze}sz0#Kucsgy9R8svw4McPkId0<+v>Y2`&9N!bqf_7Dn^ZFnpk6%m;9jWj^c|t2F7k(N9@he#?M4Ii{6|y{I^- zZF>uB=BV~M7L;@=4vQ3_ZVJW^fDnCjlT-}4W&&&?b)#8Z0S~1EEC{2^T?lNu8hnwK zVk-@3d&5*F=s<5crl_a)HtD~7yG71&!9yV209*sO)C5VTnOstL)KY-7L4JEJ%LQw? zOgzxZ=dBe(pm$mV>Fe)P0Z72KsN&$}y*a&rEJ?I~Tz4asy|^Oq+joVWIEWw09Os@IfP8Od$nR$wL4#|L`|w6F0MVWd(C>rC zD;l1I?P6*&tLsUGPk-_il^CSOpPx!L%KVI6Ww(TSW(h?Jux`{75)>3Xg6#Atn7E>w zre8K!{9%;_+6ecCaYP5#+NUHHT#Hq7kwzYX2D5?u$#4R07o8vWHfAjRmcbDup9ije z{HC(|kyYNdxoQW@PCggx1^W#&S!6qtdkGQ)36gYfavSvt-rrq;P|u8;OF%Cszm5;@ zh!ONQzE1+2JorVx)I=?iYN@wWQT%hjB3?Rny*$Du26H{DmPat}uG&ZWK zI?06IpX>E!Lx{L}e3%2EJE^UaU8CKZdxo3|Rzbr&$FZxGwgb81Rn61^N-7-jl2)_Q zkL1yUmoevp=c&gM=hfw-s|DkZ#K?6=f|Ie#Df7RvyrN4#Lv`9u0|V0cN6to%zuP4i z@>K35ugQ)2t{VZILnmDwD?fAEeu0wmN8e8e-#!_$d&VZiOqQ;#;~A_Jydv~vC$I-# zAnofvzid3O+TUUsm6*K9R{Z=vwgq8|nSFNLS}m-zxV0E{#Z2@&HdD?LF+ci zT9;qXMAuZ>{A!3YYYU|8Je;D>rT_Y6tJ4dfclvJBkiqe-yXR?Pj1)82TG^GJOG3)( z#`)1nyryqYreA>Qs~(cGLc754q>KJa``u>yn-1ze-aXuXv#zl(ezolH3I=Z)fia(H zdfCdKPzUr#6ae4+ki${71BmpfsJW*>p!nchqn9XMZ6P)o;#TNd}0wUv)p^XTn7!7(JjCy5&#R>9-_)&(HoeoSI9{GW`!vFpT%J%wXIn|0d$s zhWsG%_Ty=zF@+5LNScNUX~#WnfQ2 zAj;Pky!NJY!{+S4Zh48Be|kI`uvR{ zF6VN_FkyH0j?GB*(RZE~JwQm?-|2b+e?T5jsjf(}+2p>eHyhg($3=bYEOBE>(lFo? zLl92|dSG>gKuoNd#XlL5owytGCBZ54=Ouq%<~C(rLStTo^_`#6yVa|rg>CnL4y(%O z2UUAI!5b&U7^U}rogAocnEoJYhvz5r@BV}keR2)INWNRCwQQqlVnyH5wGnyA#oPb3 zR%Vd*0p;`%uIq2}HtY3+u=g68e5{uPNd{8KD1<@O^VDDW?@>2CQpmhOuYW;*H+M?* z9YY&RamHx)m$~%>SrWk8t-=VbUIzH4<4p~lo`9+R)w%2-0IOMU_iG(WkjH5GbKO*Q zc>}dAb;@#k*WdcBNmY>|``IC4Iz|m$l~R&+d%r2XIH}p!8>*|B{Gp5dx{>@k<`;=* z9bv(YIOi%J$a6ye(WxIVDr296OP0-#t~9U8@J-B*yH#lt@zf&jT|S097ax^dOz_p$ zBZMZ*hXj=Z4{(qj$*@D;XF;j@!-uxs`Pq00_459C=b%3E{PDM^pIA@>>qf}H!L-i| z194BGo>Ik%e{V&ozcv4%*oW(eN$!!g;a5RSs=tMNerJVvp<~+PkaZcctG$UTDL-#0 z;Ch{+18G|D6V6p8F&vK%8kElgz&dT1BWm6sL#f=5rgJ}UI&)vFXWSByKYFK zX~4z)mXTykLL4vyR9$|7Yb5fYsBN3uE#x1t#yOt8h~4@9stD`LqC3^_Xi`x}AdBprY*(%KN<3B2@JXZ6VHp{A#~ zA;l{4nvk;}=X0Ci!&Hs~u?0k`LSIIYOt=kzJqR%kiya+$yLtQF5^$nbyW_*uU>Rs| z^>o0)M#bE(7c~9ylwT4akbB)d;6`mWJN{Zq;HX$z4X9^?P-Bc^41JMC&y&XU0Y&qC z*I(@vi5%%tzU*pWI&KE8NF^mCI}LaX^fT|S|J+#53OZ}!aYGb3GGtH%ml&U>~RE%3^lzHIJ}R3{ZTLSy4Fj zXSVj=^mgvc(3{KH-8E@q%(Z{;VBMNaPakc{A*&zW$>iG7B0rk8YJ!L*Un z3%job4uZcluO94Adve+UHOcRyWpDZMtnvUA5y2AFut5`8{(I%5ul#p(7^4Rn;TOKu zMxkH&Fs@7!PL}*1MeWp+3p2W(>(*lY0)y&*R~#MKc6`-#5y6j-SFY!uc}0ThdjfxE zt!|{35WzpHe8c%a84?YMOJ)}b18h8uK`N(ke(KC;ykLq0KcO;g%b(ooLi{(6;2#mN z^G=38b{E>)fA2{+i&%rdowlL~C0b+r&+x0ACXq7dyY$hvAyeuAr~x*XaJjFT%E|Q) zl$$e3fy%mcl=gml;&w^vta)lIW#acKW&&nguvxu=regOiA6`iDXTv8~S=!E0GIkT^ z>+d(RongoR9nS;Me>IklqGgnv#U-% z5wkYi`~oOfFLjW9kL3p5^u4DSqZBlF*6irL z$OB4hWkLG0nZ)N*nGsT{f2JWds%bwXU+kW0bO{g)KyFsPlzpnXuzBGWlHGh-qTgG# z>vN;N%zg+*TGxVIBS}B7kqAp1m+yMX_R|gT2 z#(c=Q28|VoJBFC|UD-lxUDH3+AZ`oOb$)E2t?qxcg~1x<8ci^4N1aBNpK@&7rG7}H zoig)kzl=SH(bi>Gk#((43c6)}JQ(VYjp6sYrY9*HC*XV3Nos$>=NmGzf zhO!-guDc`e5z|ab!AR{y5@J|nI6n4#qijXHP_9MR;rpz$8Lc(f*QzTNs>FZhSB z4;?}?-g{x&K?bt8$kW=o5jyreWz?5iUrlUBLAGj2RGgo6p>yet=(LO1_#&58itNBH zV=Y?Pt+Uk@*CVAxLq<_>`|Nc&cfUXS%4Z%CaCR{j;oh9B8vN4ZFZiAb{V>VwE7nb| z+IlCm{Tc&FEZZYqh!1yW@c71lwap`xBSnc%+fKRjy0rBA0gX%jvg4%$(sA%PF7MeE z22chB`5yIW!oH*5tEVw0qn~=~GW9lxBWvdt_l$O4winNyTExb^t8RgMZi@Wgej)7EPtkW6r|)exID*A<61^2(->s#L?exC&zVMt1U);aO(L^RZ47>zew;0KU`f_?s1Hba=W1y z$z03H6@+}{@SRy;td>N(zRXX6z?z$_Y;VOp5=}m(Iud+osi58wo7I~l>!Ugo%d2}E z+9s>gPZAt4wO;uo5VL&T$xy?{vTmrg>Oa5GC<7ZkhWI-*kKeQLJZ=6{NIbdV_G%HHf+N}G^<1`SAXYH6-~C=Pa> zpxY>+kj#)hd}qJF)`oi;G*UEg3ehC<{9@YMrj!GRjN=PPmn`#DGtb5s|2`!-hh=&8 zw)oMv*{*UC=U~6udL5^)>lx!k?H(EEJ)!No0xLJ~;rl9eE>B^mY+$l=^|ygV3VYR7 zFMCQjmUUF5jfCYN&3w_~D$~CW1*onFlICp$Z@=0_l`^!GxXs2NGf(0JL||L7UIjVu z=l;}gGYYd|@1h~^EvI%5Yh6CpMlG^Awmz-ce6nhcU||h*->c(aHQ^&9xJB}uGseyq zjCq0P0Sau59_1L{s7~O-0q5dssZytn#Xg(yH9?k;^`nb=A~6Qy&z$pL6QFd(%>!cf zahpF*|B#H0bdT8wVmo@HbAvjxNhQ*GyPKEE-ICe6C$PbFsemdu!V&u>*N3}T- zVjw@k$nU86=b94E+(zR>2Tmnk<}K@ju5L0tVqL*~?ChOS;zoHh8;Gq45edB<+VoHE zw{w$QM0<4p5qUftavmNF`g_SeH>xJx8g6n7IW6`f?TwY!)Kr>s;;^yKp9F{zclM`Qe~fvkSmy%p5NpPcIg9nT5RPu4ngm=mE{|6qRSg!wM%=vxG&6ji-r>RGM6h^%RV!Nm0@B&wY{8qW?aM`0AWP zpv>L!>P9T{yHAVCJw{ugIj&eZa zi+w764hZ%CY(*>pr$4O)x^J3*$X)fMMr}`SmG2+2sL3OUqh*o(T;O5*=R3Evfttb$ zarxif6zO}$RvRu{tCP(x;M7IyECl}E){9{~*sx>vtKZt92+C*bX@Tw!Z|&zhlk_5G zlw?3l2xdmgW2e+4-V^M569Wymc4tS$_VHZQCyHORhxHo_>nrx7oe_0!W|88~81#vp z@rJ~rCeM5wrqa@bu+5ufQOKsD2Lhrd17~ZGS(SL}zH^6mp&;67g#OH+rz;?p_G0+J8|iyC?K}`D_*u41 zrqH~PeIY{-;4Li?quFM$c9jZmc6LBd#^*fSK;9lF$+wx##GH)%kwk(9UQ&F~{^*OA zaX67O$#G$GWve3}T=TO3G?Dunj-=R|;@4e_&16{1Y2G?VoTtH8@%^PfP1(F$@(O`| zJmg7HmJ=(LsXmHV>#%d}LQ{#FoqrEo@IzX!)8%ABlg6#4B>8~jtlK1V#Q~1Z(BT?X zOzCrTQc#P=lxBSQA$X^J6rfy2@`!z%hb%2Fl5vRHRObk)?sZ13*B{o3p1P3KJyrVm z@yG3~zzIo4{?-a@XVJuQ6e#Pf*7|M8MaI_)=Olgy1EaBkfNqz9mZK;Y*UO}bQR?Tn zo6mv#eVEF5*S;RrPEKW}>uYp0;r}Rj0l;eH*`MgF3uPMnZR5Q@VvN(CQr<++FlR^(M%lH>*oO`>f=rxF-9x zh9C!D=|PR^iH3jIiNrIs^a5iy3h4P08JG_6WVW-iLUjawW^vr6IFs@2??XAaT^)#* z%b1QHKUMqwMcUPMgc&#TO9E41C&N?*0i`BS9A7fMd0 zXV{ZUALEY9ZuiPSw2<3V@yEV~siy#-wDATP0Mz+RGpY01&V1u}CQu`>Pyh~%itXOM zC~ZEQOHpr{-#SI9y@iWYuUf-iq-t2J2Mc|+%>344QJrp~!QHMeS_D7Tu*YyIFSCefRZ5xj_ zaO94LT~B=o2}zyjDijF6+n;xw>5YY)BuwQ#vJ>n#SK&Ar>;(7cz=8bm)z#s)OkL@I z#nIKe(@6&=V@g~@o7};w8e_&?#90y)pJ@NoWobnDy-%f!j>{jKJE!|h&!W$it8UTM z7RXY3S|}idtMODI6S_5~Oem&Fn*kEIdFuqDt%aJTyL7TWtue`4oCbBSR0SUtS4Naqsl%H-;etVOfvo-_a(K8Y*=QzjER_E&F_T<%e^$zgXZ-l z1{Oh{_0tN{IEp!9Cc*HhnhT9gG@}*hgCP2zGhMxGpMle$q2s4o49kx zK#u<(@fucxfmgaibc_8KDU+nkUp`aawX@=opCROItD-KTS(;`9O zsxP0$8{b(DKw)0h6Sr_`PROUB90ylWJG19IZvAvS-`#ty9b$zX#UrP>R8tVDoT`dA zvdHdagN#>yUjJ0>+vrYUZ%i8Ca87H9$d+?t!m(geV$st{hpLCKJ|WZ?cAmdr)M+bw zDa@q^h5$v0%-OEW4nmQi@cuRlpCJ`a=hz>4D(VU{!F(nHtAEjVEs#dh_0DLQONuy7 zrglco(huIv{Tg&Uh=zsO65R}^rGVdIRFu;+uD>-ujf1i&^^Ezy;C}P=5G>0jIlC(Z zysw*a%s?H|PHxx8;C(l!K^rgg%PM60_1)Iw|1s?i{V$2VlD6}q#aTeD4^@_EH!Rl{EC>n110f_>}&LgUZc9898+A5w_W zxY-R8i1r9);wKF{K5Fg(D-uNGG%X2oAlpitwbg&ynkd{gfz}j6o$U+0pYWv;;ZTOo zJgdL7PD0j;zgGTGGp10%!g?cE#y07Jj;2m%nH|m_>l%Ja{VC@<#fg|G6Gx4j{j2f= zu7!&_(!;Yb7bTG5h3lfb8=q1=mz1U(GE<2b#R> zw0u0=)duTI-tJPs6jgwgB=BU}6yX}CW)6<%=d8l766e&{omF*VXma2&5=y3(8bOA+ zZKNOUvtHq7A0&z7Rb<(gmpy6mBS-q$yo9Jb<$1bj76)R0T@|$dlv22bz^%tH>nqUu zl<7vdfh((@=}3vWVQNyYj-hgb!5jp-#FzF8>a6^oJq5r@l&Qs8n)k_YYc`X*MoKOtA2fSmY;7MaL>V{=<(WXS z!H>i5L7Y{q?D?_o(GML8Vu}JCFutMwdsM?755iwEyOh|g*5&o&S*|j>0yBQnagruF z<>aa&oihIM=L;SY7rI6cp66wG6E{U%=8O*;$tJT(pgCrx&#tl(i#ZxI^n5QqzNfP3 zPyULrtv7h)#?r!I%8?t!Ipe+)$(i=~F*16OXf7$Nzgvf$T>JjJ8uFZ9w&$?9LpEHuQua&b+|fEGKU^z&S%5{$iUUjA(MuKvvGq1wMo ze*dmVkPYf~xwLWol!9ki=6D)BjI@Xcr{?|it5goht${C9;r)(gn1{X@$fn?xSoRju zN1Sy$altywFNBS1^aKv;$Cf{=Ze+O`>VA0=Tk9#b?l#TdNavN}J8EGH!V9bY0aji^bla9LSj(aJLJNjjR zprOf=!dOGg&9Y3Bob5v3Et3u&f*mIorVGgNsL3pJ=0x9A{wtG(fESzdxYgc2fX{Sc ztnnbO(Asf?X8ExqPN`K|l}-OM!%5@Rj7*dATEShv0)po#2*=~1OraiFg7xFP_tq-^ zA5T{u*JRZFXN!tTONkPLF+y5Ez@Rn;%IHzj4bn)fpfoZz8p+Y484ZenGCD^iDUBc@ zNc^7pzVGk9efB)J&b{}X@A;l{pBsf{W>^vRp7fL~_+9+5$RGpf?h0NKm)L7g?vQ{! z2puP6h*7292xDY@0nf>SThU$!R8?xtix~-9y}l;s z&bzRE)!d`6*EUM5Ikd7-&}^gcOA6^xQgG_N6sK!jm0&u=>!GWR=tQb`N92hED=@?&)v7#{gd-fw~B}KW;n%9_Sw7b#bYoqWlk(Yq2~he z!SYVj3@h?q1v)m?9rvrlTqb!U-|2Z8TxkexJ$^K8ey@m$z>DGvFGh$W%v|R~tKBT- zj;P-;nz9R(70PYRKCUv>{-Xc0+CZX<* zfduKyqJeV1AOwnRO_D>bnQYp)xTb_`FMN*EY<$(0=kK?fU5*@5q*rey>yf?GVIhl3nq(7I3#CR(Wbipkjc~Yi&o@&FRpUf!PFfwJ z%&aAsM1BN2<I4_5C(0K~EsP$8VA_)Ns(+-Iz~Adx+qt?*Wf&~3 z2P;;N-~PBnC}!3B-5WQYz*#>x#;2fptanGO0M8n`d*Wp{-14I?8(zPvic@LP%Qp9m zvp%&qqs*NzBSmj)NweqVrDSe>K%9KEv3I8x^KEpm!A_ZXVhbON_0M@%EfBR(VE6tU zCXYp4Rhd_7Wd{zZ;z`xb~3KpHk$C%g+tj#=CTP2U(Np6h+zpdl^U7av%+$+b(y9ZkO8dXhW=C*3Z znQKO_sBa{DTP~(BbGv7;TI|sIPN(ho*dZ5|PbGEj;+g$RFo4cP$ak z4oy@sb(mej?Q0e`3a(*x#m9diu%U8ogL>wqP<%%RnCQM{q;s$4I~mjCn^gx(loy^k zixBXY*)Y$PI%{XV)Fzc}W~BQ%oTypkblvUXuQ8p)2UQ1lkTtw2?CYH~zYmZH%Ls(+`q^m?z=XgQa~BCY4Jxc4NfOck$u^a}67 z9A}?sQFTXMH-A-0cn%3|=8mLG#F6mK;nzsX52tiv@-J)>ZkPzog~6D{&J{|WPLrY+i}|yIDG!{^i$FdQ<(ivZlflZsm(J_O29NF z$|;q@J2dMQL}Jc?lEffYugWC~aT@(z&#c2H_#HazsKi^etVSw-TLlr=!I>KE3p_=Y zR9U>Bm-?p$&xyh)VYY0lIMn!5GM@U`^{kXEEJtNzX=WSi!aZ;%NiN-mNgbIpr#SvH zqsik=e@IOx{bPq%V!l{F!M9_zwt4B6I3v6bq@ZPJX1~2CQsEmznkN7R^*D$S-pgjYR5u)h=wb*dKSQxNO; zX~;eKm@Ykw4GH<$kKw~bUJ!sfpMPv6_l}!V-}H1F&W z$*#8ty#RbL zrSzr5j2^SC>W3y!rb!PjPnpQm4PT{{Ol_$O9gS+Xm`DHNx)Qi?HB687<8X3?+8wGk z(H1s_)Ms|=QYR{RM=*Sgcd{;nCTMA0+m)mDmmf;CxNoG&lb^=_Na3>(YY~(J*&DxD z@1~cO==4;w>IW=|g1m;a0vArS9e9>*Wr0;UG5U6Tx@4IxB1KO|ZE;E7pvS!TQ+tsw+T&6PvdbqFCsri%&W`=lp5%kzIi;NLMsrY#_Q`AbcSwNsx z`Sjb=^8oIOh@R>@>3DKO=qX2BFO&Uf+DmPi zC>{KO2$ zqc@{kIq!f#w`tx`zsCi&Rz3rP+zutgQ+t+w=?i2AAuJ}TRx{hglH(R?=E?53Sb`CA z>J8x>>M&(^*n>gu8`sVQh5NJa_YYuNh&E`fE(mlFylI&W+q=&%POqc|Z?6@VF8*Da1U?o1TF0BS>`Ib|8iFICdGm_r=; zY(X#QpMNhZH+Q%J>gq-gs4)FgumO!lh;ztvhU?m0S=gAMA+l#AYfN;RhEl1 zbpYo1bZl4A>^&H=CY%{$8e!&&v~U?W5jVL z!e1~f`@c_36LtE4n3G4y=QdN9GsRTMN^^lCAlw}}^NfaU)T*kl@Ata{%hczssoK1$ zx!Ky<@GDBsAn(V|{lO8i%z4Hs!TTCW%b$FbDu`B(5SVF)EGRfV0SQN{8AQA-wn$Jk zpn?U<*?C-~Uwif~pdS;5O9AI!2d%YZhB?3->cUE!7C&}_|^n%)fp^@%hT zuCPXKRDy2;dpy57i8RI+S??xs;n&$1l~&{%{wkDvgjZxPv94od{OeUH$}Bn}+2-%v zj@1*h_lB+~$s-&6$7`fenWTV|CCsGWMo2L4LOY&ALbYQ!jL-HhvxK9npGUTxjHYWe z>Q;8O)2%VFgAmV`x9Z#PZr@!0U)i?q)Wg5ul&#!yWbPGR)!{r3@~%{O_+Z4_Ru#G& zQJT$npX%{od-5l6?#OXQt;6Kk{8}Z#1)rg#b=8pu`ey6s&>$C@`R?_yHc|@YR9VvRdVr-;`yt$%3c$CtE(cDBg~AePijox&7sorg zt>q;ZDy`)K1+#oVKglfb3F0D(o;DiTX&Pd=?4RlH*l?(JpSM;)EcE)AviI$$C%7w# z3P3D5^CIIaEW)GigZL$4)E(cZDH%~T$9*AQo38E`48X*p%fZW59N_Z~l%eVh*ufALeRk09$556EZfcr09^uMNxm;8r zZ?*T1RzOAmdIcbmcegxpDM(f3HqAK@h$s{hOs3=j-ASh5{s@zMZo=0p4{H1-X7H6Y z<1VOD9d3{cj0N@O0p-N6vYJ>EM*6BtAelggzre~4Z^e#;#XMM-dLnGeXRGFVQ315< z&o{1wnB1O>u&a45t)^P}qofCuoj0IZhq@s;htf1Ku@GC4(qsTE&igVz1;t%-{3ere z%MPhGmLy`zMI~gPO&6OVp;mL{>LM^gN)Wlaizr$;*Ug$JYb0_~x#WYqifcJATIso* zJTA~O-GAO-qkGQ7J)x|O_BXUigs*_Y_s>13I>9$NiU^*x#i;(C~IbcwFZkhGW%`dm<-S#Q1coF)h$*bc09VR#7pbZJC zkxbb~UlyPFkzI65G6yFil3$&8 zPaX||{r1uoQ2J&14Pd50AkA;&b^!tvP6Mo4MEElVK%?e;Ca)Es8lf2Sg#P$f7MS4z zvwm6f|BvZl3SdORn}nMr^dCB-5tlb23Ggh zqh7us$(QePWcw8j!QKoPnmZk5k1S;XU-x02J+2gwUHobvQM&H?%MFt+d&#RQNNpwS z&}?C=+exEr*s^mtlk|4#>=udlI zvq`2;nYnn@RsrA{leZ`VmRiRZ4sE0=ji@QBxl27bEe;^7#b>C95TRU!Hd^%-U7@-6 zHmzc~B6PW!7Snh{5WNL7HzGTMKGMrZC6`K&clO9!_RvL;ep9Ta9kWCmgAdY7u!TYJ|}IvPRg#sr1@ocElCV7H#2bwR=&~m~!SS zwA{4vsa~w2CPgOe9Uq@qXgq*C}3SQVQw7LJRHxN+uQ?KnlJeov7EM)NAa|Ru9?>Sw#Yz z|26eq$YI!Z2sM6I8j@3+c6L)gcAM94Zeb&9Z8u$O!HB2NobJ|;%nE~0TJ1$aG)cl%0vUGWzhZLYV|B zD4C*AEo;;=$f9s0!F)X{(sy#c!a(&yYtZ_h9aLg-uUN86yLO~s9VVTdtfh$7 zA`EzF!s4s4&ZWPh$X#B21z=U-jj+(#q!=+B`XJsds66-9bg7A$d)El2FcF}ET+79f zTzz_CYopAv8Z4?B3VUVh(tIjcLH>OklU8?DCT$aa>yw*bXkCS?O~5&{wm{DhZy=f1 z>Ei~RYL7p(mgbnluIWH<*jshmOwqI-=CY~c^FxG;LXs8bYxlcmuY&xz^A#+guX6+I zb<{ikfggUzzDfdI7bT2dN58(lk>p&Ytztyr9Pnr|@LzQnV3WzUEwNyD-X&q5n3{Y5C+&1+~MW;+OsdWP!muAs}cm!o4O zO@&Hl)%_f237Z949bM;0t?1C==EDYb7%a^Doi?Bon0l{(^7a{-Ec%Sk(#6VHo7q3L zPxZu<%b;4W#z(+=AcYa8iY=v-6Cu3(Hbsgr%cbtnBtvw}I2@5K+*mZNSiu?Bn(KOP zvKAcqFrdv;6Y{#fLlimN zXk+m();wX8$TYRB5u>!9B?kU$4KGfG7CE_yQpd>~1A=$k2UG&+tS~kcTE*mHJ2pP2 z^b1t`>2ZgY!s+0auWdGZSh$UDV!%xx3P17Z^3;voR1_Mvb`rV9I**SGJtYp?8+0*p zW8(6I6vH<6>tgI8nnc)%7y?5bgrl&OT~U|7Qf(#B=Araw_(I<$-O7^azNFEp61&_7 zs;*NeeA6Mz2yE1deQJ$%zIuG#N?|J_Y_?#r`@>kAj)s2DOLvhZj5$NJZBOs}JloX% z_laq`4H!>?xJPxo1W? z!a>-=2#}r z1`>@N0~pMcPWMSFPxHd<&#W3qw1XyPnBtKBV9ly|pNj}Fzo@Fa)cof}Ygd@Dk|2v? zYwO(FpfGwV!mZzd7{W}qky4x`q{Vn@!bz*GW~TMQ`H$hp((!M>y)I&!{nRy0!mi#N zJau}J`9+aJ#)UDq^9hDq-u(|WW^^gL(+N4-5my-M-gW9mpqKe!? zY~+c#je6Vw5F&!BkG1{fEi0?C=Z}-o$!vczfLnCIg=jDEYHJUmcc6Uw>fJzWsTR2G zyF*(u94Mi#KDLG{qwC$0;;OHiJnhuVifS+`#>gFb%K*yJem#Ran?;XP7n4k=0zHcAl6Btp0$ z`nAneaa<~61A3%~|T9mP&`wCj1<-h3YiSXnLBa@h$Q`U{^FX!&FmgV*p^O z|Cx+E-D-<8JvR$ND*40f-3@CaN^@w3hmL5a)VcIJ7(wFEWJJ5{F;9fp%G=3j1+~B( zI_UzZbOb8+L>2X{uYm|52|yfO0wBKGl_)sWWo@cVm~9lWMdDSvYJBl)JcTJ>LnUE^ zs#esO%}W5PP)s_I3ETvlKKXIEAidV81BgJm5j3Hwp;>cdr93BH1_S`t+aHm}vAWqscD83rF@`&W+IjJpJd={eNFT zfvX8J|NMp*3UKv*0~o#hPww8JK0KJkqE_}lPec3vQ#&uRoExAug~~oK5@wl-sd9lF z4eS3Oc{~yW|0fsC_SOevI7{|4OUY;*=w#jhdU%Zn68c})2dn$vE?)ZY+q`Ag##=RS zctJ<4z}e7YQ2G^4I(4)yK)I-}Vst|D>0nVlL3KcFd;bx^Y3YWyo0QHgR~Jsb%Y|y^ zL48pP-vKeV-i=dNoF}T2rw*ul@1j)dInd(|stKt67>W-`%Z`=gsZ{$W|G!E5=hBhI z_y3djKkw{c{~!Oo9$6a zpqZPNa)h1Qv=7=79B70^%X~?)nmRW8x;rk*+o6p@V`8!}o#yGIJ)T(*eS-aKwj#aA zT1MMTk4uu2p&~*s8Mi{_yz^`>F6OXu3#g@+ovcrL;Ri(yR0U(>ip*pTlk4YI4@2m*KmVDr~8lfavk#@!G}gIni8 zqf1U%A=ET%Id|)5@S)OsB;leE)5M6x;Fv(5iKu^yqb?yKn;HZ% z{KqgXgK6UU>Qc^u47XGNZ5%gj2$H6&`U+_IW`qYAoLO(mjs=01smT)}U!4&0J%zmV z>K1(}?RsFM`ZIO^0Hqr)_4x=2>T`}ucv@F{w!L2g7<^lPay z8^}KTp~}GUfm8n5;%B+Pd%{C+0Him-R$@$JWXbG`ycpjAuwz3)^X}5*13Ccshk}0P z0{In9GZEiQ0QJ%q^iaAzC_h9o4|ws%EkIIN!gqm6OxX+4I~mDjt-2$77mwAy!nhFO z|5X?fTFC{dAX9dD8PE}sH9gJT`VA^BJ-{N==_oR$>5rFBpwQXnJ2`C+#1?(@m7vo5 zRd$B_=72TSgGshc981yAl-(~7;ynkdi)RoO&&=eiSa4RV%}gKNM4Myx+*2YQJdf;1 zNvQAG#_NQ%*`4~a128)r;hW$M3Ut6arqsJgWfo;CV?7#*&`Cwxx`m5wk0r<8f5(pk z%h4X*pR5h}BkTrdCU6&O#GSccw#$Q-DRNrSm@}vR(mA*?(LI|*n@0b`>sb`)x(7ol zU22b?Q;Vji5+I3XKXu6nCHX7;Nuy`%#ByMSyPZl>^Hfg|@=!UAWq`etHBm9eUjz_7 zHI2#G?hDXkxl0PB>>;7nlz@N(KS>~WonjM0qD-!;G>6-w;h?~2?MJcGm~!IxWV7BL z&!@Qm*h?Xz7>?zXm^N?I%^mz(Rbbk4li6tv2CpL&eIdc-&WwpLxYqls&Alf3ZQ z3F;)nG8m%h_B58L%tQ)tfv+le1TRNLEeB;Mmg>- zL;{>NjFGjUN{oprF-F~G!ukp;q|US9ONA(JTGjM=ZEtk^iKVc80}!*5b#rkZ zex-)BE@oT@Z3b9}s^#{biMGkSwK^M}VguKc?I0-0?dM3qCs$RSP0iC>I+7a)SMN_5 zBcq!WsjgoY+6V@<+TFqoa>D98T|#W`eR;lR$F&jyiHpQ4!$P87EAhNjHm7C$`)n_)75+vT)};2d@Ws{8 z+03--_iF)4H?`+va*-tlOkP}{VgdI{EZ;ejlsd?l*u2?;M3wC+9Jg~OhGFej42|Qv z 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 Y0oK-pI$pqZ0+07tncH2ifn7`f2d`0OBLDyZ diff --git a/docs/new-docs/diagrams/zeropool-keys/main.tex b/docs/new-docs/diagrams/zeropool-keys/main.tex index c2943d0..8441a1a 100644 --- a/docs/new-docs/diagrams/zeropool-keys/main.tex +++ b/docs/new-docs/diagrams/zeropool-keys/main.tex @@ -29,6 +29,12 @@ } \begin{document} \begin{varwidth}{25cm} + \noindent + \begin{description} + \item[] \tikz \draw[->] (0,0) to (1,0); denotes a deterministic mapping + \item[] \tikz \draw[->,snake] (0,0) to (1,0); denotes a randomized mapping + \end{description} + \noindent \begin{tikzpicture} \node[keyNode] (spending) {Spending key $\sigma$}; \node[keyNode,below=of spending] (verifier) {Verifier key $A$}; @@ -45,15 +51,9 @@ \draw[->,snake,out=-90,in=90] (interm) to (address); \node[fit=(spending)(interm),pinnedBox={30}{Private, genedated once per user}] {}; - \node[fit=(recieving)(outgoing),pinnedBox={-110}{Freshly sampled for each transaction}] {}; + \node[fit=(recieving)(outgoing),pinnedBox={-110}{Freshly sampled for each transaction, serve as session keys}] {}; \node[fit=(address),pinnedBox={-70}{Freshly sampled on demand, hides user's identity $\sigma$}] {}; \end{tikzpicture} - - \noindent - \begin{itemize} - \item \tikz \draw[->] (0,0) to (1,0); denotes a deterministic mapping - \item \tikz \draw[->,snake] (0,0) to (1,0); denotes a randomized mapping - \end{itemize} % \begin{minipage}{15cm} % \end{minipage} \end{varwidth} From 392fc0cac25b405fd8be4dd7c7d841e52f1006b1 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 28 Jul 2023 19:16:19 +0200 Subject: [PATCH 19/30] Make sure that spent offset is included in availabe area --- .../diagrams/account-spent-offset.png | Bin 23778 -> 22785 bytes .../diagrams/account-spent-offset/main.tex | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/new-docs/diagrams/account-spent-offset.png b/docs/new-docs/diagrams/account-spent-offset.png index 25ac2d06ec056b700ac81e612e9dbf5ed1ff0c58..bff51a7b36a83b58833e615d4b59640a666451a6 100644 GIT binary patch literal 22785 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 literal 23778 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 diff --git a/docs/new-docs/diagrams/account-spent-offset/main.tex b/docs/new-docs/diagrams/account-spent-offset/main.tex index ef3c435..a78c5b9 100644 --- a/docs/new-docs/diagrams/account-spent-offset/main.tex +++ b/docs/new-docs/diagrams/account-spent-offset/main.tex @@ -14,14 +14,14 @@ note/.style={draw,circle,minimum size=2mm}, spentMarker/.style={pattern=north east lines,pattern color=gray}, boxAround/.style={ - rectangle,draw,dotted,rounded corners=0.2cm,inner sep=3mm,outer sep=1mm, + rectangle,draw,dashed,rounded corners=0.2cm,inner sep=1.9mm,outer sep=1mm, }, } % \tikzcdset{column sep/normal=0.2cm} \begin{document} \begin{tikzcd}[ % row sep=normal, - column sep=4mm, + column sep=5mm, ampersand replacement=\&, nodes in empty cells, execute at end picture={ @@ -47,7 +47,7 @@ \node[fit=(leftInf)(consumedThree),boxAround,pin={[text width=4cm,font=\normalsize]-90:{ Alice's notes here are already joined, and can not be spent again }}] (boxLeft) {}; - \node[fit=(unconsumedOne)(rightInf),boxAround,pin={[text width=4cm,font=\normalsize]-90:{ + \node[fit=(spentOffset)(rightInf),boxAround,pin={[text width=4cm,font=\normalsize]-90:{ Alice's notes here are available for joining }}] (boxRight) {}; % @@ -77,7 +77,7 @@ |[account]| \& |[note]| \& |[note,fill=green]| \& - |[note]| \& + % |[note]| \& |[alias=rightInf]| \dots \& \\ \end{tikzcd} From 739d763477f0cbf95a876c339b8215141a623668 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Fri, 28 Jul 2023 19:54:48 +0200 Subject: [PATCH 20/30] update --- docs/new-docs/03-transaction.md | 75 +++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 17 deletions(-) diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index d90f4a0..a3f2b74 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -57,7 +57,7 @@ the same input many times and produce different random output each time). - The receiving and outgoing keys are picked fresh for each transaction and used by the receivers of notes to decrypt notes posted on some public medium - (**TODO: Which one?**). + (**TODO: Which one? More specificity.**). ## Sequence of Accounts and Notes @@ -118,7 +118,7 @@ that hash of the account doesn't reveal anything about the fields. The field $i$ is pointing at some position in the sequence of accounts and notes. All the notes belonging to this account that are located to the left of $i$ are considered joined (spent), and the ones in position $i$ and to the -right of it are available for spending. +right of it are available for joining. ![Account spent offset](diagrams/account-spent-offset.png) @@ -150,27 +150,68 @@ and an account (belonging to $\eta$) to join the note with. :::info -**TODO: What's written here is inaccurate. It's not zero hashes, it's all fields -being set to 0 make accounts and notes behave in a special way.** +Accounts and notes where all fields are filled with zero values have special +meaning in ZeroPool. -In practice, a lot of the time we will be working with hashes of account -and note structures. Hash values equal to zero have special meaning in -ZeroPool. - -- Special zero account is used to create new accounts: zero account has $0$ - balance, no notes are associated with it and it can be spent multiple times - with any spending key $\sigma$. If you want to create a new account, you - "spend" the zero account with your freshly sampled key $\sigma$, and after - that you can start using your new account in future transactions. +- Zero account is used to create new accounts: it has $0$ balance, no notes can + be associated with it, it has no concrete spending key but instead can be + spent multiple times with any spending key $\sigma$. If you want to create + a new account, you "spend" the zero account with your freshly sampled key + $\sigma$, and after that you can start using your new account in future + transactions. - Zero note hash means "do not use this note". Since the number of `INPUT` and `OUTPUT` notes transaction works on is fixed (to avoid privacy leakage), we need a way to encode dummy notes that are not to be used if the user wants to - use less of them, and zero note hashes do just that. + use less of them. Notes that have all fields set to zero do just that. + +::: + +### Nullifiers + +Nullifiers are special values that are unique for each pair of account + its +corresponding intermediate key $\eta$, which don't reveal the data of that +account and key. In practice, it's simply the hash of the account (all the +fields in its structure), accounts index in the sequence, and the intermediate +key $\eta$ that the transaction is being invoked with, + +$$ +\textsf{nullifier} = H(\textsf{account}, \textsf{index}, \eta). +$$ + +For each transaction, the user publishes the nullifier of the account that +serves as input to this transaction. The ZeroPool smart-contract keeps the +global history of all nullifiers it had seen, and rejects the transaction if +its corresponding nullifier was already recorded. This way, we make sure that +no account can serve as input to a transaction more than once. + +Each account in the sequence has a unique index, its concrete field values +and only one intermediate key $\eta$ that it can be spent with. Therefore, +each account will have only one unique nullifier and won't be spent more than +once. One exception to this is the special zero account. All of its fields +are zero as well as its index, but each time it's being passed as input to a +transaction, it's allowed to be spent with a new intermediate key $\eta$. Each +such call to "spend" zero account will have a different nullifier due to +different intermediate keys $\eta$ being used. This way, zero account can be +spent by any intermediate key, but no more than once with each key. + +Nullifier prevents double spending of accounts, and ensures that there exists +at most one unique account associated with each intermediate key $\eta$. In the +meantime, account's spent offset $i$ ensures that no note can be spent twice — +spending the note will move the spent offset of the account it belongs to to +the right of the note forever marking it as spent. + +:::tip + +An account does not have to be "created" in order to receive notes from +others. A user can simply generate keys $\sigma$, $\eta$, $(d, P_d)$ as usual +(no interaction with blockchain needed for this), give diversified public +address $(d, P_d)$ to a friend, and have the friend create notes on this +address. Notes will be stored in the sequence even though there's no record of +the account they belong to. -Due to collision resistance, we're extremely unlikely to ever encounter account -or note values that will actually hash to zero. Therefore, it's safe to treat -zero hashes as special values. +Later, the user can create an account with $\sigma$ as usual, initialize its +spent offset $i$ to 0 And start joining notes which his friend has sent him. ::: From 7a482c743ac37ba3616989d66cb24797f146b787 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Mon, 31 Jul 2023 22:18:02 +0200 Subject: [PATCH 21/30] small changes --- docs/new-docs/03-transaction.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index a3f2b74..b488c7a 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -145,8 +145,8 @@ Balance $b$ and salt $t$ here have the same meaning as in account. The diversified public address $(d, P_d)$ is binding a note to the account it's owned by. The values $d$ and $P_d$ are derived from $\eta$, but don't reveal -$\eta$ itself. In order to join a note, the user must provide the value $\eta$ -and an account (belonging to $\eta$) to join the note with. +$\eta$ itself. In order to join a note, the user must know the value $\eta$ and +the account (belonging to $\eta$) to join the note with. :::info @@ -160,7 +160,7 @@ meaning in ZeroPool. $\sigma$, and after that you can start using your new account in future transactions. -- Zero note hash means "do not use this note". Since the number of `INPUT` and +- Zero note means "do not use this note". Since the number of `INPUT` and `OUTPUT` notes transaction works on is fixed (to avoid privacy leakage), we need a way to encode dummy notes that are not to be used if the user wants to use less of them. Notes that have all fields set to zero do just that. From d81a94549c5a4b36c54ff228fce68c3e8edc4fc3 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Wed, 2 Aug 2023 17:13:53 +0200 Subject: [PATCH 22/30] pass over the overview --- docs/new-docs/03-transaction.md | 36 ++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index b488c7a..e3b5f0d 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -1,5 +1,9 @@ # Transaction Overview +On this page we overview different pieces of data that are involved in a +transaction, and the invariant conditions on that data that the transactions +maintain. + As mentioned in [Overview](overview), ZeroPool encodes all possible actions a user may want to perform on the pool with a single transaction type. A ZeroPool transaction consumes one account (associated with user's spending key $\sigma$) @@ -9,9 +13,6 @@ old one) and `OUTPUT` number of new notes. The created new notes may belong to accounts of other users (with keys different from $\sigma$). Consumed account and notes can not be used again. -There may exist no more than one account associated with a given spending key -$\sigma$ at any single moment. - :::tip Since the consumed and newly created account have the same associated @@ -169,18 +170,21 @@ meaning in ZeroPool. ### Nullifiers -Nullifiers are special values that are unique for each pair of account + its -corresponding intermediate key $\eta$, which don't reveal the data of that -account and key. In practice, it's simply the hash of the account (all the -fields in its structure), accounts index in the sequence, and the intermediate -key $\eta$ that the transaction is being invoked with, +Nullifiers are special hash values that are computed based on account's data +and its corresponding intermediate key $\eta$. An account's nullifier uniquely +identifies the account — yet it doesn't reveal the data of that account or its +key. + +More concretely, an account's nullifier is a hash of the account structure (all +the fields in it), account's index in the sequence, and the intermediate key +$\eta$ that the transaction is being invoked with, $$ \textsf{nullifier} = H(\textsf{account}, \textsf{index}, \eta). $$ -For each transaction, the user publishes the nullifier of the account that -serves as input to this transaction. The ZeroPool smart-contract keeps the +When submitting a transaction, the user publishes the nullifier of the account +that serves as input to this transaction. The ZeroPool smart-contract keeps the global history of all nullifiers it had seen, and rejects the transaction if its corresponding nullifier was already recorded. This way, we make sure that no account can serve as input to a transaction more than once. @@ -224,8 +228,8 @@ incrementally append values to it. Consider a Merkle Tree of height $h$. To store the sequence $s_0, s_1 \dots s_{n-1}$ of accounts and notes in it, we assign first (going from left to -right) $n$ leaves of the tree hashes $H(s_0), H(s_1) \dots H(s_{n-1})$ and fill -the remaining $2^h - n$ leaves with zeroes. And we compute the values of all +right) $n$ leaves of the tree hashes $H(s_0), H(s_1) \dots H(s_{n-1})$ and +fill the remaining $2^h - n$ leaves with zeroes. We compute the values of all inner nodes according to the usual Merkle Tree rule. (If no transactions have happened yet and the sequence is empty, all leaves of the Merkle Tree will be initialized with zeroes.) @@ -237,8 +241,8 @@ $k$ into $h$ bits and treat $0$s and $1$s in it as a sequence of "left" and recompute the Merkle Tree if some leaf is modified, or even multiple leaves in bulk by updating a subtree. We've covered this in [Background](background). -Even though Merkle Tree allows modifying any leaf, including the ones we've -assigned before, we only use this functionality to append values to the +Even though Merkle Tree allows modifying any leaf (including the ones we've +assigned before), we only use this functionality to append values to the sequence and never modify elements that were added to it before. Say, if the Merkle Tree leaves currently currently have values @@ -246,8 +250,8 @@ $$ H(s_0), H(s_1) \dots H(s_{n-1}), 0, 0 \dots 0 $$ -assigned to them, the only modification we will do is assigning value -$H(s_{n})$ to leaf $n$. +assigned to them, the only modification we will do is overwriting the $0$ in +leaf $n$ with value $H(s_{n})$. Using Merkle Tree commitment to implement a sequence of accounts and notes in ZeroPool means that the total length of the sequence can never exceed $2^h$. From 6072160b095749bb44813725472533eb2d5a5bbe Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Wed, 2 Aug 2023 21:20:59 +0200 Subject: [PATCH 23/30] update --- docs/new-docs/03-transaction.md | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index e3b5f0d..fcbacbe 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -17,8 +17,9 @@ and notes can not be used again. Since the consumed and newly created account have the same associated key $\sigma$ and belong to the same user, one can also view them as two -instantiations of the same account, and transaction as modifying this account -(overwriting some fields in it). +instantiations of the same account, and transaction as modifying this account: +creating a copy with some fields modified, invalidating the old version and +marking the new one as current. ::: @@ -256,17 +257,27 @@ leaf $n$ with value $H(s_{n})$. Using Merkle Tree commitment to implement a sequence of accounts and notes in ZeroPool means that the total length of the sequence can never exceed $2^h$. -## zkSNARK Constraint Systems +## Putting Everything Together -**TODO: Where to introduce nullifiers?** +Here's the breakdown of who holds each piece of data described above: -The global state maintained by the ZeroPool smart-contract is given by the root -hash of Merkle Tree containing accounts and notes sequence. The smart-contract -allows anyone to replace the root it stores with a new value only if the -sequence commited to by the new root is obtained from the old one by applying a -valid transaction to it. + - The ZeroPool smart-contract knows: -TODO: Introduce zkSNARK CSes. + 1. The `root` of the Merkle tree that commits to the current sequence of + accounts and notes. + 2. The set of nullifiers published by transactions so far. + + Since the operations performed by the smart-contract are public as well as + the data they operate on, these values are also visible to all users. + + - Each ZeroPool user knows: + + 1. His spending $\sigma$, verifying $A$, intermediate $\eta$ keys. + 2. His account: its index in the sequence and all the fields ($i, b, t$). + 3. The contents of all the notes that were sent to him by other users. + + +### Steps to Create a Transaction The public inputs of CSes are: @@ -274,3 +285,5 @@ The public inputs of CSes are: - nullifier - out_commit - delta + +### Steps to Verify a Transaction From d93eaeded4398dbc7ab41c0d2faef73d6b3f212f Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Thu, 3 Aug 2023 00:37:08 +0200 Subject: [PATCH 24/30] update --- docs/new-docs/03-transaction.md | 40 ++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index fcbacbe..5d4c10d 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -276,14 +276,42 @@ Here's the breakdown of who holds each piece of data described above: 2. His account: its index in the sequence and all the fields ($i, b, t$). 3. The contents of all the notes that were sent to him by other users. +### zkSNARK Constraint system -### Steps to Create a Transaction +In order to check that transactions proposed by users are valid, and avoid +disclosing the transaction details (accounts invonved, amounts of tokens +transferred) we use zkSNARKs. In this section, we define the zkSNARK constraint +system used. + +Public inputs: + +1. `old_root`, the current Merkle tree root that serves at the commitment of + the accounts and notes sequence state before the transaction. +2. `new_root`, the proposed root of the Merkle tree after the transaction. +3. `nullifier`, the nullifier of transaction's input account (the one that's + being "spent" or consumed by the transaction). +4. `delta`, the difference between the amount of tokens the transaction + produces and the amount it consumes (`delta` being a nonzero value means + that this transaction either involves a deposit into ZeroPool from an + account on the underlying blockchain or a withdrawal). + +Secret inputs: + +1. User's verifying $A$ and intermediate $\eta$ keys. +2. The values of input account and notes. +3. Merkle proofs pointing at the hashes of input accounts and notes in the + sequence bound by `old_root` committment. +4. The values of the output account and notes. +5. Index of the left-most zero leaf in the Merkle tree (the position from which + the output account and notes will be written to the sequence). +6. The signature of all the above produced using user's spending key $\sigma$. -The public inputs of CSes are: +Conditions checked: + +1. … + +### Steps to Create a Transaction - - root - - nullifier - - out_commit - - delta ### Steps to Verify a Transaction + From 60adf6f32c4baa47dd80fe288a8e321f8742a9fa Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Mon, 5 Feb 2024 15:31:46 +0100 Subject: [PATCH 25/30] more details on zkSNARK CS --- docs/new-docs/01-background.md | 2 +- docs/new-docs/03-transaction.md | 66 +++++++++++++++++++++++++++------ 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/docs/new-docs/01-background.md b/docs/new-docs/01-background.md index 8a41b6e..1defd09 100644 --- a/docs/new-docs/01-background.md +++ b/docs/new-docs/01-background.md @@ -9,7 +9,7 @@ We use zkSNARKs to enable a smart contract verify conditions on secret user-supplied data without seeing it. See [docs for fawkes-crypto library](/docs/fawkes-crypto/background) for a -high-level overview of how zkSNARKs work. +high-level overview of what zkSNARKs can do. ## Merkle Tree diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index 5d4c10d..2aa8080 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -283,7 +283,7 @@ disclosing the transaction details (accounts invonved, amounts of tokens transferred) we use zkSNARKs. In this section, we define the zkSNARK constraint system used. -Public inputs: +#### Public Inputs 1. `old_root`, the current Merkle tree root that serves at the commitment of the accounts and notes sequence state before the transaction. @@ -295,20 +295,64 @@ Public inputs: that this transaction either involves a deposit into ZeroPool from an account on the underlying blockchain or a withdrawal). -Secret inputs: +#### Secret Inputs 1. User's verifying $A$ and intermediate $\eta$ keys. -2. The values of input account and notes. -3. Merkle proofs pointing at the hashes of input accounts and notes in the - sequence bound by `old_root` committment. -4. The values of the output account and notes. -5. Index of the left-most zero leaf in the Merkle tree (the position from which - the output account and notes will be written to the sequence). -6. The signature of all the above produced using user's spending key $\sigma$. -Conditions checked: +1. Transaction: -1. … + 1. The values of input account and notes, $\textsf{in\_account}$ and $\textsf{in\_notes}[\textsf{INPUT}]$. + 1. Merkle proofs pointing at the hashes of input accounts + and notes in the sequence bound by `old_root` committment. + 1. The values of the output account and notes, $\textsf{out\_account}$ and $\textsf{out\_notes}[\textsf{OUTPUT}]$. + 1. Index of the left-most zero leaf in the Merkle tree + (the position from which the output account and notes will be written to the sequence). + +1. The signature of the transaction above produced using user's spending key $\sigma$. + + +:::info + +Note that the spending key $\sigma$ which is necessary to create transactions + is not part of (public or secret) inputs to zkSNARK constraint system. +This means that $\sigma$ can be stored on a separate hardware ledger (capable of signing) + providing an extra level of security in case the device that computes zkSNARK proofs is compromised. + +::: + +#### Conditions Checked + +1. Input notes are unique or blank (all fields equal zero). + Output notes are unique or blank. + +1. Keys: + + - Transaction's signature is correct (checked using verifying key $A$). + - The intermediate key $\eta$ is the one derived from $A$, + (the mapping $A \mapsto \eta$ is deterministic). + - The $\eta$ is owner of input and output accounts — + checked using $\textsf{account}.\eta$ field. + - The $\eta$ is the owner of input notes (but not necessary owner of output notes). + This is checked by looking at note's diversified address $(d, P_d)$ + and checking that it's associated with $\eta$. + +1. The public nullifier for input account is computed correctly. + +1. Inputs Merkle proofs: + + - The input account is either blank + (meaning that it's being created for the first time) + or has a valid Merkle proof showing that it's present in the sequence. + + - The input notes are either blank (unused) or have valid Merkle proofs. + +1. Spent note index only moves forward, $\textsf{in\_account}.i \leq \textsf{out\_account}.i$. + +1. The positions of all non-blank input notes in the sequence (proven by Merkle proofs above) + must be between $\textsf{in\_account}.i$ and $\textsf{out\_account}.i$. + +1. Difference between input (account and notes) balances + and output (account and notes) balances should be equal to `delta`. ### Steps to Create a Transaction From acd11099a9851b62f2758f359d22f6e5736298a4 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Mon, 5 Feb 2024 16:10:38 +0100 Subject: [PATCH 26/30] pass over nullifiers and add some more info on transaction --- docs/new-docs/03-transaction.md | 108 +++++++++++++++++++------------- 1 file changed, 66 insertions(+), 42 deletions(-) diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index 2aa8080..be331ac 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -152,59 +152,66 @@ the account (belonging to $\eta$) to join the note with. :::info -Accounts and notes where all fields are filled with zero values have special -meaning in ZeroPool. - -- Zero account is used to create new accounts: it has $0$ balance, no notes can - be associated with it, it has no concrete spending key but instead can be - spent multiple times with any spending key $\sigma$. If you want to create - a new account, you "spend" the zero account with your freshly sampled key - $\sigma$, and after that you can start using your new account in future - transactions. - -- Zero note means "do not use this note". Since the number of `INPUT` and - `OUTPUT` notes transaction works on is fixed (to avoid privacy leakage), we - need a way to encode dummy notes that are not to be used if the user wants to - use less of them. Notes that have all fields set to zero do just that. +Accounts and notes where all fields are filled with zero values are called “blank” + and have special meaning in ZeroPool. + +- Blank account is used to create new accounts: + it has $0$ balance, + no notes can be associated with it, + it has no concrete spending key + but instead can be spent multiple times with any spending key $\sigma$. + If you want to create a new account, + you "spend" the blank account with your freshly sampled key $\sigma$, + and after that you can start using your new account in future transactions. + +- Blank note means "do not use this note". + Since the number of `INPUT` and `OUTPUT` notes transaction works on is fixed + (to keep the number of actually used notes private), + we need a way to encode dummy notes that are not to be used + if the user wants to use less of them. + Blank notes that have all fields set to zero do just that. ::: ### Nullifiers Nullifiers are special hash values that are computed based on account's data -and its corresponding intermediate key $\eta$. An account's nullifier uniquely -identifies the account — yet it doesn't reveal the data of that account or its -key. + and its corresponding intermediate key $\eta$. +An account's nullifier uniquely identifies the account + — yet it doesn't reveal the data of that account or its key. -More concretely, an account's nullifier is a hash of the account structure (all -the fields in it), account's index in the sequence, and the intermediate key -$\eta$ that the transaction is being invoked with, +More concretely, an account's nullifier is a hash of the account structure (all the fields in it), + account's index in the sequence, + and the intermediate key $\eta$ that the transaction is being invoked with, $$ \textsf{nullifier} = H(\textsf{account}, \textsf{index}, \eta). $$ When submitting a transaction, the user publishes the nullifier of the account -that serves as input to this transaction. The ZeroPool smart-contract keeps the -global history of all nullifiers it had seen, and rejects the transaction if -its corresponding nullifier was already recorded. This way, we make sure that -no account can serve as input to a transaction more than once. - -Each account in the sequence has a unique index, its concrete field values -and only one intermediate key $\eta$ that it can be spent with. Therefore, -each account will have only one unique nullifier and won't be spent more than -once. One exception to this is the special zero account. All of its fields -are zero as well as its index, but each time it's being passed as input to a -transaction, it's allowed to be spent with a new intermediate key $\eta$. Each -such call to "spend" zero account will have a different nullifier due to -different intermediate keys $\eta$ being used. This way, zero account can be -spent by any intermediate key, but no more than once with each key. - -Nullifier prevents double spending of accounts, and ensures that there exists -at most one unique account associated with each intermediate key $\eta$. In the -meantime, account's spent offset $i$ ensures that no note can be spent twice — -spending the note will move the spent offset of the account it belongs to to -the right of the note forever marking it as spent. + that serves as input to this transaction. +The ZeroPool smart-contract keeps the global (public) history of all nullifiers it had seen, + and rejects the transaction if its corresponding nullifier was already recorded. +This way, we make sure that no account can serve as input to a transaction more than once. + +Each account in the sequence has a unique index, + its concrete field values and only one intermediate key $\eta$ that it can be spent with. +Therefore, each account will have only one unique nullifier + and won't be spent more than once. +One exception to this is the special blank account. +All of its fields are zero as well as its index, + but each time it's being passed as input to a transaction, + it's allowed to be spent with a new intermediate key $\eta$. +Each such call to "spend" blank account will have a different nullifier + due to different intermediate keys $\eta$ being used. +This way, zero account can be spent by any intermediate key, + but no more than once with each key. + +Nullifier prevents double spending of accounts, + and ensures that there exists at most one unique account associated with each intermediate key $\eta$. +In the meantime, account's spent offset $i$ ensures that no note can be spent twice + — spending the note will move the spent offset of the account it belongs to, + to the right of the note forever marking it as spent. :::tip @@ -354,8 +361,25 @@ This means that $\sigma$ can be stored on a separate hardware ledger (capable of 1. Difference between input (account and notes) balances and output (account and notes) balances should be equal to `delta`. -### Steps to Create a Transaction - +The current ZeroPool implementation splits the conditions above into two separate sets of zkSNARK constraints + called “tree circuit” and “transaction circuit”. +This is done for performance reasons, + but the result is the same as checking all the conditions in one circuit. ### Steps to Verify a Transaction +One can view a smart-contract transaction as a mapping of the following form: + +$$ +(\textsf{old\_state}, \textsf{transaction\_data}) \mapsto \textsf{new\_state}, +$$ +where +- $\textsf{old\_state}$ is the state of smart-contract before transaction, +- $\textsf{transaction\_data}$ is the arguments that the transaction called has supplied, +- $\textsf{new\_state}$ is the new state smart-contract has arrived at after handling the transaction. + +The state of ZeroPool smart-contract is just root of the Merkle tree containing the current sequence of accounts and notes. + + + +### Steps to Create a Transaction From 49b5696fd5a0a7c28ea9103fe9edcc8a0eabb2cc Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Mon, 5 Feb 2024 17:09:12 +0100 Subject: [PATCH 27/30] update on tx description --- docs/new-docs/03-transaction.md | 62 ++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 9 deletions(-) diff --git a/docs/new-docs/03-transaction.md b/docs/new-docs/03-transaction.md index be331ac..ba2dd9d 100644 --- a/docs/new-docs/03-transaction.md +++ b/docs/new-docs/03-transaction.md @@ -368,18 +368,62 @@ This is done for performance reasons, ### Steps to Verify a Transaction -One can view a smart-contract transaction as a mapping of the following form: +ZeroPool smart-contract maintans an internal state consisting of two components: -$$ -(\textsf{old\_state}, \textsf{transaction\_data}) \mapsto \textsf{new\_state}, -$$ -where -- $\textsf{old\_state}$ is the state of smart-contract before transaction, -- $\textsf{transaction\_data}$ is the arguments that the transaction called has supplied, -- $\textsf{new\_state}$ is the new state smart-contract has arrived at after handling the transaction. +- `root`, root of the Merkle tree containing the current sequence of accounts and notes, +- `nullifiers`, history all nullifiers that were published in the past, +- `snark_vk`, verifying key for zkSNARK proofs (initialized when ZeroPool smart-contract is deployed and never modified). + +TODO: make sure we describe all of these: + +```rust +self.pool_index = U256::from(self.pool_index).unchecked_add(U256::from(128u8)); +self.roots.insert(&self.pool_index, &tx.root_after); +self.nullifiers.insert(&tx.nullifier, &hash); +self.all_messages_hash = new_all_messages_hash; +``` + +:::note + +Since the whole set of nullifiers can get quite large, + in practice one may store only Merkle commitment to the set + and have the transaction caller prove that certain nullifier is or isn't in the set. +This way, whole state maintained by the contract will consist only of two Merkle commitments. + +To simplify the exposition, + we will treat nullifiers as a list of values and have contract manipulate it directly in this section. + +::: + +ZeroPool expects the following parameters to each transaction it receives. +Note that since all computation steps of a smart-contract are public, + these values are publicly visible. + +- `new_root` +- `nullifier` +- `snark_proof` +- `delta` +- `withdrawal_address` + +A transaction peforms the following: + +1. Check that `nullifier` is not present in saved `nullifiers` state. + +1. Retrieve `old_root` saved in the smart-contract state, and verify the `snark_proof` with + - `snark_vk` as verifying key, + - `(delta, nullifier, old_root, new_root)` as public inputs. + +1. Handle net balance change: -The state of ZeroPool smart-contract is just root of the Merkle tree containing the current sequence of accounts and notes. + - If $\textsf{delta} < 0$, + ensure that the transaction has deposited `delta` tokens to ZeroPool smart-contracts's account + (on the underlying blockchain). + - If $\textsf{delta} > 0$ and all the checks above passed, + send `delta` amount of tokens to address `withdrawal_address`. +1. If no error occured in the steps above, + save `new_root` as the root and append `nullifier` to the `nullifiers` + in the new state. ### Steps to Create a Transaction From 637a49367b6fbd54bbf7bd4d11e35b33d31ce7d4 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Tue, 6 Feb 2024 14:59:35 +0100 Subject: [PATCH 28/30] put detailed technical description into the high-level overview --- docs/intro.md | 3 +-- docs/new-docs/04-zero-knowledge.md | 4 ---- docs/{new-docs => zeropool}/01-background.md | 0 docs/{new-docs => zeropool}/02-overview.md | 0 docs/{new-docs => zeropool}/03-transaction.md | 0 .../04-technical}/account-and-notes/README.md | 0 .../04-technical}/account-and-notes/accounts.md | 0 .../04-technical}/account-and-notes/notes.md | 0 .../04-technical}/contracts-and-circuits/README.md | 0 .../contracts-and-circuits/evm/README.md | 0 .../evm/operator-manager-contract/README.md | 0 .../mutable-operator-manager.md | 0 .../evm/the-pool-contract/README.md | 0 .../evm/the-pool-contract/transaction-calldata.md | 0 .../contracts-and-circuits/evm/token-contract.md | 0 .../evm/verifier-contracts.md | 0 .../evm/voucher-token-contract.md | 0 .../contracts-and-circuits/substrate/README.md | 0 .../contracts-and-circuits/substrate/alt_bn128.md | 0 .../contracts-and-circuits/substrate/num.md | 0 .../contracts-and-circuits/substrate/operator.md | 0 .../contracts-and-circuits/substrate/pallet.md | 0 .../contracts-and-circuits/substrate/tx_decoder.md | 0 .../contracts-and-circuits/substrate/verifier.md | 0 .../04-technical}/elliptic-curve-cryptography.md | 0 .../04-technical}/high-level-overview.md | 0 .../04-technical}/relayer-node/README.md | 0 .../04-technical}/relayer-node/optimistic-state.md | 2 +- .../relayer-node/relayer-operations.md | 0 .../04-technical}/relayer-node/rest-api.md | 0 .../04-technical}/transaction-overview/README.md | 0 .../transaction-overview/common-structure.md | 0 .../transaction-overview/signing-a-transaction.md | 0 .../transaction-overview/the-nullifiers.md | 0 .../the-transaction-lifecycle.md | 0 .../transaction-overview/transaction-types.md | 0 .../transaction-overview/untitled-1/README.md | 2 +- .../untitled-1/memo-block-encryption.md | 0 .../04-technical}/untitled/README.md | 2 +- .../04-technical}/untitled/the-poseidon-hash.md | 0 .../04-technical}/zeropool-keys/README.md | 2 +- .../zeropool-keys/address-derivation.md | 0 .../04-technical}/zeropool-keys/ephemeral-keys.md | 0 .../04-technical}/zksnarks-and-circuits/README.md | 0 .../transaction-verifier-circuit.md | 0 docs/{new-docs => zeropool}/README.md | 0 docs/{new-docs => zeropool}/diagrams/.gitignore | 0 docs/{new-docs => zeropool}/diagrams/Makefile | 0 .../diagrams/account-spent-offset.png | Bin .../diagrams/account-spent-offset/main.tex | 0 .../diagrams/merkle-tree-illustration.png | Bin .../diagrams/merkle-tree-illustration/main.tex | 0 .../diagrams/transaction-acting-on-a-list.png | Bin .../diagrams/transaction-acting-on-a-list/main.tex | 0 .../diagrams/zeropool-keys.png | Bin .../diagrams/zeropool-keys/main.tex | 0 56 files changed, 5 insertions(+), 10 deletions(-) delete mode 100644 docs/new-docs/04-zero-knowledge.md rename docs/{new-docs => zeropool}/01-background.md (100%) rename docs/{new-docs => zeropool}/02-overview.md (100%) rename docs/{new-docs => zeropool}/03-transaction.md (100%) rename docs/{implementation => zeropool/04-technical}/account-and-notes/README.md (100%) rename docs/{implementation => zeropool/04-technical}/account-and-notes/accounts.md (100%) rename docs/{implementation => zeropool/04-technical}/account-and-notes/notes.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/README.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/evm/README.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/evm/operator-manager-contract/README.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/evm/the-pool-contract/README.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/evm/token-contract.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/evm/verifier-contracts.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/evm/voucher-token-contract.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/substrate/README.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/substrate/alt_bn128.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/substrate/num.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/substrate/operator.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/substrate/pallet.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/substrate/tx_decoder.md (100%) rename docs/{implementation => zeropool/04-technical}/contracts-and-circuits/substrate/verifier.md (100%) rename docs/{implementation => zeropool/04-technical}/elliptic-curve-cryptography.md (100%) rename docs/{implementation => zeropool/04-technical}/high-level-overview.md (100%) rename docs/{implementation => zeropool/04-technical}/relayer-node/README.md (100%) rename docs/{implementation => zeropool/04-technical}/relayer-node/optimistic-state.md (98%) rename docs/{implementation => zeropool/04-technical}/relayer-node/relayer-operations.md (100%) rename docs/{implementation => zeropool/04-technical}/relayer-node/rest-api.md (100%) rename docs/{implementation => zeropool/04-technical}/transaction-overview/README.md (100%) rename docs/{implementation => zeropool/04-technical}/transaction-overview/common-structure.md (100%) rename docs/{implementation => zeropool/04-technical}/transaction-overview/signing-a-transaction.md (100%) rename docs/{implementation => zeropool/04-technical}/transaction-overview/the-nullifiers.md (100%) rename docs/{implementation => zeropool/04-technical}/transaction-overview/the-transaction-lifecycle.md (100%) rename docs/{implementation => zeropool/04-technical}/transaction-overview/transaction-types.md (100%) rename docs/{implementation => zeropool/04-technical}/transaction-overview/untitled-1/README.md (97%) rename docs/{implementation => zeropool/04-technical}/transaction-overview/untitled-1/memo-block-encryption.md (100%) rename docs/{implementation => zeropool/04-technical}/untitled/README.md (96%) rename docs/{implementation => zeropool/04-technical}/untitled/the-poseidon-hash.md (100%) rename docs/{implementation => zeropool/04-technical}/zeropool-keys/README.md (97%) rename docs/{implementation => zeropool/04-technical}/zeropool-keys/address-derivation.md (100%) rename docs/{implementation => zeropool/04-technical}/zeropool-keys/ephemeral-keys.md (100%) rename docs/{implementation => zeropool/04-technical}/zksnarks-and-circuits/README.md (100%) rename docs/{implementation => zeropool/04-technical}/zksnarks-and-circuits/transaction-verifier-circuit.md (100%) rename docs/{new-docs => zeropool}/README.md (100%) rename docs/{new-docs => zeropool}/diagrams/.gitignore (100%) rename docs/{new-docs => zeropool}/diagrams/Makefile (100%) rename docs/{new-docs => zeropool}/diagrams/account-spent-offset.png (100%) rename docs/{new-docs => zeropool}/diagrams/account-spent-offset/main.tex (100%) rename docs/{new-docs => zeropool}/diagrams/merkle-tree-illustration.png (100%) rename docs/{new-docs => zeropool}/diagrams/merkle-tree-illustration/main.tex (100%) rename docs/{new-docs => zeropool}/diagrams/transaction-acting-on-a-list.png (100%) rename docs/{new-docs => zeropool}/diagrams/transaction-acting-on-a-list/main.tex (100%) rename docs/{new-docs => zeropool}/diagrams/zeropool-keys.png (100%) rename docs/{new-docs => zeropool}/diagrams/zeropool-keys/main.tex (100%) diff --git a/docs/intro.md b/docs/intro.md index 870bc92..bfba84d 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -1,4 +1,3 @@ -# ZeroPool +# Welcome ZeroPool is multi-blockchain privacy engine, providing anonymous account based transactions for blockchains. - diff --git a/docs/new-docs/04-zero-knowledge.md b/docs/new-docs/04-zero-knowledge.md deleted file mode 100644 index 355d14c..0000000 --- a/docs/new-docs/04-zero-knowledge.md +++ /dev/null @@ -1,4 +0,0 @@ -# Technical Description - -TODO: explain how the transaction from the previous section is implemented in -ZK-manner. diff --git a/docs/new-docs/01-background.md b/docs/zeropool/01-background.md similarity index 100% rename from docs/new-docs/01-background.md rename to docs/zeropool/01-background.md diff --git a/docs/new-docs/02-overview.md b/docs/zeropool/02-overview.md similarity index 100% rename from docs/new-docs/02-overview.md rename to docs/zeropool/02-overview.md diff --git a/docs/new-docs/03-transaction.md b/docs/zeropool/03-transaction.md similarity index 100% rename from docs/new-docs/03-transaction.md rename to docs/zeropool/03-transaction.md diff --git a/docs/implementation/account-and-notes/README.md b/docs/zeropool/04-technical/account-and-notes/README.md similarity index 100% rename from docs/implementation/account-and-notes/README.md rename to docs/zeropool/04-technical/account-and-notes/README.md diff --git a/docs/implementation/account-and-notes/accounts.md b/docs/zeropool/04-technical/account-and-notes/accounts.md similarity index 100% rename from docs/implementation/account-and-notes/accounts.md rename to docs/zeropool/04-technical/account-and-notes/accounts.md diff --git a/docs/implementation/account-and-notes/notes.md b/docs/zeropool/04-technical/account-and-notes/notes.md similarity index 100% rename from docs/implementation/account-and-notes/notes.md rename to docs/zeropool/04-technical/account-and-notes/notes.md diff --git a/docs/implementation/contracts-and-circuits/README.md b/docs/zeropool/04-technical/contracts-and-circuits/README.md similarity index 100% rename from docs/implementation/contracts-and-circuits/README.md rename to docs/zeropool/04-technical/contracts-and-circuits/README.md diff --git a/docs/implementation/contracts-and-circuits/evm/README.md b/docs/zeropool/04-technical/contracts-and-circuits/evm/README.md similarity index 100% rename from docs/implementation/contracts-and-circuits/evm/README.md rename to docs/zeropool/04-technical/contracts-and-circuits/evm/README.md diff --git a/docs/implementation/contracts-and-circuits/evm/operator-manager-contract/README.md b/docs/zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/README.md similarity index 100% rename from docs/implementation/contracts-and-circuits/evm/operator-manager-contract/README.md rename to docs/zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/README.md diff --git a/docs/implementation/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md b/docs/zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md similarity index 100% rename from docs/implementation/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md rename to docs/zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md diff --git a/docs/implementation/contracts-and-circuits/evm/the-pool-contract/README.md b/docs/zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/README.md similarity index 100% rename from docs/implementation/contracts-and-circuits/evm/the-pool-contract/README.md rename to docs/zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/README.md diff --git a/docs/implementation/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md b/docs/zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md similarity index 100% rename from docs/implementation/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md rename to docs/zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md diff --git a/docs/implementation/contracts-and-circuits/evm/token-contract.md b/docs/zeropool/04-technical/contracts-and-circuits/evm/token-contract.md similarity index 100% rename from docs/implementation/contracts-and-circuits/evm/token-contract.md rename to docs/zeropool/04-technical/contracts-and-circuits/evm/token-contract.md diff --git a/docs/implementation/contracts-and-circuits/evm/verifier-contracts.md b/docs/zeropool/04-technical/contracts-and-circuits/evm/verifier-contracts.md similarity index 100% rename from docs/implementation/contracts-and-circuits/evm/verifier-contracts.md rename to docs/zeropool/04-technical/contracts-and-circuits/evm/verifier-contracts.md diff --git a/docs/implementation/contracts-and-circuits/evm/voucher-token-contract.md b/docs/zeropool/04-technical/contracts-and-circuits/evm/voucher-token-contract.md similarity index 100% rename from docs/implementation/contracts-and-circuits/evm/voucher-token-contract.md rename to docs/zeropool/04-technical/contracts-and-circuits/evm/voucher-token-contract.md diff --git a/docs/implementation/contracts-and-circuits/substrate/README.md b/docs/zeropool/04-technical/contracts-and-circuits/substrate/README.md similarity index 100% rename from docs/implementation/contracts-and-circuits/substrate/README.md rename to docs/zeropool/04-technical/contracts-and-circuits/substrate/README.md diff --git a/docs/implementation/contracts-and-circuits/substrate/alt_bn128.md b/docs/zeropool/04-technical/contracts-and-circuits/substrate/alt_bn128.md similarity index 100% rename from docs/implementation/contracts-and-circuits/substrate/alt_bn128.md rename to docs/zeropool/04-technical/contracts-and-circuits/substrate/alt_bn128.md diff --git a/docs/implementation/contracts-and-circuits/substrate/num.md b/docs/zeropool/04-technical/contracts-and-circuits/substrate/num.md similarity index 100% rename from docs/implementation/contracts-and-circuits/substrate/num.md rename to docs/zeropool/04-technical/contracts-and-circuits/substrate/num.md diff --git a/docs/implementation/contracts-and-circuits/substrate/operator.md b/docs/zeropool/04-technical/contracts-and-circuits/substrate/operator.md similarity index 100% rename from docs/implementation/contracts-and-circuits/substrate/operator.md rename to docs/zeropool/04-technical/contracts-and-circuits/substrate/operator.md diff --git a/docs/implementation/contracts-and-circuits/substrate/pallet.md b/docs/zeropool/04-technical/contracts-and-circuits/substrate/pallet.md similarity index 100% rename from docs/implementation/contracts-and-circuits/substrate/pallet.md rename to docs/zeropool/04-technical/contracts-and-circuits/substrate/pallet.md diff --git a/docs/implementation/contracts-and-circuits/substrate/tx_decoder.md b/docs/zeropool/04-technical/contracts-and-circuits/substrate/tx_decoder.md similarity index 100% rename from docs/implementation/contracts-and-circuits/substrate/tx_decoder.md rename to docs/zeropool/04-technical/contracts-and-circuits/substrate/tx_decoder.md diff --git a/docs/implementation/contracts-and-circuits/substrate/verifier.md b/docs/zeropool/04-technical/contracts-and-circuits/substrate/verifier.md similarity index 100% rename from docs/implementation/contracts-and-circuits/substrate/verifier.md rename to docs/zeropool/04-technical/contracts-and-circuits/substrate/verifier.md diff --git a/docs/implementation/elliptic-curve-cryptography.md b/docs/zeropool/04-technical/elliptic-curve-cryptography.md similarity index 100% rename from docs/implementation/elliptic-curve-cryptography.md rename to docs/zeropool/04-technical/elliptic-curve-cryptography.md diff --git a/docs/implementation/high-level-overview.md b/docs/zeropool/04-technical/high-level-overview.md similarity index 100% rename from docs/implementation/high-level-overview.md rename to docs/zeropool/04-technical/high-level-overview.md diff --git a/docs/implementation/relayer-node/README.md b/docs/zeropool/04-technical/relayer-node/README.md similarity index 100% rename from docs/implementation/relayer-node/README.md rename to docs/zeropool/04-technical/relayer-node/README.md diff --git a/docs/implementation/relayer-node/optimistic-state.md b/docs/zeropool/04-technical/relayer-node/optimistic-state.md similarity index 98% rename from docs/implementation/relayer-node/optimistic-state.md rename to docs/zeropool/04-technical/relayer-node/optimistic-state.md index c3ec754..1a763d3 100644 --- a/docs/implementation/relayer-node/optimistic-state.md +++ b/docs/zeropool/04-technical/relayer-node/optimistic-state.md @@ -39,4 +39,4 @@ It is essential that whatever happens with the client application or the relayer * If ok, the updates corresponding status in the Tx Db, otherwise it launches rollback mode and marks all the later transactions ( already processed by the relayer ) as failed * The client eventually loads the updated transaction status. If the transaction was successful, then the balance is updated, otherwise the transaction is shown as failed. -![](<../../../static/img/optimistic state.png>) +![](<../../../../static/img/optimistic state.png>) diff --git a/docs/implementation/relayer-node/relayer-operations.md b/docs/zeropool/04-technical/relayer-node/relayer-operations.md similarity index 100% rename from docs/implementation/relayer-node/relayer-operations.md rename to docs/zeropool/04-technical/relayer-node/relayer-operations.md diff --git a/docs/implementation/relayer-node/rest-api.md b/docs/zeropool/04-technical/relayer-node/rest-api.md similarity index 100% rename from docs/implementation/relayer-node/rest-api.md rename to docs/zeropool/04-technical/relayer-node/rest-api.md diff --git a/docs/implementation/transaction-overview/README.md b/docs/zeropool/04-technical/transaction-overview/README.md similarity index 100% rename from docs/implementation/transaction-overview/README.md rename to docs/zeropool/04-technical/transaction-overview/README.md diff --git a/docs/implementation/transaction-overview/common-structure.md b/docs/zeropool/04-technical/transaction-overview/common-structure.md similarity index 100% rename from docs/implementation/transaction-overview/common-structure.md rename to docs/zeropool/04-technical/transaction-overview/common-structure.md diff --git a/docs/implementation/transaction-overview/signing-a-transaction.md b/docs/zeropool/04-technical/transaction-overview/signing-a-transaction.md similarity index 100% rename from docs/implementation/transaction-overview/signing-a-transaction.md rename to docs/zeropool/04-technical/transaction-overview/signing-a-transaction.md diff --git a/docs/implementation/transaction-overview/the-nullifiers.md b/docs/zeropool/04-technical/transaction-overview/the-nullifiers.md similarity index 100% rename from docs/implementation/transaction-overview/the-nullifiers.md rename to docs/zeropool/04-technical/transaction-overview/the-nullifiers.md diff --git a/docs/implementation/transaction-overview/the-transaction-lifecycle.md b/docs/zeropool/04-technical/transaction-overview/the-transaction-lifecycle.md similarity index 100% rename from docs/implementation/transaction-overview/the-transaction-lifecycle.md rename to docs/zeropool/04-technical/transaction-overview/the-transaction-lifecycle.md diff --git a/docs/implementation/transaction-overview/transaction-types.md b/docs/zeropool/04-technical/transaction-overview/transaction-types.md similarity index 100% rename from docs/implementation/transaction-overview/transaction-types.md rename to docs/zeropool/04-technical/transaction-overview/transaction-types.md diff --git a/docs/implementation/transaction-overview/untitled-1/README.md b/docs/zeropool/04-technical/transaction-overview/untitled-1/README.md similarity index 97% rename from docs/implementation/transaction-overview/untitled-1/README.md rename to docs/zeropool/04-technical/transaction-overview/untitled-1/README.md index 74924b2..847ef0b 100644 --- a/docs/implementation/transaction-overview/untitled-1/README.md +++ b/docs/zeropool/04-technical/transaction-overview/untitled-1/README.md @@ -12,7 +12,7 @@ The memo block contains detailed transaction data such as output notes, accounts The memo block consists of the fields below. There are two optional fields in the memo block, dependent on transaction type: `native amount` and `receiver`. These values are only included in the withdrawal transaction's memo block. -![The memo block structure](../../../../static/img/memo\_new\_eng.png) +![The memo block structure](../../../../../static/img/memo\_new\_eng.png) | Field name | Size (bytes) | Description | | ----------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/docs/implementation/transaction-overview/untitled-1/memo-block-encryption.md b/docs/zeropool/04-technical/transaction-overview/untitled-1/memo-block-encryption.md similarity index 100% rename from docs/implementation/transaction-overview/untitled-1/memo-block-encryption.md rename to docs/zeropool/04-technical/transaction-overview/untitled-1/memo-block-encryption.md diff --git a/docs/implementation/untitled/README.md b/docs/zeropool/04-technical/untitled/README.md similarity index 96% rename from docs/implementation/untitled/README.md rename to docs/zeropool/04-technical/untitled/README.md index d4810dc..ab1e7b1 100644 --- a/docs/implementation/untitled/README.md +++ b/docs/zeropool/04-technical/untitled/README.md @@ -4,7 +4,7 @@ description: The main data structure # ZeroPool Merkle Tree -![Full Merkle tree](../../../static/img/Merkle_200dpi.png) +![Full Merkle tree](../../../../static/img/Merkle_200dpi.png) The merkle tree in the ZeroPool solution is used to link and store encrypted transaction data (accounts and notes) within a strict sequence. The accounts and note hashes are placed in the tree leaves. diff --git a/docs/implementation/untitled/the-poseidon-hash.md b/docs/zeropool/04-technical/untitled/the-poseidon-hash.md similarity index 100% rename from docs/implementation/untitled/the-poseidon-hash.md rename to docs/zeropool/04-technical/untitled/the-poseidon-hash.md diff --git a/docs/implementation/zeropool-keys/README.md b/docs/zeropool/04-technical/zeropool-keys/README.md similarity index 97% rename from docs/implementation/zeropool-keys/README.md rename to docs/zeropool/04-technical/zeropool-keys/README.md index d397082..288986f 100644 --- a/docs/implementation/zeropool-keys/README.md +++ b/docs/zeropool/04-technical/zeropool-keys/README.md @@ -6,7 +6,7 @@ description: Different key types ZeroPool is based on complex cryptography. There are several keys needed for private transactions. The relationship between these keys is presented in the scheme below. -![](../../../static/img/keys.png) +![](../../../../static/img/keys.png) * **Spending key (**$$\sigma$$**)** is the top secret key. It is used to derive other keys and to sign transactions. At a high level it is just a random 256-bit number which should be stored securely on the client side. The simplest way to get a spending key is to produce a random number. But in a production client software implementation more complex approaches should be used (e.g. [hierarchical deterministic wallets](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki)). Concrete approaches for spending key derivation by a client are not discussed here. * **Transaction verifier key (**$$A$$**)** is used for transaction signature verification. It's derived from the spending key and multiplied by the generator point in the JubJub elliptic curve field: $$A = \sigma G$$ diff --git a/docs/implementation/zeropool-keys/address-derivation.md b/docs/zeropool/04-technical/zeropool-keys/address-derivation.md similarity index 100% rename from docs/implementation/zeropool-keys/address-derivation.md rename to docs/zeropool/04-technical/zeropool-keys/address-derivation.md diff --git a/docs/implementation/zeropool-keys/ephemeral-keys.md b/docs/zeropool/04-technical/zeropool-keys/ephemeral-keys.md similarity index 100% rename from docs/implementation/zeropool-keys/ephemeral-keys.md rename to docs/zeropool/04-technical/zeropool-keys/ephemeral-keys.md diff --git a/docs/implementation/zksnarks-and-circuits/README.md b/docs/zeropool/04-technical/zksnarks-and-circuits/README.md similarity index 100% rename from docs/implementation/zksnarks-and-circuits/README.md rename to docs/zeropool/04-technical/zksnarks-and-circuits/README.md diff --git a/docs/implementation/zksnarks-and-circuits/transaction-verifier-circuit.md b/docs/zeropool/04-technical/zksnarks-and-circuits/transaction-verifier-circuit.md similarity index 100% rename from docs/implementation/zksnarks-and-circuits/transaction-verifier-circuit.md rename to docs/zeropool/04-technical/zksnarks-and-circuits/transaction-verifier-circuit.md diff --git a/docs/new-docs/README.md b/docs/zeropool/README.md similarity index 100% rename from docs/new-docs/README.md rename to docs/zeropool/README.md diff --git a/docs/new-docs/diagrams/.gitignore b/docs/zeropool/diagrams/.gitignore similarity index 100% rename from docs/new-docs/diagrams/.gitignore rename to docs/zeropool/diagrams/.gitignore diff --git a/docs/new-docs/diagrams/Makefile b/docs/zeropool/diagrams/Makefile similarity index 100% rename from docs/new-docs/diagrams/Makefile rename to docs/zeropool/diagrams/Makefile diff --git a/docs/new-docs/diagrams/account-spent-offset.png b/docs/zeropool/diagrams/account-spent-offset.png similarity index 100% rename from docs/new-docs/diagrams/account-spent-offset.png rename to docs/zeropool/diagrams/account-spent-offset.png diff --git a/docs/new-docs/diagrams/account-spent-offset/main.tex b/docs/zeropool/diagrams/account-spent-offset/main.tex similarity index 100% rename from docs/new-docs/diagrams/account-spent-offset/main.tex rename to docs/zeropool/diagrams/account-spent-offset/main.tex diff --git a/docs/new-docs/diagrams/merkle-tree-illustration.png b/docs/zeropool/diagrams/merkle-tree-illustration.png similarity index 100% rename from docs/new-docs/diagrams/merkle-tree-illustration.png rename to docs/zeropool/diagrams/merkle-tree-illustration.png diff --git a/docs/new-docs/diagrams/merkle-tree-illustration/main.tex b/docs/zeropool/diagrams/merkle-tree-illustration/main.tex similarity index 100% rename from docs/new-docs/diagrams/merkle-tree-illustration/main.tex rename to docs/zeropool/diagrams/merkle-tree-illustration/main.tex diff --git a/docs/new-docs/diagrams/transaction-acting-on-a-list.png b/docs/zeropool/diagrams/transaction-acting-on-a-list.png similarity index 100% rename from docs/new-docs/diagrams/transaction-acting-on-a-list.png rename to docs/zeropool/diagrams/transaction-acting-on-a-list.png diff --git a/docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex b/docs/zeropool/diagrams/transaction-acting-on-a-list/main.tex similarity index 100% rename from docs/new-docs/diagrams/transaction-acting-on-a-list/main.tex rename to docs/zeropool/diagrams/transaction-acting-on-a-list/main.tex diff --git a/docs/new-docs/diagrams/zeropool-keys.png b/docs/zeropool/diagrams/zeropool-keys.png similarity index 100% rename from docs/new-docs/diagrams/zeropool-keys.png rename to docs/zeropool/diagrams/zeropool-keys.png diff --git a/docs/new-docs/diagrams/zeropool-keys/main.tex b/docs/zeropool/diagrams/zeropool-keys/main.tex similarity index 100% rename from docs/new-docs/diagrams/zeropool-keys/main.tex rename to docs/zeropool/diagrams/zeropool-keys/main.tex From 5c52325e7bcd108751a54e600e120a3be2bf23fb Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Tue, 6 Feb 2024 15:07:06 +0100 Subject: [PATCH 29/30] order sections, add global intro with links to the subsections --- docs/00-intro.md | 10 ++++++++++ docs/{zeropool => 01-zeropool}/01-background.md | 0 docs/{zeropool => 01-zeropool}/02-overview.md | 0 docs/{zeropool => 01-zeropool}/03-transaction.md | 0 docs/01-zeropool/04-technical/README.md | 1 + .../04-technical/account-and-notes/README.md | 0 .../04-technical/account-and-notes/accounts.md | 0 .../04-technical/account-and-notes/notes.md | 0 .../04-technical/contracts-and-circuits/README.md | 0 .../contracts-and-circuits/evm/README.md | 0 .../evm/operator-manager-contract/README.md | 0 .../mutable-operator-manager.md | 0 .../evm/the-pool-contract/README.md | 0 .../evm/the-pool-contract/transaction-calldata.md | 0 .../contracts-and-circuits/evm/token-contract.md | 0 .../evm/verifier-contracts.md | 0 .../evm/voucher-token-contract.md | 0 .../contracts-and-circuits/substrate/README.md | 0 .../contracts-and-circuits/substrate/alt_bn128.md | 0 .../contracts-and-circuits/substrate/num.md | 0 .../contracts-and-circuits/substrate/operator.md | 0 .../contracts-and-circuits/substrate/pallet.md | 0 .../contracts-and-circuits/substrate/tx_decoder.md | 0 .../contracts-and-circuits/substrate/verifier.md | 0 .../04-technical/elliptic-curve-cryptography.md | 0 .../04-technical/high-level-overview.md | 0 .../04-technical/relayer-node/README.md | 0 .../04-technical/relayer-node/optimistic-state.md | 0 .../04-technical/relayer-node/relayer-operations.md | 0 .../04-technical/relayer-node/rest-api.md | 0 .../04-technical/transaction-overview/README.md | 0 .../transaction-overview/common-structure.md | 0 .../transaction-overview/signing-a-transaction.md | 0 .../transaction-overview/the-nullifiers.md | 0 .../the-transaction-lifecycle.md | 0 .../transaction-overview/transaction-types.md | 0 .../transaction-overview/untitled-1/README.md | 0 .../untitled-1/memo-block-encryption.md | 0 .../04-technical/untitled/README.md | 0 .../04-technical/untitled/the-poseidon-hash.md | 0 .../04-technical/zeropool-keys/README.md | 0 .../zeropool-keys/address-derivation.md | 0 .../04-technical/zeropool-keys/ephemeral-keys.md | 0 .../04-technical/zksnarks-and-circuits/README.md | 0 .../transaction-verifier-circuit.md | 0 docs/{zeropool => 01-zeropool}/README.md | 2 +- docs/{zeropool => 01-zeropool}/diagrams/.gitignore | 0 docs/{zeropool => 01-zeropool}/diagrams/Makefile | 0 .../diagrams/account-spent-offset.png | Bin .../diagrams/account-spent-offset/main.tex | 0 .../diagrams/merkle-tree-illustration.png | Bin .../diagrams/merkle-tree-illustration/main.tex | 0 .../diagrams/transaction-acting-on-a-list.png | Bin .../diagrams/transaction-acting-on-a-list/main.tex | 0 .../diagrams/zeropool-keys.png | Bin .../diagrams/zeropool-keys/main.tex | 0 .../01-background.md | 0 docs/{fawkes-crypto => 02-fawkes-crypto}/02-api.md | 0 .../03-examples.md | 0 docs/{fawkes-crypto => 02-fawkes-crypto}/README.md | 0 .../circuit.drawio | 0 .../{fawkes-crypto => 02-fawkes-crypto}/circuit.svg | 0 docs/intro.md | 3 --- 63 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 docs/00-intro.md rename docs/{zeropool => 01-zeropool}/01-background.md (100%) rename docs/{zeropool => 01-zeropool}/02-overview.md (100%) rename docs/{zeropool => 01-zeropool}/03-transaction.md (100%) create mode 100644 docs/01-zeropool/04-technical/README.md rename docs/{zeropool => 01-zeropool}/04-technical/account-and-notes/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/account-and-notes/accounts.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/account-and-notes/notes.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/evm/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/evm/operator-manager-contract/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/evm/the-pool-contract/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/evm/token-contract.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/evm/verifier-contracts.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/evm/voucher-token-contract.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/substrate/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/substrate/alt_bn128.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/substrate/num.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/substrate/operator.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/substrate/pallet.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/substrate/tx_decoder.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/contracts-and-circuits/substrate/verifier.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/elliptic-curve-cryptography.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/high-level-overview.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/relayer-node/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/relayer-node/optimistic-state.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/relayer-node/relayer-operations.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/relayer-node/rest-api.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/transaction-overview/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/transaction-overview/common-structure.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/transaction-overview/signing-a-transaction.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/transaction-overview/the-nullifiers.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/transaction-overview/the-transaction-lifecycle.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/transaction-overview/transaction-types.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/transaction-overview/untitled-1/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/transaction-overview/untitled-1/memo-block-encryption.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/untitled/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/untitled/the-poseidon-hash.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/zeropool-keys/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/zeropool-keys/address-derivation.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/zeropool-keys/ephemeral-keys.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/zksnarks-and-circuits/README.md (100%) rename docs/{zeropool => 01-zeropool}/04-technical/zksnarks-and-circuits/transaction-verifier-circuit.md (100%) rename docs/{zeropool => 01-zeropool}/README.md (98%) rename docs/{zeropool => 01-zeropool}/diagrams/.gitignore (100%) rename docs/{zeropool => 01-zeropool}/diagrams/Makefile (100%) rename docs/{zeropool => 01-zeropool}/diagrams/account-spent-offset.png (100%) rename docs/{zeropool => 01-zeropool}/diagrams/account-spent-offset/main.tex (100%) rename docs/{zeropool => 01-zeropool}/diagrams/merkle-tree-illustration.png (100%) rename docs/{zeropool => 01-zeropool}/diagrams/merkle-tree-illustration/main.tex (100%) rename docs/{zeropool => 01-zeropool}/diagrams/transaction-acting-on-a-list.png (100%) rename docs/{zeropool => 01-zeropool}/diagrams/transaction-acting-on-a-list/main.tex (100%) rename docs/{zeropool => 01-zeropool}/diagrams/zeropool-keys.png (100%) rename docs/{zeropool => 01-zeropool}/diagrams/zeropool-keys/main.tex (100%) rename docs/{fawkes-crypto => 02-fawkes-crypto}/01-background.md (100%) rename docs/{fawkes-crypto => 02-fawkes-crypto}/02-api.md (100%) rename docs/{fawkes-crypto => 02-fawkes-crypto}/03-examples.md (100%) rename docs/{fawkes-crypto => 02-fawkes-crypto}/README.md (100%) rename docs/{fawkes-crypto => 02-fawkes-crypto}/circuit.drawio (100%) rename docs/{fawkes-crypto => 02-fawkes-crypto}/circuit.svg (100%) delete mode 100644 docs/intro.md diff --git a/docs/00-intro.md b/docs/00-intro.md new file mode 100644 index 0000000..8a81b94 --- /dev/null +++ b/docs/00-intro.md @@ -0,0 +1,10 @@ +# Welcome + +ZeroPool is multi-blockchain privacy engine, providing anonymous account based transactions for blockchains. + +Contents: + +- [ZeroPool](./zeropool/) section describes the smart-contract itself. + It starts from high-level, beginner-friendly overview and then proceeds into the technical details. + +- [Fawkes-crypto](./fawkes-crypto/) section describes Rust EDSL we implemented for describing zkSNARK circuits. diff --git a/docs/zeropool/01-background.md b/docs/01-zeropool/01-background.md similarity index 100% rename from docs/zeropool/01-background.md rename to docs/01-zeropool/01-background.md diff --git a/docs/zeropool/02-overview.md b/docs/01-zeropool/02-overview.md similarity index 100% rename from docs/zeropool/02-overview.md rename to docs/01-zeropool/02-overview.md diff --git a/docs/zeropool/03-transaction.md b/docs/01-zeropool/03-transaction.md similarity index 100% rename from docs/zeropool/03-transaction.md rename to docs/01-zeropool/03-transaction.md diff --git a/docs/01-zeropool/04-technical/README.md b/docs/01-zeropool/04-technical/README.md new file mode 100644 index 0000000..b920487 --- /dev/null +++ b/docs/01-zeropool/04-technical/README.md @@ -0,0 +1 @@ +# Technical Description diff --git a/docs/zeropool/04-technical/account-and-notes/README.md b/docs/01-zeropool/04-technical/account-and-notes/README.md similarity index 100% rename from docs/zeropool/04-technical/account-and-notes/README.md rename to docs/01-zeropool/04-technical/account-and-notes/README.md diff --git a/docs/zeropool/04-technical/account-and-notes/accounts.md b/docs/01-zeropool/04-technical/account-and-notes/accounts.md similarity index 100% rename from docs/zeropool/04-technical/account-and-notes/accounts.md rename to docs/01-zeropool/04-technical/account-and-notes/accounts.md diff --git a/docs/zeropool/04-technical/account-and-notes/notes.md b/docs/01-zeropool/04-technical/account-and-notes/notes.md similarity index 100% rename from docs/zeropool/04-technical/account-and-notes/notes.md rename to docs/01-zeropool/04-technical/account-and-notes/notes.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/README.md b/docs/01-zeropool/04-technical/contracts-and-circuits/README.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/README.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/README.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/evm/README.md b/docs/01-zeropool/04-technical/contracts-and-circuits/evm/README.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/evm/README.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/evm/README.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/README.md b/docs/01-zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/README.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/README.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/README.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md b/docs/01-zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/evm/operator-manager-contract/mutable-operator-manager.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/README.md b/docs/01-zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/README.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/README.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/README.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md b/docs/01-zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/evm/the-pool-contract/transaction-calldata.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/evm/token-contract.md b/docs/01-zeropool/04-technical/contracts-and-circuits/evm/token-contract.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/evm/token-contract.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/evm/token-contract.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/evm/verifier-contracts.md b/docs/01-zeropool/04-technical/contracts-and-circuits/evm/verifier-contracts.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/evm/verifier-contracts.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/evm/verifier-contracts.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/evm/voucher-token-contract.md b/docs/01-zeropool/04-technical/contracts-and-circuits/evm/voucher-token-contract.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/evm/voucher-token-contract.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/evm/voucher-token-contract.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/substrate/README.md b/docs/01-zeropool/04-technical/contracts-and-circuits/substrate/README.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/substrate/README.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/substrate/README.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/substrate/alt_bn128.md b/docs/01-zeropool/04-technical/contracts-and-circuits/substrate/alt_bn128.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/substrate/alt_bn128.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/substrate/alt_bn128.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/substrate/num.md b/docs/01-zeropool/04-technical/contracts-and-circuits/substrate/num.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/substrate/num.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/substrate/num.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/substrate/operator.md b/docs/01-zeropool/04-technical/contracts-and-circuits/substrate/operator.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/substrate/operator.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/substrate/operator.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/substrate/pallet.md b/docs/01-zeropool/04-technical/contracts-and-circuits/substrate/pallet.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/substrate/pallet.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/substrate/pallet.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/substrate/tx_decoder.md b/docs/01-zeropool/04-technical/contracts-and-circuits/substrate/tx_decoder.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/substrate/tx_decoder.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/substrate/tx_decoder.md diff --git a/docs/zeropool/04-technical/contracts-and-circuits/substrate/verifier.md b/docs/01-zeropool/04-technical/contracts-and-circuits/substrate/verifier.md similarity index 100% rename from docs/zeropool/04-technical/contracts-and-circuits/substrate/verifier.md rename to docs/01-zeropool/04-technical/contracts-and-circuits/substrate/verifier.md diff --git a/docs/zeropool/04-technical/elliptic-curve-cryptography.md b/docs/01-zeropool/04-technical/elliptic-curve-cryptography.md similarity index 100% rename from docs/zeropool/04-technical/elliptic-curve-cryptography.md rename to docs/01-zeropool/04-technical/elliptic-curve-cryptography.md diff --git a/docs/zeropool/04-technical/high-level-overview.md b/docs/01-zeropool/04-technical/high-level-overview.md similarity index 100% rename from docs/zeropool/04-technical/high-level-overview.md rename to docs/01-zeropool/04-technical/high-level-overview.md diff --git a/docs/zeropool/04-technical/relayer-node/README.md b/docs/01-zeropool/04-technical/relayer-node/README.md similarity index 100% rename from docs/zeropool/04-technical/relayer-node/README.md rename to docs/01-zeropool/04-technical/relayer-node/README.md diff --git a/docs/zeropool/04-technical/relayer-node/optimistic-state.md b/docs/01-zeropool/04-technical/relayer-node/optimistic-state.md similarity index 100% rename from docs/zeropool/04-technical/relayer-node/optimistic-state.md rename to docs/01-zeropool/04-technical/relayer-node/optimistic-state.md diff --git a/docs/zeropool/04-technical/relayer-node/relayer-operations.md b/docs/01-zeropool/04-technical/relayer-node/relayer-operations.md similarity index 100% rename from docs/zeropool/04-technical/relayer-node/relayer-operations.md rename to docs/01-zeropool/04-technical/relayer-node/relayer-operations.md diff --git a/docs/zeropool/04-technical/relayer-node/rest-api.md b/docs/01-zeropool/04-technical/relayer-node/rest-api.md similarity index 100% rename from docs/zeropool/04-technical/relayer-node/rest-api.md rename to docs/01-zeropool/04-technical/relayer-node/rest-api.md diff --git a/docs/zeropool/04-technical/transaction-overview/README.md b/docs/01-zeropool/04-technical/transaction-overview/README.md similarity index 100% rename from docs/zeropool/04-technical/transaction-overview/README.md rename to docs/01-zeropool/04-technical/transaction-overview/README.md diff --git a/docs/zeropool/04-technical/transaction-overview/common-structure.md b/docs/01-zeropool/04-technical/transaction-overview/common-structure.md similarity index 100% rename from docs/zeropool/04-technical/transaction-overview/common-structure.md rename to docs/01-zeropool/04-technical/transaction-overview/common-structure.md diff --git a/docs/zeropool/04-technical/transaction-overview/signing-a-transaction.md b/docs/01-zeropool/04-technical/transaction-overview/signing-a-transaction.md similarity index 100% rename from docs/zeropool/04-technical/transaction-overview/signing-a-transaction.md rename to docs/01-zeropool/04-technical/transaction-overview/signing-a-transaction.md diff --git a/docs/zeropool/04-technical/transaction-overview/the-nullifiers.md b/docs/01-zeropool/04-technical/transaction-overview/the-nullifiers.md similarity index 100% rename from docs/zeropool/04-technical/transaction-overview/the-nullifiers.md rename to docs/01-zeropool/04-technical/transaction-overview/the-nullifiers.md diff --git a/docs/zeropool/04-technical/transaction-overview/the-transaction-lifecycle.md b/docs/01-zeropool/04-technical/transaction-overview/the-transaction-lifecycle.md similarity index 100% rename from docs/zeropool/04-technical/transaction-overview/the-transaction-lifecycle.md rename to docs/01-zeropool/04-technical/transaction-overview/the-transaction-lifecycle.md diff --git a/docs/zeropool/04-technical/transaction-overview/transaction-types.md b/docs/01-zeropool/04-technical/transaction-overview/transaction-types.md similarity index 100% rename from docs/zeropool/04-technical/transaction-overview/transaction-types.md rename to docs/01-zeropool/04-technical/transaction-overview/transaction-types.md diff --git a/docs/zeropool/04-technical/transaction-overview/untitled-1/README.md b/docs/01-zeropool/04-technical/transaction-overview/untitled-1/README.md similarity index 100% rename from docs/zeropool/04-technical/transaction-overview/untitled-1/README.md rename to docs/01-zeropool/04-technical/transaction-overview/untitled-1/README.md diff --git a/docs/zeropool/04-technical/transaction-overview/untitled-1/memo-block-encryption.md b/docs/01-zeropool/04-technical/transaction-overview/untitled-1/memo-block-encryption.md similarity index 100% rename from docs/zeropool/04-technical/transaction-overview/untitled-1/memo-block-encryption.md rename to docs/01-zeropool/04-technical/transaction-overview/untitled-1/memo-block-encryption.md diff --git a/docs/zeropool/04-technical/untitled/README.md b/docs/01-zeropool/04-technical/untitled/README.md similarity index 100% rename from docs/zeropool/04-technical/untitled/README.md rename to docs/01-zeropool/04-technical/untitled/README.md diff --git a/docs/zeropool/04-technical/untitled/the-poseidon-hash.md b/docs/01-zeropool/04-technical/untitled/the-poseidon-hash.md similarity index 100% rename from docs/zeropool/04-technical/untitled/the-poseidon-hash.md rename to docs/01-zeropool/04-technical/untitled/the-poseidon-hash.md diff --git a/docs/zeropool/04-technical/zeropool-keys/README.md b/docs/01-zeropool/04-technical/zeropool-keys/README.md similarity index 100% rename from docs/zeropool/04-technical/zeropool-keys/README.md rename to docs/01-zeropool/04-technical/zeropool-keys/README.md diff --git a/docs/zeropool/04-technical/zeropool-keys/address-derivation.md b/docs/01-zeropool/04-technical/zeropool-keys/address-derivation.md similarity index 100% rename from docs/zeropool/04-technical/zeropool-keys/address-derivation.md rename to docs/01-zeropool/04-technical/zeropool-keys/address-derivation.md diff --git a/docs/zeropool/04-technical/zeropool-keys/ephemeral-keys.md b/docs/01-zeropool/04-technical/zeropool-keys/ephemeral-keys.md similarity index 100% rename from docs/zeropool/04-technical/zeropool-keys/ephemeral-keys.md rename to docs/01-zeropool/04-technical/zeropool-keys/ephemeral-keys.md diff --git a/docs/zeropool/04-technical/zksnarks-and-circuits/README.md b/docs/01-zeropool/04-technical/zksnarks-and-circuits/README.md similarity index 100% rename from docs/zeropool/04-technical/zksnarks-and-circuits/README.md rename to docs/01-zeropool/04-technical/zksnarks-and-circuits/README.md diff --git a/docs/zeropool/04-technical/zksnarks-and-circuits/transaction-verifier-circuit.md b/docs/01-zeropool/04-technical/zksnarks-and-circuits/transaction-verifier-circuit.md similarity index 100% rename from docs/zeropool/04-technical/zksnarks-and-circuits/transaction-verifier-circuit.md rename to docs/01-zeropool/04-technical/zksnarks-and-circuits/transaction-verifier-circuit.md diff --git a/docs/zeropool/README.md b/docs/01-zeropool/README.md similarity index 98% rename from docs/zeropool/README.md rename to docs/01-zeropool/README.md index 9191d08..45e7676 100644 --- a/docs/zeropool/README.md +++ b/docs/01-zeropool/README.md @@ -1,4 +1,4 @@ -# ZeroPool +# ZeroPool Contract ZeroPool is a smart-contract that implements private token transactions on top of a public blockchain. One can deposit public tokens into their private diff --git a/docs/zeropool/diagrams/.gitignore b/docs/01-zeropool/diagrams/.gitignore similarity index 100% rename from docs/zeropool/diagrams/.gitignore rename to docs/01-zeropool/diagrams/.gitignore diff --git a/docs/zeropool/diagrams/Makefile b/docs/01-zeropool/diagrams/Makefile similarity index 100% rename from docs/zeropool/diagrams/Makefile rename to docs/01-zeropool/diagrams/Makefile diff --git a/docs/zeropool/diagrams/account-spent-offset.png b/docs/01-zeropool/diagrams/account-spent-offset.png similarity index 100% rename from docs/zeropool/diagrams/account-spent-offset.png rename to docs/01-zeropool/diagrams/account-spent-offset.png diff --git a/docs/zeropool/diagrams/account-spent-offset/main.tex b/docs/01-zeropool/diagrams/account-spent-offset/main.tex similarity index 100% rename from docs/zeropool/diagrams/account-spent-offset/main.tex rename to docs/01-zeropool/diagrams/account-spent-offset/main.tex diff --git a/docs/zeropool/diagrams/merkle-tree-illustration.png b/docs/01-zeropool/diagrams/merkle-tree-illustration.png similarity index 100% rename from docs/zeropool/diagrams/merkle-tree-illustration.png rename to docs/01-zeropool/diagrams/merkle-tree-illustration.png diff --git a/docs/zeropool/diagrams/merkle-tree-illustration/main.tex b/docs/01-zeropool/diagrams/merkle-tree-illustration/main.tex similarity index 100% rename from docs/zeropool/diagrams/merkle-tree-illustration/main.tex rename to docs/01-zeropool/diagrams/merkle-tree-illustration/main.tex diff --git a/docs/zeropool/diagrams/transaction-acting-on-a-list.png b/docs/01-zeropool/diagrams/transaction-acting-on-a-list.png similarity index 100% rename from docs/zeropool/diagrams/transaction-acting-on-a-list.png rename to docs/01-zeropool/diagrams/transaction-acting-on-a-list.png diff --git a/docs/zeropool/diagrams/transaction-acting-on-a-list/main.tex b/docs/01-zeropool/diagrams/transaction-acting-on-a-list/main.tex similarity index 100% rename from docs/zeropool/diagrams/transaction-acting-on-a-list/main.tex rename to docs/01-zeropool/diagrams/transaction-acting-on-a-list/main.tex diff --git a/docs/zeropool/diagrams/zeropool-keys.png b/docs/01-zeropool/diagrams/zeropool-keys.png similarity index 100% rename from docs/zeropool/diagrams/zeropool-keys.png rename to docs/01-zeropool/diagrams/zeropool-keys.png diff --git a/docs/zeropool/diagrams/zeropool-keys/main.tex b/docs/01-zeropool/diagrams/zeropool-keys/main.tex similarity index 100% rename from docs/zeropool/diagrams/zeropool-keys/main.tex rename to docs/01-zeropool/diagrams/zeropool-keys/main.tex diff --git a/docs/fawkes-crypto/01-background.md b/docs/02-fawkes-crypto/01-background.md similarity index 100% rename from docs/fawkes-crypto/01-background.md rename to docs/02-fawkes-crypto/01-background.md diff --git a/docs/fawkes-crypto/02-api.md b/docs/02-fawkes-crypto/02-api.md similarity index 100% rename from docs/fawkes-crypto/02-api.md rename to docs/02-fawkes-crypto/02-api.md diff --git a/docs/fawkes-crypto/03-examples.md b/docs/02-fawkes-crypto/03-examples.md similarity index 100% rename from docs/fawkes-crypto/03-examples.md rename to docs/02-fawkes-crypto/03-examples.md diff --git a/docs/fawkes-crypto/README.md b/docs/02-fawkes-crypto/README.md similarity index 100% rename from docs/fawkes-crypto/README.md rename to docs/02-fawkes-crypto/README.md diff --git a/docs/fawkes-crypto/circuit.drawio b/docs/02-fawkes-crypto/circuit.drawio similarity index 100% rename from docs/fawkes-crypto/circuit.drawio rename to docs/02-fawkes-crypto/circuit.drawio diff --git a/docs/fawkes-crypto/circuit.svg b/docs/02-fawkes-crypto/circuit.svg similarity index 100% rename from docs/fawkes-crypto/circuit.svg rename to docs/02-fawkes-crypto/circuit.svg diff --git a/docs/intro.md b/docs/intro.md deleted file mode 100644 index bfba84d..0000000 --- a/docs/intro.md +++ /dev/null @@ -1,3 +0,0 @@ -# Welcome - -ZeroPool is multi-blockchain privacy engine, providing anonymous account based transactions for blockchains. From bce7d60084731116da21fc8f687797808891dfc3 Mon Sep 17 00:00:00 2001 From: Ivan Oleynikov Date: Tue, 6 Feb 2024 15:16:02 +0100 Subject: [PATCH 30/30] Update transaction description --- docs/01-zeropool/03-transaction.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/docs/01-zeropool/03-transaction.md b/docs/01-zeropool/03-transaction.md index ba2dd9d..ff257ef 100644 --- a/docs/01-zeropool/03-transaction.md +++ b/docs/01-zeropool/03-transaction.md @@ -374,15 +374,6 @@ ZeroPool smart-contract maintans an internal state consisting of two components: - `nullifiers`, history all nullifiers that were published in the past, - `snark_vk`, verifying key for zkSNARK proofs (initialized when ZeroPool smart-contract is deployed and never modified). -TODO: make sure we describe all of these: - -```rust -self.pool_index = U256::from(self.pool_index).unchecked_add(U256::from(128u8)); -self.roots.insert(&self.pool_index, &tx.root_after); -self.nullifiers.insert(&tx.nullifier, &hash); -self.all_messages_hash = new_all_messages_hash; -``` - :::note Since the whole set of nullifiers can get quite large, @@ -426,4 +417,6 @@ A transaction peforms the following: save `new_root` as the root and append `nullifier` to the `nullifiers` in the new state. +