From efc13a3a6be0ac901d5ce58ea0ee645cdabc380a Mon Sep 17 00:00:00 2001 From: <> Date: Fri, 10 Jan 2025 13:20:28 +0000 Subject: [PATCH] Deployed 0c2e966 with MkDocs version: 1.6.1 --- .nojekyll | 0 404.html | 2338 ++++++ CNAME | 1 + about-grin/emission/index.html | 2626 +++++++ about-grin/privacy/index.html | 2714 +++++++ about-grin/proof-of-work/index.html | 2557 +++++++ about-grin/scalability/index.html | 2629 +++++++ about-grin/story/index.html | 2542 +++++++ about-grin/transactions/index.html | 2556 +++++++ assets/images/a-output.png | Bin 0 -> 4141 bytes assets/images/b-output.png | Bin 0 -> 3765 bytes assets/images/c-output.png | Bin 0 -> 3612 bytes assets/images/coinbase-output.png | Bin 0 -> 11281 bytes assets/images/d-output.png | Bin 0 -> 3582 bytes assets/images/dandelion.png | Bin 0 -> 44214 bytes assets/images/e-output.png | Bin 0 -> 3705 bytes assets/images/ecc1.png | Bin 0 -> 12629 bytes assets/images/ecc2.png | Bin 0 -> 10966 bytes assets/images/emission_chart.png | Bin 0 -> 64406 bytes assets/images/f-output.png | Bin 0 -> 3306 bytes assets/images/favicon.png | Bin 0 -> 1870 bytes assets/images/g-output.png | Bin 0 -> 1829 bytes assets/images/g1-mini-ASIC/G1-tut-1.png | Bin 0 -> 209416 bytes assets/images/g1-mini-ASIC/G1-tut-2.png | Bin 0 -> 146438 bytes assets/images/g1-mini-ASIC/G1-tut-3.png | Bin 0 -> 53793 bytes assets/images/g1-mini-ASIC/G1-tut-4.png | Bin 0 -> 153511 bytes assets/images/g1-mini-ASIC/G1-tut-5.png | Bin 0 -> 53833 bytes assets/images/g1-mini-ASIC/G1-tut-6.png | Bin 0 -> 61895 bytes assets/images/g1-mini-ASIC/G1-tut-7.png | Bin 0 -> 45859 bytes assets/images/grin-deposit-mockup.png | Bin 0 -> 4362 bytes assets/images/grin-logo.svg | 1 + assets/images/grin-mw-logo.svg | 1 + assets/images/grin-withdraw-mockup.png | Bin 0 -> 4644 bytes assets/images/h-output.png | Bin 0 -> 3160 bytes assets/images/receiver-msg.png | Bin 0 -> 158286 bytes assets/images/receiver-msg_prev.png | Bin 0 -> 151777 bytes assets/images/send-msg.png | Bin 0 -> 87839 bytes assets/images/tui.png | Bin 0 -> 67730 bytes assets/images/tx-flow.png | Bin 0 -> 366041 bytes assets/javascripts/bundle.88dd0f4e.min.js | 16 + assets/javascripts/bundle.88dd0f4e.min.js.map | 7 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.el.min.js | 1 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.he.min.js | 1 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.kn.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + assets/javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.te.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.6ce7567c.min.js | 42 + .../workers/search.6ce7567c.min.js.map | 7 + assets/stylesheets/main.6f8fc17f.min.css | 1 + assets/stylesheets/main.6f8fc17f.min.css.map | 1 + assets/stylesheets/palette.06af60db.min.css | 1 + .../stylesheets/palette.06af60db.min.css.map | 1 + getting-started/build/index.html | 2737 +++++++ getting-started/images/grinnode-live.png | Bin 0 -> 1872 bytes .../images/grinplusplus-receive.png | Bin 0 -> 12595 bytes .../images/grinplusplus-receive2.png | Bin 0 -> 21410 bytes getting-started/images/grinplusplus-send.png | Bin 0 -> 12527 bytes getting-started/images/grinplusplus-send2.png | Bin 0 -> 4410 bytes getting-started/images/grinplusplus-send3.png | Bin 0 -> 12260 bytes getting-started/images/grinplusplus-send4.png | Bin 0 -> 20884 bytes .../images/grinplusplus-slatepack.png | Bin 0 -> 49355 bytes getting-started/images/grinplusplus.png | Bin 0 -> 10116 bytes getting-started/images/ironbelly.png | Bin 0 -> 10792 bytes getting-started/images/niffler-receive.png | Bin 0 -> 4625 bytes getting-started/images/niffler-receive2.png | Bin 0 -> 19084 bytes getting-started/images/niffler-send.png | Bin 0 -> 4152 bytes getting-started/images/niffler-send2.png | Bin 0 -> 7332 bytes getting-started/images/niffler-send3.png | Bin 0 -> 19280 bytes getting-started/images/niffler-send4.png | Bin 0 -> 4255 bytes getting-started/images/niffler-slatepack.png | Bin 0 -> 26925 bytes getting-started/images/niffler.png | Bin 0 -> 145735 bytes .../quickstart/initialize/index.html | 2493 ++++++ getting-started/quickstart/install/index.html | 2576 +++++++ getting-started/quickstart/receive/index.html | 2495 ++++++ getting-started/quickstart/send/index.html | 2405 ++++++ getting-started/wallet-handbook/index.html | 3259 ++++++++ getting-started/wallets/index.html | 2623 +++++++ grin-rfcs/0000-template/index.html | 2529 +++++++ grin-rfcs/CODE_OF_CONDUCT/index.html | 2366 ++++++ grin-rfcs/LICENSE | 177 + grin-rfcs/assets/0001-state-diagram.puml | 44 + grin-rfcs/assets/0001-state-diagram.svg | 65 + .../assets/0004/0004-api-call-direct.puml | 16 + .../assets/0004/0004-api-call-direct.svg | 29 + grin-rfcs/assets/0004/0004-api-call.puml | 24 + grin-rfcs/assets/0004/0004-api-call.svg | 37 + grin-rfcs/assets/0004/0004-dh-init.puml | 16 + grin-rfcs/assets/0004/0004-dh-init.svg | 29 + .../assets/0004/0004-open-wallet-direct.puml | 19 + .../assets/0004/0004-open-wallet-direct.svg | 32 + grin-rfcs/assets/0004/0004-open-wallet.puml | 26 + grin-rfcs/assets/0004/0004-open-wallet.svg | 39 + grin-rfcs/index.html | 2540 +++++++ grin-rfcs/text/0001-rfc-process/index.html | 2940 ++++++++ .../text/0002-grin-governance/index.html | 3021 ++++++++ .../text/0003-security-process/index.html | 3140 ++++++++ .../0004-full-wallet-lifecycle/index.html | 2938 ++++++++ .../0005-variable-size-kernels/index.html | 2804 +++++++ grin-rfcs/text/0006-payment-proofs/index.html | 2829 +++++++ grin-rfcs/text/0007-node-api-v2/index.html | 4188 ++++++++++ .../0008-wallet-state-management/index.html | 2988 ++++++++ .../text/0009-enable-faster-sync/index.html | 2591 +++++++ .../index.html | 2669 +++++++ grin-rfcs/text/0011-security-team/index.html | 3009 ++++++++ grin-rfcs/text/0012-compact-slates/index.html | 3726 +++++++++ grin-rfcs/text/0013-nrd-kernels/index.html | 2885 +++++++ .../0014-general-fund-guidelines/index.html | 2744 +++++++ grin-rfcs/text/0015-slatepack/index.html | 3542 +++++++++ .../text/0016-simplify-governance/index.html | 3004 ++++++++ grin-rfcs/text/0017-fix-fees/index.html | 2732 +++++++ grin-rfcs/text/0018-fix-daa/index.html | 2702 +++++++ .../text/0019-deprecate-http-tx/index.html | 2731 +++++++ grin-rfcs/text/0020-pibd-messages/index.html | 2659 +++++++ grin-rfcs/text/0021-fix-prior-fees/index.html | 2492 ++++++ index.html | 2560 +++++++ search/search_index.json | 1 + sitemap.xml | 327 + sitemap.xml.gz | Bin 0 -> 1102 bytes stylesheets/extra.css | 31 + wiki/api/node-api/index.html | 2479 ++++++ wiki/api/stratum-rpc/index.html | 3679 +++++++++ wiki/api/wallet-api/index.html | 2394 ++++++ wiki/blocks/block-body/index.html | 2389 ++++++ wiki/blocks/block-header/index.html | 2685 +++++++ wiki/blocks/fees-and-weight/index.html | 2467 ++++++ wiki/chain-state/chain-sync/index.html | 2661 +++++++ wiki/chain-state/images/merkle_proof.png | Bin 0 -> 70567 bytes .../merkle-mountain-range/index.html | 2685 +++++++ .../merkle-structures(old)/index.html | 2641 +++++++ wiki/chain-state/state-and-pruning/index.html | 2547 +++++++ .../always-listening-wallet/index.html | 2452 ++++++ .../build-run-automation/index.html | 2512 ++++++ .../google-cloud-node/index.html | 2541 +++++++ .../how-to-mine-with-G1-mini-ASIC/index.html | 2473 ++++++ wiki/extra-documents/how-to-mine/index.html | 2668 +++++++ .../monetary-policy/index.html | 2546 +++++++ .../nomenclature-bs/index.html | 2644 +++++++ .../regarding-foundations/index.html | 2513 ++++++ .../story-of-distribution/index.html | 2369 ++++++ .../user-stories-use-cases/index.html | 2445 ++++++ .../index.html | 2895 +++++++ .../grin-for-bitcoiners/index.html | 2657 +++++++ .../mimblewimble/commitments/index.html | 2562 +++++++ wiki/introduction/mimblewimble/ecc/index.html | 2581 +++++++ .../mimblewimble/mimblewimble/index.html | 3144 ++++++++ .../coinbase-maturity-rule/index.html | 2513 ++++++ wiki/miscellaneous/cuckoo-cycle/index.html | 2802 +++++++ wiki/miscellaneous/dandelion/index.html | 3054 ++++++++ wiki/miscellaneous/images/cuckoo_base.png | Bin 0 -> 9586 bytes .../images/cuckoo_base_numbered.png | Bin 0 -> 9962 bytes .../images/cuckoo_base_numbered_few_edges.png | Bin 0 -> 5393 bytes .../images/cuckoo_base_numbered_many.png | Bin 0 -> 12338 bytes .../cuckoo_base_numbered_many_edges.png | Bin 0 -> 11270 bytes .../images/cuckoo_base_numbered_minimal.png | Bin 0 -> 4703 bytes .../cuckoo_base_numbered_more_edges.png | Bin 0 -> 13694 bytes .../cuckoo_base_numbered_more_edges_cycle.png | Bin 0 -> 7593 bytes wiki/miscellaneous/nrd-kernels/index.html | 2904 +++++++ .../switch-commitments/index.html | 2969 ++++++++ wiki/resources/index.html | 2891 +++++++ wiki/security-process/code-audits/index.html | 2482 ++++++ .../grin-security-process/index.html | 2634 +++++++ .../security-process/security-team/index.html | 2929 +++++++ wiki/services/list-of-services/index.html | 2556 +++++++ .../services/slatepack-integration/index.html | 2924 +++++++ wiki/table-of-contents/index.html | 2652 +++++++ wiki/transactions/contracts/index.html | 2930 +++++++ wiki/transactions/payment-proofs/index.html | 2881 +++++++ .../range-proof-format/index.html | 2427 ++++++ wiki/transactions/slatepack/index.html | 3577 +++++++++ wiki/transactions/slates/index.html | 3802 ++++++++++ wiki/transactions/transaction-body/index.html | 2681 +++++++ 200 files changed, 234308 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 CNAME create mode 100644 about-grin/emission/index.html create mode 100644 about-grin/privacy/index.html create mode 100644 about-grin/proof-of-work/index.html create mode 100644 about-grin/scalability/index.html create mode 100644 about-grin/story/index.html create mode 100644 about-grin/transactions/index.html create mode 100644 assets/images/a-output.png create mode 100644 assets/images/b-output.png create mode 100644 assets/images/c-output.png create mode 100644 assets/images/coinbase-output.png create mode 100644 assets/images/d-output.png create mode 100644 assets/images/dandelion.png create mode 100644 assets/images/e-output.png create mode 100644 assets/images/ecc1.png create mode 100644 assets/images/ecc2.png create mode 100644 assets/images/emission_chart.png create mode 100644 assets/images/f-output.png create mode 100644 assets/images/favicon.png create mode 100644 assets/images/g-output.png create mode 100644 assets/images/g1-mini-ASIC/G1-tut-1.png create mode 100644 assets/images/g1-mini-ASIC/G1-tut-2.png create mode 100644 assets/images/g1-mini-ASIC/G1-tut-3.png create mode 100644 assets/images/g1-mini-ASIC/G1-tut-4.png create mode 100644 assets/images/g1-mini-ASIC/G1-tut-5.png create mode 100644 assets/images/g1-mini-ASIC/G1-tut-6.png create mode 100644 assets/images/g1-mini-ASIC/G1-tut-7.png create mode 100644 assets/images/grin-deposit-mockup.png create mode 100644 assets/images/grin-logo.svg create mode 100644 assets/images/grin-mw-logo.svg create mode 100644 assets/images/grin-withdraw-mockup.png create mode 100644 assets/images/h-output.png create mode 100644 assets/images/receiver-msg.png create mode 100644 assets/images/receiver-msg_prev.png create mode 100644 assets/images/send-msg.png create mode 100644 assets/images/tui.png create mode 100644 assets/images/tx-flow.png create mode 100644 assets/javascripts/bundle.88dd0f4e.min.js create mode 100644 assets/javascripts/bundle.88dd0f4e.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.el.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.he.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.6ce7567c.min.js create mode 100644 assets/javascripts/workers/search.6ce7567c.min.js.map create mode 100644 assets/stylesheets/main.6f8fc17f.min.css create mode 100644 assets/stylesheets/main.6f8fc17f.min.css.map create mode 100644 assets/stylesheets/palette.06af60db.min.css create mode 100644 assets/stylesheets/palette.06af60db.min.css.map create mode 100644 getting-started/build/index.html create mode 100644 getting-started/images/grinnode-live.png create mode 100644 getting-started/images/grinplusplus-receive.png create mode 100644 getting-started/images/grinplusplus-receive2.png create mode 100644 getting-started/images/grinplusplus-send.png create mode 100644 getting-started/images/grinplusplus-send2.png create mode 100644 getting-started/images/grinplusplus-send3.png create mode 100644 getting-started/images/grinplusplus-send4.png create mode 100644 getting-started/images/grinplusplus-slatepack.png create mode 100644 getting-started/images/grinplusplus.png create mode 100644 getting-started/images/ironbelly.png create mode 100644 getting-started/images/niffler-receive.png create mode 100644 getting-started/images/niffler-receive2.png create mode 100644 getting-started/images/niffler-send.png create mode 100644 getting-started/images/niffler-send2.png create mode 100644 getting-started/images/niffler-send3.png create mode 100644 getting-started/images/niffler-send4.png create mode 100644 getting-started/images/niffler-slatepack.png create mode 100644 getting-started/images/niffler.png create mode 100644 getting-started/quickstart/initialize/index.html create mode 100644 getting-started/quickstart/install/index.html create mode 100644 getting-started/quickstart/receive/index.html create mode 100644 getting-started/quickstart/send/index.html create mode 100644 getting-started/wallet-handbook/index.html create mode 100644 getting-started/wallets/index.html create mode 100644 grin-rfcs/0000-template/index.html create mode 100644 grin-rfcs/CODE_OF_CONDUCT/index.html create mode 100644 grin-rfcs/LICENSE create mode 100644 grin-rfcs/assets/0001-state-diagram.puml create mode 100644 grin-rfcs/assets/0001-state-diagram.svg create mode 100644 grin-rfcs/assets/0004/0004-api-call-direct.puml create mode 100644 grin-rfcs/assets/0004/0004-api-call-direct.svg create mode 100644 grin-rfcs/assets/0004/0004-api-call.puml create mode 100644 grin-rfcs/assets/0004/0004-api-call.svg create mode 100644 grin-rfcs/assets/0004/0004-dh-init.puml create mode 100644 grin-rfcs/assets/0004/0004-dh-init.svg create mode 100644 grin-rfcs/assets/0004/0004-open-wallet-direct.puml create mode 100644 grin-rfcs/assets/0004/0004-open-wallet-direct.svg create mode 100644 grin-rfcs/assets/0004/0004-open-wallet.puml create mode 100644 grin-rfcs/assets/0004/0004-open-wallet.svg create mode 100644 grin-rfcs/index.html create mode 100644 grin-rfcs/text/0001-rfc-process/index.html create mode 100644 grin-rfcs/text/0002-grin-governance/index.html create mode 100644 grin-rfcs/text/0003-security-process/index.html create mode 100644 grin-rfcs/text/0004-full-wallet-lifecycle/index.html create mode 100644 grin-rfcs/text/0005-variable-size-kernels/index.html create mode 100644 grin-rfcs/text/0006-payment-proofs/index.html create mode 100644 grin-rfcs/text/0007-node-api-v2/index.html create mode 100644 grin-rfcs/text/0008-wallet-state-management/index.html create mode 100644 grin-rfcs/text/0009-enable-faster-sync/index.html create mode 100644 grin-rfcs/text/0010-online-transacting-via-tor/index.html create mode 100644 grin-rfcs/text/0011-security-team/index.html create mode 100644 grin-rfcs/text/0012-compact-slates/index.html create mode 100644 grin-rfcs/text/0013-nrd-kernels/index.html create mode 100644 grin-rfcs/text/0014-general-fund-guidelines/index.html create mode 100644 grin-rfcs/text/0015-slatepack/index.html create mode 100644 grin-rfcs/text/0016-simplify-governance/index.html create mode 100644 grin-rfcs/text/0017-fix-fees/index.html create mode 100644 grin-rfcs/text/0018-fix-daa/index.html create mode 100644 grin-rfcs/text/0019-deprecate-http-tx/index.html create mode 100644 grin-rfcs/text/0020-pibd-messages/index.html create mode 100644 grin-rfcs/text/0021-fix-prior-fees/index.html create mode 100644 index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 stylesheets/extra.css create mode 100644 wiki/api/node-api/index.html create mode 100644 wiki/api/stratum-rpc/index.html create mode 100644 wiki/api/wallet-api/index.html create mode 100644 wiki/blocks/block-body/index.html create mode 100644 wiki/blocks/block-header/index.html create mode 100644 wiki/blocks/fees-and-weight/index.html create mode 100644 wiki/chain-state/chain-sync/index.html create mode 100644 wiki/chain-state/images/merkle_proof.png create mode 100644 wiki/chain-state/merkle-mountain-range/index.html create mode 100644 wiki/chain-state/merkle-structures(old)/index.html create mode 100644 wiki/chain-state/state-and-pruning/index.html create mode 100644 wiki/extra-documents/always-listening-wallet/index.html create mode 100644 wiki/extra-documents/build-run-automation/index.html create mode 100644 wiki/extra-documents/google-cloud-node/index.html create mode 100644 wiki/extra-documents/how-to-mine-with-G1-mini-ASIC/index.html create mode 100644 wiki/extra-documents/how-to-mine/index.html create mode 100644 wiki/extra-documents/monetary-policy/index.html create mode 100644 wiki/extra-documents/nomenclature-bs/index.html create mode 100644 wiki/extra-documents/regarding-foundations/index.html create mode 100644 wiki/extra-documents/story-of-distribution/index.html create mode 100644 wiki/extra-documents/user-stories-use-cases/index.html create mode 100644 wiki/introduction/(og)introduction-to-mimblewimble/index.html create mode 100644 wiki/introduction/grin-for-bitcoiners/index.html create mode 100644 wiki/introduction/mimblewimble/commitments/index.html create mode 100644 wiki/introduction/mimblewimble/ecc/index.html create mode 100644 wiki/introduction/mimblewimble/mimblewimble/index.html create mode 100644 wiki/miscellaneous/coinbase-maturity-rule/index.html create mode 100644 wiki/miscellaneous/cuckoo-cycle/index.html create mode 100644 wiki/miscellaneous/dandelion/index.html create mode 100644 wiki/miscellaneous/images/cuckoo_base.png create mode 100644 wiki/miscellaneous/images/cuckoo_base_numbered.png create mode 100644 wiki/miscellaneous/images/cuckoo_base_numbered_few_edges.png create mode 100644 wiki/miscellaneous/images/cuckoo_base_numbered_many.png create mode 100644 wiki/miscellaneous/images/cuckoo_base_numbered_many_edges.png create mode 100644 wiki/miscellaneous/images/cuckoo_base_numbered_minimal.png create mode 100644 wiki/miscellaneous/images/cuckoo_base_numbered_more_edges.png create mode 100644 wiki/miscellaneous/images/cuckoo_base_numbered_more_edges_cycle.png create mode 100644 wiki/miscellaneous/nrd-kernels/index.html create mode 100644 wiki/miscellaneous/switch-commitments/index.html create mode 100644 wiki/resources/index.html create mode 100644 wiki/security-process/code-audits/index.html create mode 100644 wiki/security-process/grin-security-process/index.html create mode 100644 wiki/security-process/security-team/index.html create mode 100644 wiki/services/list-of-services/index.html create mode 100644 wiki/services/slatepack-integration/index.html create mode 100644 wiki/table-of-contents/index.html create mode 100644 wiki/transactions/contracts/index.html create mode 100644 wiki/transactions/payment-proofs/index.html create mode 100644 wiki/transactions/range-proof-format/index.html create mode 100644 wiki/transactions/slatepack/index.html create mode 100644 wiki/transactions/slates/index.html create mode 100644 wiki/transactions/transaction-body/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..a441dfd5 --- /dev/null +++ b/404.html @@ -0,0 +1,2338 @@ + + + +
+ + + + + + + + + + + + + + + + + + +A new grin ツ is emitted every second, forever, meaning the emission rate stays constant and completely linear. As time passes, the relative dilution becomes smaller; After 10 years, it falls below 10%. After 20, below 5%. This results in a decreasing inflation rate, known as disinflation.
+ +This simple design serves to ensure the long-term security and stability of grin, as well as provide a fair process of distribution. We'll set to explore those topics more thoroughly.
+The first four years of bitcoin's emission rate are identical to the first four of grin. Bitcoin had a full reward for 4 years, followed by half that for the following 4 years. So compared to a constant supply, after 8 years, the total amount of coins emitted is only 25% less. Compare that to daily price fluctuations.
+The more resources being spent on mining a proof-of-work chain, the less it's susceptible to various mining attacks, most prominently 51% attacks. The financial resources deployed, or the overall mining revenue, are often referred to as security spend, which is solely determined by the incentives provided as block rewards. This reward is composed both of transactions fees, and of the block subsidy, i.e. newly generated coins.
+Grin introduces a constant block subsidy in order to remain sufficiently secure over the coming years and decades. Block reward is then guaranteed, regardless of how full the blocks are, or how much users are willing to pay in fees for faster confirmation.
+Furthermore, this type of emission removes a lot of uncertainty, and avoids the shortcomings of the standard rapidly decreasing emission which has yet to be proven stable and effective on a longer time horizon.
+Most blockchains are designed to generate and distribute most of the currency supply early on, to directly benefit a few, and then increasingly rely on transaction fees to incentivize mining.
+One apparent issue with this approach is that the overall security spend is likely to decrease as time passes, making the chain fundamentally less secure in the face of mining attacks, whether by selfish attackers or state actors. This results in a "tragedy of the commons", as individual users strive to pay a minimum amount of fees, while also depending on the security that their fees are paying for.1
+Even then, the stability of a chain sustaining itself through high transaction fees is questionable.2 It becomes potentially prone to a new set of mining attacks, all of which could be avoided given similar mining revenues earned through a block subsidy.
+How the coin gets distributed carries significant importance. Grin was not created to quickly enrich a few early users, but to provide digital cash to all.
+The constant issuance establishes a fair coin distribution3, where equal opportunity is given to everyone, in any point in time. New users should not feel discouraged or disadvantaged when adopting a new form money.
+In contrast, distributing a very large portion of the coins early, mostly benefits the first users but presents an unwelcoming narrative to new ones, as it assigns them a substantially smaller portion of the network's value. This in turn affects the currency's long-standing story of distribution.4
+As it stands today, the ownership of bitcoin is very centralized and will likely remain so. The situation is far worse in most other cryptocurrencies.
+Such concentration may give birth to a narrow group of individuals and organizations who may have an exorbitant amount of control over the market price. More importantly, they have the power to influence the project and its ecosystem more than any others, since early, disproportioned hoarding carries a good deal of centralization pressure.
+A constant emission aims to support grin's intent of being at the hands of many people and being used to transact freely, as a privacy-preserving medium of exchange.
+Additional properties of constant emission that are worthy to consider:
+Privacy is the foundation of a peer-to-peer electronic cash. In its essence, cash cannot distinguish between individuals, it does not reveal the amounts transferred or owned, and it holds no bias to the history of a specific coin or person. Cash is neutral, the way money should be.
+By cleverly employing mimblewimble along with several other methods, grin is able to achieve these qualities, while also keeping in mind its core design attributes of simplicity and scalability. Let's explore how and to what extent.
+First, there are no amounts. A mimblewimble implementation natively uses Confidential Transactions, meaning all amounts are hidden; They are provably impossible to uncover, yet easily verified. Even before anything else, simply hiding amounts makes any analysis significantly more challenging.
+transaction
+Inputs | +Outputs | +
---|---|
08c482407fac2.....e335bf2f10d82 | +085cc6944467b.....a3f1d4274b79b | +
+ | 097b2588fd494.....494e43580476b | +
Each transaction also carries rangeproofs and a kernel, which are mostly irrelevant for this topic.
+The above illustrates a normal transaction of 1 input and 2 outputs. The outputs (an input is also a reference to an output) are commitments, a 33 bytes blurb to any observer. There's no address to tie an identity to, and it's not clear which output is the change of the sender, and which belongs to the receiver.
+In a Bitcoin-like system, there are multiple ways in which a user might (accidentally or intentionally) link an address to his identity. Consequently, it is often trivial for analysis to link many of his addresses. Not only does his own privacy suffer, but also the entire network's privacy diminishes as a result.
+While a grin commitment is one unique output, a bitcoin address may be used to receive an unlimited amount of outputs. An interesting analogy could then be used to emphasize the difference:
+block
+Inputs | +Outputs | +
---|---|
08c482407fac2.....e335bf2f10d82 | +097b2588fd494.....494e43580476b | +
0857b6b7eb6a2.....a0a283ed35974 | +09f731e071316.....42dae69672dca | +
085e205dea687.....8b8aeac7562c6 | +085cc6944467b.....a3f1d4274b79b | +
09035d331b17a.....bb76238f605fb | +094262a95a67a.....2f246f6ce60ce | +
0961ee1db49ad.....602489c9c4517 | +09cf2db66b748.....7327297b8e69c | +
+ | 09c2751af8fe9.....fc745808238b6 | +
+ | 0900015eec3c1.....d52d78fca78de | +
The outcome is a non-interactive CoinJoin with hidden amounts. It is named non-interactive since all transactions are aggregated into one without any coordination required between the different parties. This is possible to do at the protocol level, and is simply done automatically whenever several transactions meet each other.
+An observer knows how many transactions are included in the block, since each one carries a kernel, but nothing more. Any further information is impossible to obtain by looking at the chain.
+A
sent funds to B
, and then B
sent them over to C
, any trace of B
's involvement can be completely removed, such that the result is seen as A -> C
.cut-through
+Inputs | +Outputs | +⇒ | +Inputs | +Outputs | +
---|---|---|---|---|
A | +B | +⇒ | +A | ++ |
B | +C | +⇒ | ++ | C | +
This is could be done at any level of transaction building; Before broadcast, during peer propagation, or in a block. While this trick's use cases are limited, it is a unique manifestation of the "right to be forgotten" in a blockchain.
+Despite the fact that chain analysis can extract very little (if any) information about users and outputs, it is possible to monitor peer-to-peer network activity and obtain the transactions before they're included in a block and aggregated with others. By setting up sniffing nodes connected to many peers, you can figure out which outputs are being spent by what transaction, allowing you to build a partial transaction graph by separating the aggregation done at the block level. It's unclear at this point if meaningful information could be derived from this, as the trail of data stops there.
+As of today, an almost complete transaction graph can be constructed. But as usage grows this will gradually become harder. Likewise, many privacy-enhancing techniques can be employed to easily remove linkability of outputs. Fortunately, with mimblewimble these may be added natively, such that nobody knows when a user takes extra privacy precautions to obfuscate the transaction graph, therefore no coins become "tainted".
+An important piece of information that commonly leaks is the IP address that originally sent the transaction. Normally, a transaction is just broadcast to all connected peers and immediately spreads on the network, allowing for statistical analysis to deduce where it originated. In a peer-to-peer network, this might be hard as transactions are relayed, but over multiple transactions it becomes trivial.
+To tackle this issue, grin employs Dandelion++ (originally proposed as a BIP), a protocol designed to hide a transaction's origin IP address. Dandelion has two phases; a stem
phase and a fluff
phase. Once a transaction is initially broadcast, it enters the stem
phase, in which it hops between individual peers. At a random point, the transaction enters its fluff
phase and is spread (fluffed) among the entire network.
This makes it almost impossible to deduce a reliable IP address, and renders statistical analysis impractical.
+ +Moreover, Dandelion provides an additional benefit unique to mimblewimble, as it allows for transactions to be aggregated at a very early stage. Right before a transaction starts its fluff phase, it enters a 30s waiting period in which it will be aggregated with any other transactions it meets, thus obscuring linkability of inputs and outputs that a sniffing node may have learned. However, the privacy gained from aggregation before fluffing depends on having many other transactions.
+Privacy is complex and information leakage is surprisingly easy. Privacy-preserving systems need to be extremely strong to ensure reasonable amounts of protection. Unfortunately, they often fail in practice simply because they are cumbersome to use, causing people to revert to convenience.
+Grin is committed to long term privacy protection and will continue to advance in that direction, while remaining practical and accessible to all, regardless of a person's sophistication or available resources.
+ + + + + + + + + + + + + +Proof of work is a consensus mechanism which allows anyone to extend the blockchain, by providing a piece of data that is both difficult to produce and easy to verify (according to set parameters). Proof of work also serves as the basis for the security and distribution of the coin.
+Grin has an average block time of 60 seconds and employs Cuckoo Cycle1, a memory bound proof of work algorithm, or more specifically, a variation of it named Cuckatoo that is meant to simplify ASICs.
+The algorithm finds length-42 cycles in a bipartite graph. The current (and final) grin PoW is Cuckatoo32+, in which a graph must have at least 232 + 232 nodes. For a comprehensive introduction, read here.
+Q: Why use a memory-hard proof of work?
+A: The point is that chips dominated by memory have rather different characteristics from computational chips; they run much cooler, dissipating less heat per unit of area. This shifts the mining cost from mostly OPEX (electricity) to mostly CAPEX (hardware cost), which delays obsolescence and allows mining in places with higher electricity costs.
+Grin has two PoW algorithms:
+During the first 2 years of grin, the algorithms gradually balance themselves to satisfy the current ratio, starting from 90/10 and eventually becoming 0/100, such that the only proof of work remaining after those initial 2 years would be Cuckatoo32+. This period includes scheduled hardforks every 6 months, in which Cuckaroo29 is modified in order to interrupt possible ASIC development for it.
+The above simplifies a bit, since in practice Cuckatoo31+ was initially the primary PoW but was phased out completely after 18 months, for reasons we won’t discuss here. You can read about it on this post.
+ASICs are special pieces of hardware especially designed to do a specific task as quickly and efficiently as possible. In our context, they solve PoW a algorithm at a much faster rate than general purpose hardware, such as consumer GPUs. The common arguments against ASICs are about how they raise the barrier to entry for mining, and the centralization that may occur when a single ASIC manufacturer has complete market dominance.
+These issues are mostly solved once a mature, competitive market for ASICs appears. However, as became apparent with bitcoin, this natural process may take time. Grin’s Cuckatoo32+ simplifies ASIC design in hope to reduce the time until they become widely distributed and accessible.
+The choice of upholding some ASIC-resistance in the first 2 years was made to ensure fair initial distribution, in which no single party has a disproportional mining advantage at launch, before the market becomes populated and competitive enough.
+Let’s see why encouraging ASIC development might be beneficial2 in the first place:
+The security of a chain depends both on the amount of capital allocated to mine it (CAPEX), and on the cost of electricity & operation (OPEX). But the CAPEX is only relevant if the mining hardware's main function is to mine our specific chain and is mostly useless otherwise.
+We should want to avoid having the chain prone to attack by large hardware operators who own no stake in its success (no skin-in-the-game), since they can attack it and divert their hardware to other uses without incurring any loss to their capital.
+Therefore, to achieve optimal security, two conditions must be met:
+There’s increasingly more evidence that ASICs are inevitable, as dedicated hardware will always have ways in which it can improve upon general purpose hardware. While it is possible to make ASIC manufacturing more difficult, over a long period it is likely to end up a centralizing force in itself, as it makes the chain vulnerable to secret ASIC operations3.
+A Mimblewimble chain is massively-prunable, which allows it to stay lightweight and cheap to verify. Its core essence is this unique balance of privacy and scalability.
+For a mimblewimble chain to be valid everything has to balance out, such that all outputs minus all inputs equals 0 (plus fees). Given that spending an output is practically just copying it to the input side of the equation, then that spent output can be completely removed from the chain and the balance still holds.
+(switch between tabs)
+Inputs | +Outputs | ++ |
---|---|---|
+ | t r a n s a c t i o n | ++ |
+ | + | Kernel | +
+ | t r a n s a c t i o n | ++ |
+ | + | Kernel | +
+ | + | + |
+ | t r a n s a c t i o n | ++ |
+ | + | Kernel | +
+ | + | + |
+ | + | + |
+ | t r a n s a c t i o n | ++ |
+ | + | Kernel | +
+ | + | + |
Inputs | +Outputs | ++ |
---|---|---|
+ | t r a n s a c t i o n | ++ |
+ | ✱ ✱ | +Kernel | +
+ | t r a n s a c t i o n | ++ |
✱ ✱ | +✱ ✱ | +Kernel | +
+ | + | + |
+ | t r a n s a c t i o n | ++ |
✱ ✱ | +✱ ✱ | +Kernel | +
+ | ✱ ✱ | ++ |
+ | + | + |
+ | t r a n s a c t i o n | ++ |
✱ ✱ | ++ | Kernel | +
✱ ✱ | ++ | + |
Inputs | +Outputs | ++ |
---|---|---|
+ | t r a n s a c t i o n | ++ |
+ | + | Kernel | +
+ | t r a n s a c t i o n | ++ |
+ | + | Kernel | +
+ | + | + |
+ | t r a n s a c t i o n | ++ |
+ | + | Kernel | +
+ | + | + |
+ | + | + |
+ | t r a n s a c t i o n | ++ |
+ | + | Kernel | +
+ | + | + |
An output is considered 'spent' once it is used as an input. As demonstrated above, every single input can disappear as well as every spent output. What remains is only the set of unspent outputs and all transaction kernels (~100 bytes).
+In order to verify the entire history starting from the genesis block, a verifier needs:
+An output is a 33 bytes commitment accompanied by a 640 byte rangeproof.
+Following this logic, the chain mostly grows by the number of users, instead of the number of overall transactions. In fact, it often shrinks in size when more inputs are used than new outputs are created.
+Building, verifying and storing transactions requires minimal resources. Anyone can verify the entire chain on a phone or cheap hardware, and fully participate in areas with poor network connectivity.
+Comparison for bitcoiners
+At the time of this writing, there were 560M bitcoin transactions since its genesis. Anybody who wishes to verify the current state must replay each and every transaction in its history. They will go over billions of outputs to eventually derive the current set of 66M unspent outputs.
+Mimblewimble shrinks the transaction history such that a chain with bitcoin's history would be kept at around 1/4 the size. This difference becomes much more exciting if one remembers that confidential transactions are extremely resource consuming, since each output requires a large rangeproof. If the current bitcoin blockchain had hidden amounts, it's size would have been on the order of several terabytes.
+ + + + + + + + + + + + + +On Mon Aug 01 2016 a user named majorplayer
logged into the #bitcoin-wizards
IRC channel, dropped a text file hosted on a Tor server and then disappeared. The document1 was titled MIMBLEWIMBLE and authored under the pseudonym Tom Elvis Jedusor. It described a protocol which is both private and extremely lightweight.
Tom Elvis Jedusor is the French name for Tom Riddle (Lord Voldemort) from the Harry Potter book series. +Mimblewimble is a tongue-tying spell.
+-!- majorplayer [...] has joined #bitcoin-wizards
+<majorplayer> hi, i have an idea for improving privacy in bitcoin. my friend who
+knows technology says this channel would have interest
+http://5pdcbgndmprm4wud.onion/mimblewimble.txt
+-!- majorplayer [...] has quit [Client Quit]
+
Its title:
+MIMBLEWIMBLE
+Tom Elvis Jedusor
+19 July, 2016
+
The following day, users nsh
and andytoshi
(Andrew Poelstra) began discussing the idea proposed in the paper. The anonymous writer left several un-answered questions in the document, along with a general lack of details, so there was much to discuss. The conversation included a memorable moment:
<nsh> gotta be some way this is sneaky, otherwise it's too good to be true...
+<andytoshi> hah, yeah, i know the feeling
+
On Oct 10 2016, Andrew Poelstra published a follow-up paper2 about Mimblewimble, which introduced several refinements to the original proposal and describes further its technical details.
+On Oct 20 2016, a pseudonymous developer using the name Ignotus Peverell, announced in the bitcoin wizards IRC channel that he began work on a minimal implementation of the protocol, which he named Grin.
+Ignotus Peverell is the wizard who was gifted the Cloak of Invisibility by Death. +Grin is short for the Gringotts Wizarding Bank.
+-!- igno_peverell [~user@104.238.169.137] has joined #bitcoin-wizards
+<igno_peverell> I have a minimal implementation of MimbleWimble available. It's very far from complete but has the basics, included the summing of Pedersen commitments:
+<igno_peverell> https://github.com/ignopeverell/grin
+<igno_peverell> Any feedback or review is greatly appreciated. Thanks!
+
Igno was joined on GitHub by other developers who took interest in the project, several of them bearing pseudonyms of other Harry Potter characters.
+While Mimblewimble serves as the foundation to a blockchain, it constitutes a relatively small part of a complete cryptocurrency, and many choices were yet to be made. Thus, began the journey to create a full implementation. A community of contributors and users slowly started to form around grin.
+Grin's genesis block was mined on January 15th, 2019. It was, and still is, young and experimental. It currently goes through rapid changes, as its first 2 years include agreed-upon hardforks in 6-months intervals.
+Several months after launch, Ignotus Peverell disappeared and has yet to return.
+Developers distributed around the world are contributing to build grin, some of them funded by donations to work on the project full-time. Development will always remain completely transparent and open for anybody to join.
+Mimblewimble transactions are interactive, meaning both parties need some kind of communication to interact with each other and exchange the necessary data to create a transaction.
+Let's see how a standard transaction flow looks like:
+ +The slate is a sheet of incomplete transaction data. Wallets transfer it back and forth until the full signature is complete.
+In more detail, the process goes as follows:
+An address, often referred to as a Slatepack Address, is provided by the receiver. It is important to note; This slatepack address is only used to support peer-to-peer interaction, and is completely different from the familiar on-chain address, as it's not part of the ledger. It is in fact an ed25199
public key which serves a double role:
Sender begins building the transaction slate, encrypts it with the receiver's address (a public key), and passes it over.
+One nice side-effect of interactive transactions is that coins can't accidentally be sent into the "void" (a public key/address which nobody controls).
+The interaction between sender and receiver happens in one of two ways.
+As mentioned earlier, the slatepack address is also used to derive a Tor address. By default, the sender's wallet will try to communicate with the receiver's wallet via Tor.
+If the connection succeeds, all the rest is done automatically by the two wallets and no manual action is required. The process is exactly as described above, but it all happens under the hood without further intervention.
+However, if the Tor connection between the wallets is not successful for whatever reason, grin defaults to manually exchanging slate text messages, also called slatepacks. manually.
+Synchronous communication can also happen through regular http, but it requires opening port 3415 and thus might be complicated. We don't cover it here as this method will soon be deprecated.
+Recall that slates are simply partial transactions. Slatepacks are slates encoded inside compact, neatly organized and encrypted text messages.
+Using this method, 2nd and 3rd steps, where the sender and receiver pass the slate to one another, would be done manually by exchanging these slatepack messages. To do so, almost every available communication channel will work; e-mail, forum, chat, social media, letters, pigeons etc. Creativity is the only limit.
+The address (public key) initially provided by the receiver will be used to the encrypt the slatepacks, so that only the transacting parties are able to see the data inside.
+Non-encrypted Slatepacks
+It is possible to skip the 1st step (providing an address) and straight up send a non-encrypted slatepack to the receiver. Keep in mind that in this case, if the communication channel is compromised or public, observers may learn some transaction information.
+Invoice transactions are built much the same way, but with a different order where the receiver initiates the transaction by asking for a certain amount of coins.
+y_fD^Ch^Gz`dBZ{Je21lFOYtq9>W+_A3*hVycY7XXs9q<|i-*|= z>1^?leBoj3o6*jbR_%ZwxLd39v_P)nOLJn=T1$>RFTLvwe!xRGIZ%z0j_^BQ>@z8VPB#fQgZ$cJCawKX;4=1Wo)5@h+}H` z@TiDH(?T|Txr(&L!bP~o-y?iGuVve(mOk=lR}a}=^Eq8!7yLp3`<>L@Vbpnc<9gRg zpUWc;|BYudLUJfx`qH#8&0%mQJatx5MeGQg%L|F{4iRA&tdWU$h4f_1HQG~g^cl?w zWjjbSDn|3z!DIeFoYXykIJAi9<%rcRQN++7!vROdDQBELFqM6D9QYEY)=Y8kO)1x7 zOGLK4(xT{>u|RybebW1KoK4_W0Wldt`stTL4^}7J=JxsYv6FJ2I)7J{)qbr~ek_0T z)5D~dYt!5B`}g )LnSS<}UK zNco0pZTnoc{Vmg=Z8y7)oOMHUsV09o ;4F zPSlHr+X@P8h9(DD$1Jv1>K@LFKAsr);7r`NAI9qy;5$zzF-;4Sl0@>b16Nh9g$@elWC58NyEYKHTKW~)6N*M<#V z9t~~$TifXiZ;f&MF4|*ZXdq8wvCG(C+$1=D4HvU(o8#8==24)<{AiW>$9nGEddK+< z9#CQvIWC&;^%xMmtD(p(sSLL1!!Dbkns613B%_GTVJw$TncQ`w&Q4r)#kr*<*?%Jx zo`(MR9u8gEO}b}!5jLGI!sWWtA}9N?xvXI!mAw)useoF_1@ 7?-y+` z EjSjw_P+|Ojn>ec@flZ%^TN-<-2by+rR6uq2fNj@>qla zlS 8ip}g`FW>1=0cN%ZJ5wJS!Q|(et^^kzdqU991wFqaPScohbmf*^` zrRUJpT)dk!lvhydb!&fO=tjr3mUoy94y!@?yF*}^5NG3NX|zm$l$g}Vebu?2fhNoj z3}eTJaF#logth1EO4e5wyAFwOsbvWsw**rKHVLz$Lw89UaG16_UaUK_ P&V~fZTk=!IRjKy!-MBg_L3Y7V z09Qb@4ZFb1m>(A7f~iFlAWi)ZnPE?FhJoAi&uZ6%HPCTYVGa3p`ImgaY{;%!$`DTz z9G2OZ|JEWlFJ5dASNAmY{^4Mu6xy7WIi~gmjGsDtGu%~NhE%X%s1CdCjNzHEW-zN{ zGAvRO-P|lNgP9VuazlkoiiUpQT4TS`JUqjK_~*@^B~SzmPuywqskQf%SRqKlOA6D( zPQty?cb;a^m%-D 1V1!D=-f0J8D1O>)eIJgbr;If>?AXSlXu=8#V;Wdw1F559}(3=pmlL|4?I`eHY5C zl85rPv!mSpaP^Z2@ZzETREP{on_wmEk+@bc=vllR^dFB4J(*!k7Ho)rH8V+&4QVn7 z<2?S#2WzuWH3`dqcN8NNbjAGThvIU!8(k8A5z@o5oM6m8om6HOa Uc<=OWY&X8uUN|!&z-)%Yq}$mKWuNvN=ohJ-Hb=T(2ICVsa=TzU z=cg{kjPB&J6gCMU8Inp0vq~;nx5A9=EJ1r4 xL)Bu48Ow@Cn>e>!JcwEqY&rUT?b)Hl zY@Kd YGvVq6Pec`0lQ*k|P`o6$gKs-cwgT?4{~9N) zEUt3W2d7M@e#z^X)+EKhE)X|&_=L&(?*yADXEk>N_F7L4TkW9ygMBw0?>v}ZThL^+ zgsqIe8X$YLVjl?ydI kpB8KRdTnsT qHn_x%VXyM~XyA})J_E0+e3TR}lK(`5 z>X~OQ+F?(`_=Gl>^O`AjW#RI&G>}8oS8BKfQO3#nXGKa}#Y)`81$l+iu<{SPE7vPV zM*I>6&<9Vduq-^fY4gsE=Jb4T!~x?kzRSSM&qY?fWG1DC0cP=6;?+chrSd2i42Y^I zQ4Lm@72*X)RP)w&g=vdGHB0|wG+9>WFO|}Q)6tS|EVtzg>D$y0uWv56^g-x+cd04( z06c$mQSm35oikKpOC49hq!uh9D$yF=pT8(M!LL=ih8C9V9#-{9_fkd{@ Dq_lYx
>Swi(19~KJ0$@T*pKHX`dZxEvkmkl3wWZ-po{SIZc*$3*rKnm42J=4lzzk+Uh z&>)&0KL(dLmVw2x9DA2ULrRWNO)+$EuW95{+$GcUwBFmM+d YqMlj!)eDSuf zXK7C78@CIsoo ~SxK?xjwEqL# Cet#kW literal 0 HcmV?d00001 diff --git a/assets/images/b-output.png b/assets/images/b-output.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac85f55fe7f67d804a41cfaef0f89881e6bb748 GIT binary patch literal 3765 zcmZ`*X*`te{~gPdA%vN1O)+B^nX!|`GGiA;W6i#dA!H)S(k$*7Miim!LL^HhB1zfX zNJCF5sUb |uJ3iueO?^4v!k_$kgN~{0uiyb!Mi{pJT>6D z9?A!fGU-p8!HGZA{J1#;a_92i?SOy4y?l_3%W()KK^X#}0T9R*SfYJ}K+d8ekZ=AF zh;cpyA{AZSK`? EiG`mdPasu$80SvHMI22u;#~(nd|BsqZC!5{5&&bf=ZJ^Z_+~>0CF=B+{y}S zV+FRc0vdtPx)gE^BkTr^Tz-LEMGtRC39U~FtxXB5WrSAI$Yo%WMyh3yN|VXeG;(bU zcr2`r5qdp2w2~HflR+*`4y&ez6(^C4lR~e?ld@uifvAAkU>_eM0i~!K;p5)U@_)qg z>Sww<2kb@w^HGM$zjXcgbo2+B=3Bb mSWXJ|Ws3Poiuo{LISk;RG9CJv zgmzXy3oED*AZN#goDcQ&baqrdjOk{1Owkm+QDs-DV(V0qUsQn&s?blW&=M8CK$V)I z$#dz-gG{F$mRl#ww;+*>Qc^=4Jmf=k>17hX(hhD@`FE+1k2LjXfL(H!?_-u{h^On- z^W?X5oi3JlQ%dleKra;yod+!6k2Ez;XQziO?^h|NZy5R-T6!HU{}(CNJxsS?Pq)_$ z!{ji(OR*tOm`- ?1n0(+FU1DGVHn6G6=)Iu(E%s>m?v1L1LaYQSI&{>5&n09;HQ8? zw7+LF5JEi_(4HFT>gdn}km5qTxipm^_Y=KLS3g&Rs)qK3QvpHlF1x$C*FR9XpsRQS z?XB@0m3OS)fg8bS8_yUB dXJV+f0{-c6#>42gb(OWi67Ep9u 9rDVw+H6D$J)k5-{SG^fm1*>~h#jMmSu1`E3F)7!=aAX+OnMx>gd%TQ-M88Qu zmf(O##WY)Jz_~^WTBx=^twP94S-Rl563SG|9-Sv)UZgFq-JON+G9!{$`Q)7V?7UUI znWFqoL`5vUCQHyuIX}Wz(muCX%7{?V`Sr{iO6i-_vYN!7=b5fwz8%-oYi%t$g>CkT zJR5hhckWDL=MRx1H%9{{p*Kgl8@gNkJ*Oij6c9Y6(Dq_cI(jdT7pvA27#ZHYit`r1 zVi=}-oHnbVPBgjjJ8xD1IG1vC6Pj2uq#=6iXTro0Ob=;DVq2`uh@8U$I;Sub8`m2= z ^<-mN{YfO2JabhNR-%y9q?LG_aZQOAUsPD zgEG(xtdO0bNn>{Ee*PSSjA=M|FY46$uHL5bytt)z;lJ7+R_Zh-zMLfMzH4oKpd#ti zgcxjQ#}~tV6{p1MpW1CqP}>3b Css@v|zw-|s`1j7@CL zaTToH6-Hkzb{9?#FOmJU&(>4@{mnKF(D531j{B-k@N#gRi@SR e+Ar0|EBk=93~^$Cf^(SpMHWWzG~+;53p9Ziud>VHnf3>q#u z$!BemI2VF?QO5iK#MK_nG~#uswhp&Gr-2&l|27;@|Gb+x_h_x{*2kYZQAH+HVHkh) z`umuWb$i$HxPO#c7}MyiVCrtFX>DGT!R}Z|&pM>`RpmpSJavn_7Zb*pj=~iuNc)m+ zqsB^DY(-@OBD-sL>Dd1AsIi3s7hbnF?+xY^mK6>@G-#7LeTZkiDq$(7f%rCM1M487 zftW80R{+$@<{oPby?b|VdrbA!nq*5{AVu`{QW5l;m?P1ZpUGgwZucAvwE9&|P$f$* zT!>E@uar$_G8SmFEisLDx^J6zKOx$R-n%)GqRn*9fL+7Je=RCjbH_@2%BXby{;aFf zYj18;F4MC7(}$w`29Db4(jp_cP^mKvJCngN;Bo}^J)IYsQO%VEro5lkHue>om4DJq zF3urH!Y)Xfs_!AF7OK7k5eS$1ej6b@fX$-<4|SWw8nj2x@u?C!ZJj1^`>}Q~i~XA; zml^Hro_Y3Vw=paWI 8$fOl#4ZX> zRckChmifoICe5ke5MK`2AY|U4q`AuV$;=RjRecU_5yXDhKx9+jeXWE}H;t$N+%nrB zkP+cHRe|GIXUDC1BH{(7#SZvp_2Vu24f|M9fpV@lansH)i*ia$Hujm9gLLY+wYi2e zF#}gj0J%KpYqt)o;A-NE_@+36;seMF5Euz#E}beoSwK^Thas+3P@v71QJJ`-vZ)ZJ zU5#|AM=2jXT`3cHK)+M04l59bnBoXDU#@s%I5tos7}9%^o(%7+y4;#uL8)QazP#jw z2(RQSW%OF;ikj Q_-}8V6TFOzJ?nRk~o(l=I
2~k~jOx z_0t7!muJC+LgA0GwZ4}J%9XcNbw%|!)?8TXJF)b$l^~(o%V^P+lZCCXtoH|Ccqmrc z7F+>zz!CwVq*-*=Z;cp^*~l@$K7hrv^8pJAsmE}=!dd K7SN+>;SN-MZLfPBGn zS0k44)nREmLYcS*I1E($<#!9XT|f9Jj(~GbzEmdeIJ7DdvF8r>Pp$8-ffCD!Fg<=4 zt$wew1Dk`gVJXnnVSo=jxIm~sP-Zx0_1aoGHIIz2fU6(E|JOZxAOQM2CM_BMtFK&& zIxQ9`2i`c9!Ta_<_|5>=i@PqM*Lj{CQ!l>djwBYIbq(y@>!+eOJp%Z-3PpZ^0qFop z$V$#qHg$7c1Yb_PFpUPU>th+vKyhS!MZw4GcajmjC4^1as>1O~o4-!5$bLjg16g9z zbw!Kr ;$Aqc#!T4q(Q|{1xMA;YoSb=6dSc9P;UVFL zh^jYsW;03!IhL*Yrkb*t0?_A-wC=1D;CCsbP|2^??bv@(^}l3W5Z?DLI-!r!;%Z7y zX+9vvRtVjTT0-=0n|05vgx;Q2)+_Ha4T@YI@DUQa5;62b)NX%=+|o Oui z-zUzNJ4Uq)QQ9!p^7=Io+j^*ago}^Ak8>tdSSI`>1EF j59Q(QKxG-=3bGp+DCp>w{s`Oxe!dbQ#M(E@4``TIKK%eBN zvEh&zuax__vKJjMJ9LFbCLV7Ps(KI=)sRRzx7)X#b9<$Xm4lmG7rUGb*>N>qv#`Bk zO0!W*YuQ9KAXb;=@&H}MDn*VQKI^8>Mxk5wwP0 cTp zBTv@--l5;xxT~^b^t*Y@c#sl-IyCFCqb0>w@t~*mDQJsdOv9s;VU!RsAo6EFQSvwv zBfMjJBM2&9d mst~XEV1uqwl zl1=7hDT5Kos#5FI8RPhhry9b7n>V0)ojiUaZ|^CC2Vm9!zx40?fPK^7?8J3i{w!GJ ziEvr|(e4un3>6{)WK_(EvWVbQ;21fFBX(sKC2@pe6IIdI`Gj42jnkA> 9_pSVDG^z(Q+lGmT$W81}kngcC7B9Z2D z<@%a7PLYwVARK#D_3%q2a)G~k25&$vO6Zx0@DOZELO~N2q8q6p4rWN{Y}GFc!rI-^ zOnbB&dJk7(6X|d(>9}_HXNhgsP^gt7U!?kwEnk@wLk#9xAamt-Zqjje_Ev_4{NMDu zX|!UBd;Gon0NHO0jN(eMmL9Re0kI**L1#k138IbGMr)#tG_?(h+Gt~KU1L3+!)UZI k8r>;=%;x_9B2Nd0k 7{czv+Ip_Dg&bh90?hhvukFz~2rX&Uc01n&RS)T;} z1h{;=N#r2^KAQCa&wm8ZSvpw)0PXqWzx;&wJ~+VctP=omSq%WVMgstT@I%+$0svG5 z0Pv0i0H8_%0EMW^eist};J|UbBLM>ffnacLeM4gm+8T$&y5St~Sgbw925Drbg*anj zW?_%9b+EC;psn-`jF3jA_85$ouAzmQrKzc y|gOz_&Wjw=##w$S1OjJXwX_wS}IHeBbgcQgyy}c_xXG?^Bsgs>t@O z&LuK$_>^aoYw~?d>7-IR@m4A+KZ$fbnj9NQBobVps_+P+2dCPJ%d+8eP1sF_b?v&$ zE-gk6ymCOT{0^+DA70a~QPZu-?9gU)=&;S%2u(wdt|iPSxK&!{L~4DqPq_o;Q-o zm(G#A@HqI%Q=CdXmyIqSIZ-eH$@vqUISt8}h0tdpd6VG$2jE-xpe4g6s`}MyJ9Ib= zC~mz4w+356^P@$Rp)d`Q$}uA0EVtgg@IHjbgQh-)mJh*-X_VwJBCFV|{4T74WfkP* zb}QA7Tjj*9wPlwOF8X_`Yn|rQV9V~Rdf}ZpwYFNi2K9|bT!v#^%jrNbcSeuqm2gsS zB86S*b~%&+0;$k0QaB6;4jWxWBXK$AH}6Bjh#r}7 eefvxl#f!_bz8XQ{ zRy(`l9N8uAaY4QT9 (3=gb{uz3X)SaPF_3M0RV`-vbVM*BrI+bvpr;=A3dHzlb{LQ z?3963&{Pi!$bi3TtNP2`eALt*29rLdiuYB}GV5`Pc3bF@@=011@1fova2s&@`9s*a z)%tXNLTE`+%=C`&L}4XkXZmIGP|U~QcYppVn1u!dMFbC|>`t~Zn+8V%TRLZB-MXF! zHv5$>_WP&0i`FlzNgJ{;n5r};W;CK}?ow)fq wsu3$h%xpi%IJE0tw z8XTrt+gR-`Y6A;NgX^9I<`5wvws+I82vrvy>F-Gj!do|lLp>%4A1DvA=;iU&cd)aX zBXaA15NhUoxhW4P?h`-?FueIsi-Na|3lUN07ynv#d$CW+JUVgE$*gDPIHkfTHDdT< zyz!CI8N;4#d+XuHI2l}@Lj}6mbZe^`I;tTfkQNerzvVnx)-s_eT+pZdl@4@G1ISyd zgtYQtO)__H^jJYrqg6zVpfW)u-UHs$Eux{lto{-bOKqf`dFkri38zgcUwmjC<521* z%D~Fq$4C&u@saHW-(~3na>Vog$e)sbmb)$Xg=Z(m$2;qHbK) sD4)ydfrY `_}f&@5Gv zRN%QMdvzGR5?+Ag*y3`6C&sTnd4Q|@>+@b%5b7Id%%F_!9CXNeU#b1PBB=U9_OTZ# z$e8ZSRFqM7m9e}r;~2W=sS4-u&t7qzm8aRaCr>sG{hH#i;I0h_6QwC4DrWCt7D^?w zYOOUGU(fRc8!s _y{WLidU6mfp44`Rr6H3&4pfXUELn% z=Vld7ITHSL*w*=!@zV+=8jNYf>9u}gsM|-Cp-$?i*6;9hGy3lY50qWFc(+2ic(&nP z&*>`%#zpMPkHt9s?TP08`KI MEOk3k}N}Ayp(B|7a&+jB82sRZzTvm5zSQK75sHo(LG(&ad0vpfY74CtD zgs)^yiq^hvrdyvf5-!=n3^dVXp8&0xHI{ayeuqcgZY?pPme*T}355%+h2%%mBavrW z10O@rG%Q+}Ps5{1lecT!PsnXdu%(V2y7-m4XnWw7y_^_n@yxM?*?yPvl4+^&hV8Qy z-mz-qOLAh>_&LL^9KD_mp0L!WQMY88UMfDxqT-vEsfL``GH>GN(MUb%)lawmfoZjw z+m*J=VaUC{$U6KzMa3xeXWZ83KA{pbIvVz3YK*D%)FmC*SbO+4obJG|9oR1OmW9h9 zMSLwP90~dXDnfX;o@r~qXZ%wjl@JMd55M8SNJB`r=cSf9wow!G`~;c)k*INqm{40@ z7%bQ7(GT!6H<(Y(fO$NKZYq{*RZ5lf1Gy)DYLW_6NgHQcij%fk6!}3~G+jvdK_HYJ z0P-IZZ_f+UV@8LFFlUkab}FwL)N-tvSYS0-e&%VoRo$Cj+oN@>&6tXV>%0lsaftjN zqEK`lFE38Ifi4*LJFJueeh=p%x0%r*c38FX6WH^JASgWv{dsvfOLSCOPca1ZR`0z2dRIb%^RoUG!rVH=u z<)ro5QYt|^_zI%LjBf)c1!vrEqStZ`c-jh0g@BZ5^Uxc!V5*#1bcn>i8XTY6DrW4S zoEqn{8WCmJkSsgqC-G9m4tx}8&7=fh;X~^F13~juOE44E{XpF{cyM8+roLouL3Q}h zHLtvJ$fHz`lZ3M49cI@~^Bc)hmF2^%;3^w8?z5$8@R{=Zl7}IDwTh!Cv6si(aQuoP z@Uf;Da=N)&SPm)+A^CY5^m g_LI?^= gA-Ph1-^Wt_F;)5&Sd7YB~}DNMs}Pzk0=8RJ^~iP7l#{QL?COEH6IDdS8C z?Q+vOQ2i;yEP~2PNm@r_p;PV+r-_7u@|gHlAfrk>=iY;tB8Lts9{TB P>?!cw>h3qp3b=g4I( zE )LTuQ0yF?yTtu35B*qCkwO1A4}~h zwD{8~7H=y;7yluUxvnqn ^^CW&`2bNlUR z_8a-IOMfRB>`$)reZ8*OdQ&^`U}AOE&*+0)GSwvC!2P+7H`AdKUK)tfyqT%aCARzZ zXFceO*4*6s_V2{2W$7H*jSKQy^Y2y@x)zem6_(7w66=HBGgF&5lkb01?%h5)-{`Uz zH#e~9;_M#_)(%X^w@^zR${G^lw06`kelh4$oBzANi@k~YV4?qF;N!2%g6%f2MD_za z;EL$p8E^Ei2$Tg8+{>-m`tr|K7mWvF!D#u=2QONX^#)_GDx7oG!i)VcaUW`ozx-OK zhBYtXcV>ECK>z-|bb3i)TwQ@=^CqGC&DlxSnatKCt+I7hXmL)1HB?QufreG>(k7&; z(+Q_WKJSIo_nE#{VI$!KpYAI-y>4~cHTjju@a$_glXksulIU %_}ow ^vxfUr=nzV)5 zE~iZ%4!HIIn+;~v)f$O`)&Qrz0F#^q*W6m9BSMP@=roRnU3^UXAhx6pyNf1K=dr$G zg39xUG<`(~cx7&quM(83vwZpIN;zkKVr~9NBKtYPg*1+Q*sK;qJ>qndc0KNvN9m)Y zxb$w13a6(Rg {0E?i&_ie= zjI{NT1U&>wPakD)`XmB@LLdgEP3`^*5P2amH2Bj02244oZSw&DdkoIH1x-o)KgjrQ AYXATM literal 0 HcmV?d00001 diff --git a/assets/images/coinbase-output.png b/assets/images/coinbase-output.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b9cc3c4b877d464c8d3597bcc8d39f7cea0d93 GIT binary patch literal 11281 zcmZ{KWn2_r-0zx*ARw(00@9sQ5`uJhEg%g_H!L8nba#lbbVxTSDcvQxbhDH!eGmWV z#eMFJ`+=REotZP|{Nnub`%Otf^4ZguPazP BJ~%IaavvPCc*?lJ*F$qr zc~J DvOGi+@}n!4VkE!e5GD)^(;E-$#2T9U;H#N@i}@-aOJWQEU)pE zaFkh$p1^J9WosL&=jTf&e3mZTt7c%1G(G)qe8n@}n+?2XD2CEF%?DxYdKt$g*rk!! z5Xdi#Ks5Y&fGikT-Tyw|GbIh_R{XJ@kg<{Day4c$hcdD9#}HKn5D_nd|60nqw+wBr zP$pYrCR+Xwyz&qtl8$Fs%RwxN50XclsSh8clvAR7I5@SR?}z5%;tjyLw2Att qN<^KqOC|=H@ z=~C;L`=e%&QmoSht@tw(B5jBB_A`B;wBZ+nO(S910;QCPX!bM7;5Iimx^8b}T={Tk zt7(66Lkx|@2TFNA|2m6jwI;abA>D&-*nUNh22=#STBMR}_RvttDn@ANzvDl6ezAS- zFfWP%3&h%8TV1nePB>(*hiHb_!=J=ru+@vGr lf&(9m8jevK4kF+QH^mURogjyQH-t^kA|WIh{oMAbsQ{gZXn2S? z2t%52?v3-2xmm$?nx_~AOER&Tct(85MT_!G@b@WE1yM96Su_1fmJB@da (*$UVel>Nt=Pu7h@FH0k?q2fK+D|P9H%!q| zg>ofUQ%v YgIG5(lYR{2X!It#V z+pZ$Mj+_cYDtS51+{&nrEACtby`EeHTFE^xE@*N$r14G^SB3w0maF}VJ2SE};xv}P zyQsA_^IHfV2un`Za@U_!EkF87kC9yP&9Yo+AvEH=dDthCj+4itjLe;Tr8y~MYTKc; zApt&ORwzRqpz}UIBAQ$fQ;{WVUm%6JY0WD$@YpL@A4NELwnnZ`7mI=K79*2hII%X# zmH$e2=dS?&DfBwhgZu`$G~0b~kMRn8OEzPpc|3mX@fdUd!Gm`Xz}=Mh8IrdrX~{|% zwcP>zkF&$FHpowfs*;}$U^Z5ukF}YbbMRKTnHCidsGUHs-=wEETf6da>+~{yVh`u3 zREt%}r#3OJ{7EMoM^eEZ(Y}I}j 1PB6beC2JD|+QUcukYe z-?_=0gKf0t2asPc1leKP2is+z=v#H{HQ)*PGGnWCNT33ZHJ3j#t__)B%FkOK1zy?- zZWVpf1|oj#4uN1|1?~GbBsi3?Br3_;!SjF8A(r$@Z|@uAVJs$`d9ev5E6F-dJQ}c; z2Tbu>y$4}Ss&aMGm^6Z?ILWd6Lat_i`|W$rTLHg?`QS3n5cZzAptuw8n0yCq=>-JB zhQd6-9OugC{wt?$nIgx+3nXMG)J@-3%buXB=kQgnIb%>r=^X?T j!9;^dOoYI)~=;Y3O}glkq#8=#O@x% zj()GmQYq1D)E>SGXg=}M`;4*p&sr!+@B4@uPc66a_C3gwir}`F*4THNaa=wY{Lr@b zb9<84Fvd2oA%njk@~MH!`;y%)MsH*Q-lQYr;#S+m_a23{zt(G?rI9#0GlP-A2!YfU zM}|tI7QF5NTZ@0k{oUucXEM})ox*}B!ly(Kh$h)C)p$(Xj{xR_*{S7O@&kXyP7_CL z8A5PNVsXL;>>ULXS=@(}L@hv5Bfquxj5GrU%+dlx97-4%e@d50XJGzIUK7`?g8Gro zJNo1LrM1~?Iu`Lfkn(B0BF{yfQK~8lVIZqFZE)J;u&b!=eaMnRDf0|ps@Bs?tvjx$ zpFT~R1P%e}(b%;G-C>*-WO{})-S|v79uuTH_1hB2=Izl|QE}(0){oN#mTF`m3xYuE ztU!i(k2GB=4p4~!=&1oBQIZw!p$H2E?m}|#^DhWF1hPLdYuz}OrIJTTNUe2fl1tc< zWMNYtRyMKbM}+}_*u1SRnpk6aV()|>oQ$*%TLW6ZHlcze1cA(j`eyi6Y~R S^d98bUO-tXoTNLp!jVV&<$5Ks zL9aUqhL-^+o>|&_0_5D^Y8j>$eB1^+Rww#%CuhJ#NuYq})#5r;!u&DckdGdt5CQqc z4UoHeT+^nRCvu4TQ0yamkK2IXBckolWE}KE0_}*{dCT>;-{^&pF;j5Qssuh-EQZs6 zGrbFpbXqf>T-GJ(Yqz8LpDDnu*MUZm5OKU(d4K?`DG5~6gnobB(QoG5Q_AuLu*v4{ z#DqH0QUD$ASHx aJk*n=^r$qkTx{Pm)XPoGsHwlB`<~k^Zh;v z6z2S$>#oa0ZWRJo^-JXop%nr{yUo9p1@N8`W;*eRm_?7M&zK|!a)p9G+ yrQlFB)a!uHjA}bAe4FaGhDQ}p` zYZc_m9R-aI6ioM{{mAb`EKvWOS4!0IOQuTvedasKsiAs{;9>15FCIky$E+G}SkLGC z(QU;nOCl|e?wo5&qMYCxPv)^*JmF%O7LL%b-&N4Ybzc(esZ!A%h{DU2_IRTw;@hQH zMR}6CN_ITVC0Bi{w?$L_fcNskLS4R6*_5!4L(hnwhbE8Zy)tcc-Jff@@Bn)AeXASI zS86_z*5i6NnR6hH(r}?E@9_h` 8Nc@r<>9wf{GbHy`nfmQ#)3o7%ZAOI5=ulLSoXMG1O@pLfn+~f@fXQq5%Dpm zD#ULO#=f21n+0+ZY4?3`Ke~bTRrZhmIHR)!X0{>>h|?8{t^PGbTOyblx$?@vdwYMO z*|aY|n(CdPpoFKpSBvKvD>m5|Kv{avvjktMtj-O7q5kXe@Y@z2at#~E7rc4xKO#A7 zU1;DL)~E-Lo48~F@cUpTXM5W*vXe=VC 9p_g-DWzP&je&iWkvM8K=zaeG5y;T)I4xT=3v zQK5|UzFv)#({ANZ3?A+%7Wts8Jae-hLf;fFW)q@ SVaWmhAm23{1rvN+$g)uctB_$=shs%(k@|A^DP;sfPTU<0y~D4v>H znD@Aplm*80AiAMKpbxNn+;DoM(Y3W5;imNt2!Z+NOff97>^GaI{?fthtZ99{uCZ~R zLW&7>{Wm +jX6gz;@POPz~MF&XGbMIR L!GnXce{I)ZiYFF?nec+H9M~kiPtwnoK zqD0vD viNlsytzql+=ovoi0kuzPKfk99}P9BW^1%r{D3{*xybUhto| zy9^k+P?B#r-@({y_xqw7Tm9ENav0Kl1LjG>T~wq7|A{WX?boKMtk-`6 Uvgrb2C`TAhGDuYrLH!JwGww@^o>U-B@bk(rK1Q;JDIj zjK<~fS?0omaMM*quz$pqdH+uiE9su(IQ+{`)rS^p1;p@$e3h9pl;qjIbM;bPSNyBH zB@9F!OtrL#3AjufFb83iD^%Lw)Xvrp1hkK`AHfqhub3#A!p76HaD}k3BMHNETgyj0 zR*a^9e&jl^7%bKf<3Gwr%K!W4J-Ns#BV{LrZmV0nk6tvmUURx*tq%)JoWi%YJrKV7 zh(aPJed?zdGrf6!j^%C5{RO&8BcEnbNs=V7QL0YY6-H+5#rAPI0A01I**fAFc64*e z0{7|?$$4JnW<&DTX)%~whyG-S(|muriI0{0v`9A5iXddi!5!#1pV47yUEL$Wj4f8G z_IAr~c30=a1@BoE2hrn=yyNpznKc6)-JalU@v__f^#L$uJ4@`iUQafN!q-=B)+>Ub z<+wW%tv@w*unX2?Z#+_<>e}1uy}8NOoNbjXSLY-A@@Bye?6CndL@K-WU%=9n75wLf zE;Q8e^WON@n(FAiI)lp#viXJ&>l;9Ye#T{@N_4fyOCS4vC&`}1#dBm~F8Pps4%9X` zo4mQYI+2s3&Cj3Nbj8Sne}Ls*UAZxRp!Zk`_lG 9G&)FW6MsnfmC00PPxAuYgySF!>J-vd%*xAd9?WzF&!Fhi!m-~~1R@4ni z`SgUD^IBb${A(4Wt!*n-gBrE=9|^3sY6ZnUR%ASHf!2pU!Fa{(kVDBDsSqN-W1A~y z6W!`_9M8xzuoK_=%XJ~E$!}>)F<1%JpMn|N+ fmQR*D&!(zxs?*FLk7 z9yhCzUj0GZrBWNNg0~D3e!IH9`g8v5B6FfUJw2|Sv{K)5Pv>LSDbe=L=?)N8{vPmr zv(Eg94u&o(A~`-b)^L(zGGUvviz|1tmiths(;SxC#-MVGGB6G!2W^5QJHm_2sTBuG z!7F0au-xvLFAxb;hXKt}C6~~ce|wH!k?!Fy;ry-<%AMb@8v2vDcg)wtp612GZuFemnmy^0I%iS_HD3I@)`ASW79^nT}6PP)VNTrz^?AAE8FfZ2DstzK^Zm%2(HD&qS zaGJ;ax5l 5nC_Y5p_&sQSiNr>(jd`;C(&A(fTNwn@Kxkbt{Yx8sY`e@^&; zisug*F9{sfwJ`-leWil+P!YQ`#v5Pwscwp7d-v7HI)fo z@qA7?EeOIefPFMG+WxpNI6Tq}JStPyJE<0pq7gI?-~gtc-$j?fFpWfqn2(xzX~!yI znAno4Tyu3FZ?7=_lIk`(tVKOpT(ADL_ZdHX!33?wwpJ2F9Nw$y=aCRbER=TI*KZ^G z+{0ipwY;J2{dmslwtC+Bab9U@xp7w#wTDGFmM6*Q5!22C7Of?IC=_TH^mk D>y< z9UT=dD%#^GP4TrY@qk}dmxMboe^>Qy88=L7$FLeWTHDmz$P>NV)=HT(eDO67zlGxS zVV0u=URR{ga+T-~a7R@NPtFcp|8zQb7@aJqtE>C7!v1x)ioL6PTcX{rgCgPhq3CXU z!724`OjXt2>{qV90tW+;g)n(0h_nRgGcAL$v&E)eT2zBw_Qel=ELc9nm+*!?ec#`o zZu;jzGzd=aHOSBy&2VhMzedy#lYgu187OOc&+3f`WqquT>T+|R5niboo|@XN0CBTc z-`L DMB6~JH*_h$-w&k+Pfn!X;Tz;9tB zV*LTvj*3P!;b&_Wix9cZ;O+jw _JZ;<5m2#zIcrZM^c&$-op| zt|;8P9gwZ%F9UY$`Bt XFaQhxl_qMWXA6LOs)BvTiMiM9UdjfMdAr`%L9OiZ7&cX;jcOr`-Ju#H=Ti zlNBsKZn`8QfAa^;Wq0xx_0iyL;gn9mNqFndCo~6TpNHG>4|R9@PDN_f^zUBSw%lC2 z##lu2xyl9vXA7Ba`rU%~hu!L@&*DM`1rF1{Ggmby!HeecyvOaGCnuUTin)$6roVqv z^YJnH8LBG06WHRl2oCL6x;O-d8`8f$;U)}ui!3k4z85F+c{Rksw528`#gm{uqaEM; znP4Z@X!0nMwM=ooTB$MhOAy(qV3Aej*_-DfU!?Cw_}uUfe3nb)pg!Il$!uuYG`MZh zyIFoh{=y@p9Qn-s^=Lq(u!QVbhD(e5@LEFXZU(Y~%=+W_pXk@H2&+!juC}boNn~$l z= gMHi*agh6KN8Bw m73jan2?v++jG=o$aLyIa`4M zPHw&_ofg*hg*1_qvt-vwL}6VEdq8&Uvm4m88O8|5R*{^LCczVmnXB9x?wyx}W(jjh zL_2BSd#q<})gD`*=p%V<_Tv%v&V**kmC#e|c9DNCW&-a!*C1ce`q IZokoD9+@Xs*P;n!|SE{JMuOpX?A8ZQxGfszbmqTG!*K7q`r?mA 3-JQhWT9R;TgSz8tfGWPibhbfl*F!1rCcV%so z3O04xuSZ+wTf&9Zf>Db)ejKIz+0fTXSY^Z7lgD!ynPL?uLyfL4s!i$I3pnP{dUIzB zVgrWU`tpZ(_@>RNTQK++IK1cTXiLjwgJS2jL8cC^juBY(m0E;dJ68hx##qM7T6j7i z^0ewDsl#ybRZq^FlVw*%1`*T(!ftm6*OXU~agm_cYkBVwcm8%n5^M$&j0lIG;P^7` zwK>;HiQ_AD^1dhivV`aK>hxl-zQ#FR{{z01milbmPz1U`T2Xkb?IX<3atz`DfAYwo zM}b3QV`CX#hu_5M;%gluMa BkE84L|^get^WFVt*ieNsZTGx7UJ@;vJ`DD-|YX~^rQ{MHomiO%P+yawZvyH zxqCx&SsUO?q*IiPEZuPnE}-- <&wMwtbS|DawsKDT}p%j8ykD)Rn)~``c8i7zT*6R{?4W0(?v5A z|F=7{#@vN!78-eOo&vVmWm&i_y*mA1E5^(zF^mMSa$Aiz_sY=1rM997aEbreWKM#@ z(;6C2`jGiv#=k4{%-~?j@uRg}r(lQSZQ#s{BQsU@876wH9Q+-0jE4gvD^hL8biX)= za~RE3+zLsKHSRu$?hWF?DLAZu+@C60?-#R9Gs$GuONex{2)Puxit0?I7qWvikDJ&Y zfU1Qksy~7$E9$TxD)wMarxdTIrZI;EX2|ZZSP#7?kMNwEv1}!mK2J3GvE>q%SgBRD zgFuvX^Gtg0IR?&mgd4-^RGO@)L7i&!$ZBi&>76bJn3~4PhOYOgm>%EDzN)XTZfy8_ zVXMRSvbTI2YHxpX_Q3PUl&S)^2ix4vMd$Oo{4!Qr`oti$<>G>`(kzSUFkN73UFn_a zm)vO9=5d$3m)F=i4`=Fvqwj1K%y_+@q&(?#;bl B`DISVU-IA|4dn%4PI0 zJs}Xze~lHa>i?04QR9K=_lzGr=5rz_K|#R IAmsx`#>_6P8`>%~XyIRmvkcu~@z9ystqddtH H71)+;LycMSAd zY$adXkUW0^65oNy$lC-n)MhCQ^dlmRRG`kb*%ao-vew m1z+-+M)z8M;QTO3Lo}WUhP?pLLxQ(V^+PdE<$(pSZ3>#HgmzQ zh!=Rk1JTCDl=iK46`Iye*XYm)G`O;E&)OCzpOC6vZ12#5te<-IH}Fc?o@c#7Y4urZ zpmwuaSlCc9Ho+JV>V!ZI8kd(Bpg))3tL6L*T|lnPbmm~iO%U4v{MckF-XOE~HC zM{{y{4-y)Zm9-DF7Jn<23<*6y2rssQf)S_&x^#AGWAk%#^ 2vLW23w3Xqlio$~ZOBk8`AQ;xcK8zdOP&B-War5vfh1QR*7nj2EEp7Zv z1-rsYQyq}s(|6>6Q=Y9d3wJkdcE)h-uJ-<{TN?p=_>Ss!drLYj5}5E1?;pkzkqQb@ zY^k9lwL3Li-LA4l;ku0pqn5tw< I+-Q8{ECS^^gNWD=k09lvX6(S`o>^q2~@y&^bKRr zKnCCOnDs2EM&EYWk@@2yZmvPTo*KhQI95dfyP*H1%SiIKer&e_sHa6lZmNzYi+;}4 zOs%}Uxr#~~5pxBX13wIf{JFFQ3=4^#;}cL|cz1KYf#Ky ;V!>(UTT4Up^QIp@pt +;z`Nolmj>r@6_)LB!(h+}EWyk5~}uJOrs$BCe`6GXT(lp{SkIhB@{6?1d^B%rRi zYZuuI0^zp?K2T*n7$4`cnu9}v63W!Y1=!++$*tWjdx*uWoT9=)8JbHD0Ri1N7aRhO zGBk~v+UG0Ho`bR{nXU&sIO6s$E~Q#94*G)ERAQhu4_lJ~LCntK(~GO4CEu3P{RX|# zKYfj$;5|dB93*1LK~K-h9p7{fOtENe67UZKy?sTd9H6q392bY_`&yEzB`Kq{f5`Ur zSKHJSy$;Qp5OVT9k(|;w&@qGj-0I%&_LTx1GSv*?7JFGVGY*`s;UM^Z$S>w@x|0WD zEHF^l`zY&fv-=AZ0?8*E>v;weXECDN$>sl=Tu_g?+%`>p=J=KOwV2|d#q{fM |kH~c{~cmy-(L8a^?O3-;SoLY7~ z5Xk{O@31b^^h3%=cTKdtdF@rd4GJ83aM=stSqi!v5XkW1iYL~8qqWXfJO}?fOB&dY z8PR@y_aJC%-H`-AfbI )K>w#>C+R7fC&Nt7!q-8AQy`Iw{$F=)WLifupBi*wK{tu8 z55?eYWp2*;-&;D2uSMkjU&dk#8q5vw;#huEzOT#xx{`hl4 (BThQAp^WFz7!z4W=JNHQH1Jls9?$g8bame z80y>OU6cHD0M<0;w_ZaNzt}BaO>+bbR`e38uSn2FMf7r;e{CK5+q>5PCk>s}lxh z5uA|`o=QPJLbD%QweF0k4Cld1(*YBOT0R4(njyzWH98I^ `#}gg-ne0{!V5Z%LqW(+aYy(EbbxdyVX4il{IBypwF)o}>ovJ5@(q4Cnf*HC z4bzd$$U|NsN@ZdiqNs2o;w>P5Zi)xUj}E?77PphU5zZ5p6tLAF^H*2a4ou3~0|DwJ zpey g*v|=nciV!{u|kIUZ~OoL=2!8ODkZ98oJod3h)*EKE5tON_^dVrbu7cmHE2T&S|2lpX{t*i3~+qR!e7|Rk8tVYo%%8g#! z{?a$Nebn+VpUe|+X-(8CMRtp9J0@~X{DZ1fk*m33_*CAIaP%)i!AtX2WawA+LU82i z>p-ya2^vA8%ai}|rS1;H9j+#pF5d8ns*|IIj?YAlX-J{R@eA^WEBPY%fukG=3$x6x z)%)+A!_-88+Eow&G{{tS+}m32>iMnB-Q5Y-(^m~>pdtPr%I9`P`9MrH%!e8td!#5Q zU#!<_D&Idi%SC}PxhpspHbM`}rLpKDI~6jqYNI3|V*jZ5$6x6z=<405>uKzX(?9S| zi#q4#AB1BToIuguGgGK_+r8IgS^=uv`l)fK?VKbyKf^d6(j xUkS zP7a~cs}dr)eCk4#Z@|<{ j9dewBgIDRp$%
5mY>-NT+aOePl-6EgFaYEb7I{inSzZJLp!r)2Df2o0Oe zxcfkX;R@8_xayWKX@vb4J2~pVi!>-QJ)Nxy#3NqXpo2U7L?+AMT(BZRPuk||8Y$3L z!oYOi=Uz9XrC_TDen9W!@J8>_{0~J}sABg%M-9I8KY%u05+Z=4@xxgOctR`w^u63o znH&q-TV);2=#{obxhIZz9M0o8;$5_5LAfe^hxDrDMt+E%e1NZuqDj&du{26xzjDP3 zlUqCUqzLuPMR#A2VKC|XzfioZTRA(5J1|~S!M7PI2~~DZWi6@BV#*%-tV0+41XT+8 zKVi`Tg*VbqERQ!9)3JJg=77e+8O}vfWdAKpQM;XffvSk6t5@-M;&Rbb{B&EnMRL;M zo$P^fd6 ??Mk|lwN0MQ7*mTbRR*?wVjqeFKA6htxw43Li9l+vG8 z(YM1% e(Pz~u&9C1i>64)Jh@Y58A=rG+bUi2AAPgocg;xK8c#LCeYH zqmwDWv4bi2f^e{LuragoF>~;$aj@}oaPf0 AkrTc#7o~B`u!ggQW1;* literal 0 HcmV?d00001 diff --git a/assets/images/d-output.png b/assets/images/d-output.png new file mode 100644 index 0000000000000000000000000000000000000000..5174f3d2fb19735178a8cdb18bf3a2b4545c7467 GIT binary patch literal 3582 zcmZ`*X*`r&+@29(Y-35t{xq7(GR8iZ%rIkLW*Wv|HiqmBV~k}+WEo_6N}?>;qDZo2 zNefv^DoIbILXtI}^pHGxr|0*6c|W|r-+kZbKG*qQ=UnGH*N2nk?rJ9iQUU=000{?s zTO0rYtmpqXiX7m76|;xk`HkQiqze)NxRWooM-$@r)&1>pE&xD+765QI4FK5XLubDL z0I@ItV3`U4Ac_Hi!%?N(SPTASJMPYSw6d}?1gc|bY>r0Rx;i>~xH`EzIy#^+re;>! zFcWJlYX`KQ6UGjWvN1F=Gc~hxK%=$wjIFJZmX=6EV}$0>V-XbM#W->emvn>c-Iz>l z;(9i7J(@ZE2j9r`YUKLdO!lqk`d;Ud>bay_Tw){FyMgO-gX>$vq1@njH*$&BIppg} zq&hD7=5LT%#UWQGkxLUPMQqAB28Br{k?>f}qtGxC;Z731CE;{i9Ilmlx}AY w4Ty_Pi2LEsCdQGifCWeuXTmy2c-8BPdZcpH?<5D~6)3d9*lzb~b{1o8#HS!bVYv zO&mgU7@tCI=HfkEoo{iySOLENgwqrcEL0oL4Wni;Y5oM<{{FtTZ`SW%0sWlpZ0jC% zocx_B(I|Uj3;>|}$L|-&u06%#gThP)7qsvvQDr#=vx2XF6#xKe-N6=#XHTt>#NuQe z Ho2j6+04%)=Oq*(A@{)7$1Av5_1@n7BZSwK`a&UoV3saUIiIJMyIE znT~wxtxNM$Q!AoHVBbuV)@n%3AnW9iW7 >V+ezI(*3CJQTNxK#Vhkw2bT$IP??`AGi6Pdq=>lf_YvF2RBzuN`YO7Cw3?Vc zEctiO5Jc8Ot$ u zeTO$2bP_!JR&qLT+7^Rf%QwumoN!0VbcI~|(rMqn5&6&Bsi=*D*rz8{tXiJSswn0T z )sLw9RRz-EUC{+$6Hk5hnRrk2tl$x{*xnQ5YAfBEr& FOBga?QgkxM%Znm9nZjt!w#pSD)mih>fXJVH6leo)s zkcbzwSesxuF_GdmRii3;O{8k57 zO}bGkv;MCX)J%s(AMQU^`;L21tA~phm%4WR($1?E8$0Oq-)pU%Hpo89*?s~7H6t|? zt)NUjzI#BWa=kO(?*y=6xy)De<)VF^nuSG1rro2E8(V*L7ltHSz_Th-(hWw^4-~qu zJ+1CUBYl33jXlE|Mb1ZwUyO;0r)blwOY6r>K|&G(&Tlv&nDlX|T;~;&g$Fik*jdKt zSZ_FP ^945) La~3rMee^^K(}6(E7NYZtncC(yM;JU$Ozf$~NKW1&wEMqz+*CsfDvC9%-6 zv3R|3WxvTYJjH-@ OeIk=sY4DF6q<5o)m7$L(RWXKnZyvEQb&vYOj-Grq@QQ zvsMdYP(!{4yi%`fpp=;b2IbnEo4~%8e`4B?0Qtcy{gvm=!)+7ZkIkzF@KQS@!X saXCrpp zK(cJdqxQw5C9!@7z@MbPn#r99i;>Twmi7i|g8YyO>G5GG8_gH!y-~#wVPa+pmz4bS zt8#6$*+>w2e^7(JzZK||sd7JE!0&&(<5&OrT@=Z80%sS?*F2hfIM;?Z{Blr(3y`gG z&p8*QtYibVoQGwmq-6Xkaox>&tN;>{ym-l{jbVC@ANILfc!09xa~FT=S=x#AZSyCl zrT2XXhXFQLli%r=Cr$UPuJjFCPgi}mIA(; 5`$=l6ivqpH5AC zYh9O!YMB(BWVl9Q9gJ*#chyCe!&+D*jbhjd-;MUSUsiAH`VF%LPIvXsp}ttPD)tbw znKQ)>pPT=g;g&cqY;|>fFe`r6`(ruw3l>szMcZ|@XKL)(5?S-tDtobEW%T;Xt@ZXu zH>P1(>FA+vLWQA6KI6Dnf0lRsWbN!733LjwY-zi_hz>9;QgteN?z-qW;OBrMXKdZ{ z;#5Mi)sUZzY_aj!2^Nu)s8h)r3C)_blimt9QGO*qcj4*6=jW 11zcbj|TXqR- z`0Mqr{5au^A9fWw=ka6DZuOkk$*zLZ4HU5jzp^)-JqxnfTCO~%uSQESir%IpqJgu$ zTMq7DHmccozpc>$ZYTBc<^ K{HpY%u@+ z`X_V%ZLmCr_Rp!7eYxI|^l9_?{wmc<+--m0e*E{Z`>Xp);~VZgsSThT6b@7P^y4Fy zVym&Eqz@L2m-DOFYXm>wQNs0Yy(f6@fwk#x4l|@tOLLpM347y4sYZPe*`9ID8rBlQ z8=5wut1kVo?l`1|T>bFF$ym`02eEu7&D5H7xL|U=E#614M)#L$h11fwUAKK&2WB`f z2Avdg8Hn2X!wSA!nV|WuPGZ7Z$DK1}?J++dzq0bi>FclQ-NGNHzMbnqEyYJ%BuZb= z4Sc+>5IrHKjjtwx?i!kzPQLWhpLTX_LPEUm61BX8Q^V_7Skb(;<`$!>TldSUqP?+y z1@txD4GQasZnX6ZV- DsE+96zLxtR?AG7Mp&y_j?w zGXUWq9l&n@a2On>12fZso8sXx1l$l|WN;D&L%?7?(w6rBhY%h~4-Sm~{|V2W)3^8p NfCJjqwh2W|{U2dyLRtU- literal 0 HcmV?d00001 diff --git a/assets/images/dandelion.png b/assets/images/dandelion.png new file mode 100644 index 0000000000000000000000000000000000000000..69ad30b840f9e469d88d45c517d539bd59adeb40 GIT binary patch literal 44214 zcmd431yq$?yEeKIBou{3mvl&XH&Tm~kPf9mN=h1pg@AM@-7O%}(umU14I-V=0@D1G zc=!0nIA{Oo>~DYjjN_|=mwKK#?|J8S-S-TBswDH^9??Ar1o8kTE2#>BAl-*R?hvEi z0bjXe;42P3AeoCRf{U_s?G31)q}}%c?3uAnvpfh%X!hIRRhtU4=lL*&vYh=MacM zJOqMopIoaV1ipc6BrhWgxxD%>y&*3Kd ;nApbwO7~xc)zKit7&$tSbqC&Hn%Y)BXF=CLA#77!$U{eRqGQ zyf{1ehOf`rh{9-NU>vY$SoDrM!u2-943+M>H;88qd>pYFL3>&_qEp=aoGnoyx)WY; zeUuQ07bRi5LbOtz=vVcA!Z2xLHUjp-+ix}S5Xwe>wHUPEYA5*nvXY^}fF_|WzK7q8 zzTM*KniE5qwAYWiRkpN$ew^tML0E1@46=K}$8q8LXesTN8f9^pN@?}-hBkRrhEM;H z?rr5hsayRMvAU_b8jP|wnsih_|AhGi3Ae+Y8}aY2yQU9V2qOCvss*}h4D~YO*w8}f zC|jh0LhxA5I;$c0;w+SU6%J6!ZBq9ox7s}q|Bad~fn}r=CDs?y(3^*tSaC(}yFck7 z|7G1<^J2}nI7zl564enpJ7D%}d1+vI;pbu#)tMgrOOXAg$jQ_ cQQHWmtuuEOZAt$7iuUANc2mPeo*l z1fCW?Q~ZOxeG()IzwZ-QCZ4DrfGIku@OzssgrBaG1A#Fd5{U_(JsZkNq!>))4C`{U z7RIK)VisE8Otp?Q6QOANYn_$2zOfjduLJ*QA?dD94S1~E1F0#edFw6&S=9SSWyJ1JLk+~(yw$ vmZR0f;cw!uLJV`1+B~T#+~!ll6K?Ur_T{c;(LSPqPKi zu4D#KqQE4Nh*@cSs8 t;LiY+_zICdJ8k{cK9>Ei?-){V0cbu$vzj zqM_r4FaJ~F!Cf?nEGm$7|2OKKGqDm)8}}5+$8MXEX{Uz+i@^$q{Y11ar3)U_YTl&A zp$`a}4P4*R{8DL@dN?qrAItX*a|Tfy>3u>V4=er)?^EVdI~9! mSh5ewr{W3Vvp?B|J=wFw-Kp(LQH4tHmHH!dKmh6M}9PPLwSz>bXM zBMxooLZl`X9?*2(ZpbnAFn6KtVFXD=KC7FT%Ke$Dgto=UFtIE%Lt9hI4h$cq8jU4a z7oMpzf#CFLOvxb8Qv$F>qVK7{nkD098uZ}DSr}}TZ3Nw )yFa`h01Fr`6y(a6Uc*Nkr*6s-8r+AXUOM(1ACNSD72RU>Bh zuxTl~sDjvhESNhD8C*DL4Bl1Q&loV!t8S_Cr%HuCJt7ZdR(YuO@p-T~&E$`W6HAAs zr#U8sL#Vg=L5xL%C$3vV<(Rp{PmaIpn{edPzPaCLo*9Pc!+PMVLUDgflT;FZOy!e% zq)B$niLG++g>H>Sa${s=;?!=i`Ayf?kY&z+=%34vzt4ES;UePBh2E%Tdfw{($q`b^ z6l {za?%S0BPNcR#ly{{Lp zGJ{d3yc})|0ol5dw8}*9tZvO{l@N_Nl%YNCy^aYJEBn1&dA!mJTb(Yf5bW5m=MTCh zs0Lc9>sygA!o50ejq9o+rQ{ky#M`^%V#0;0L`E+jTM|*Uq rs6da}oEekdI;$Z|Hqd@cW3B8x!EC$E~`_$PIb*Oebdg^>Gfk7N&ssuZE9wBK1u z9w-%k$!$HuL%SV~ci;fcJbnP{j-2OHPQ#>CHZk;|KhNzhK0A4d@;u|#yE#?EX{5Ow z%cO!be?3H_Xc;S3BC3lJO=7l|d(@9X*uvA)OZ$w0aCU~ZRSvqCBmR0OffgCP*NFEb z=mA0GvV8S)@-QYnO~u)YA(KH#(HQYg5|Wq%P%YoBVANg4-QOBHx< ^zB$p<3UoRk2gNT{`zo)!0{~N8|*9f5Q@wsiBU&AWEgH z*pzIdC~IH<^~N4+)#_2j3!i!I^Ei`4bw7}9IuFa9JDv2foN*yy7h0P=7-NGjB^hKL zxo1~0!X&Y(ICchpP87hNtKJQHyLvjKC~WYoQzzo7`K}mC>ZgL<@Hk3YEIgvykQ%q< zR4S6k^LuqxlWEgl@95ZVq-)%3T-*B8jJ7dX3jZ-m;6u~xCKzSM)SY21d_mWlX*mgt zKMv4kj1on~JEBbqXkXLZxDJk{U%S+Pf81!j)@z6*_m9pBT2|_~!G#OvnV_ epQ|9j tE |QFR zVdm0M!|BM(C`n!_@9$G_8Q-hBAi^70RuQ%Pvj@B@+uxt<(qSg7!aZ28IU`xmE-!rE z2iDH3(vC@opz2>dS~_~B$pKZu){OT4eC6n@F!&h!5ugaS$3lb|D=l3;!y#7T!hwge zQ(IG7dYU{@RGF|i=RMpl6&V7-r(p3c#TDPw%^s*DUYmXR?j)M5r|+*1-V`IVXvF3P zTvFZ|VURO|!)hka?ez3|V~-mTE&DV$h@PQshJNn _ofyg{);AmuakvM?|Jw|IBei_bMa_eU5v$ zK@MCqlZ0!{&d|x}+GZTgAb!~8&J2yGn5FB-5lV`iur2nN2Htemq=YRo+z$M >6O95X3)=M_}eJ%2ng2Qy;(vkN80h
VKBRV?lP zTMYq+F(ZEP+gxl~y5PxCli<)8g-Hvu#`vs!q5-Cew<|tOwf>>FT}!Uz?UO2f)2ZRa zA0CGO<*))OItwx_c*yAZ#@7VcUFNGiYi_{o-X`6EL|5FI=L#OjDz*n9!maj%Nn=l8 zWLW-s4z*Ig!+bU!=Cq0BvWZn?MkDwoCYCiN^*QEj=KB!5$zudJjq>iMZ?v)HM!ct; zl^gkS^QRQ` >Fe*8!I@o60HV)@vGn}CFb^%kYV z>FfS9O_gcA51ffKM8b)i7x9@F f)UbmRIVk`kgg73lnm -D)hB RNy)rsP(6A zW&L)!u7MS$C9ejR)3NwYK+GNORU0fRudGCcbR2_GuE$8s?gwIWkScadM2Qh4$?wM6 zOHPiqWzj{AynogJh0eEjEt!7H^nM3iwUF$BTnzH+%q0u}*-U+3q;O4&3qdt(ptKAXp-yVp zV~SZJbpIR`l@@~fcZ;H$ajlMbxU34&>L(dbWL2*6k2HiSOfyu9vQ&oKy-xEh_$=eS z54D!3<%O%CNH9^uEp|;|Gq3x}57!-;MwRKCn J;Wg>tU|CX=^P&Z^VQ8mN=q_3elfR0 z6*+t=H2KimTtF8VovqQ%L+8RT^Y$T)0#(IMpJ;A4G0smHPHge$YTDJRR;l8%rKT8- zn3IOB6Wo|Fk M7Ivy F-YjOh#P5R%|x)_2H98LS; mh!6R^UuG!%|e*#qD)P5M7)prs_bMuUQ~edJKuTt zCSL5;Y=$UGi868p1PusDFwmNgEEB!LAJuFOI5Vx&K{b%i>3)_6g^)KKp+9?;>$d3U zS+(hf_4UvdbD22JSf}_N?yX0$cb6p!;~~Y`x)i0=!A9N}VUgHRO3QO0jP5CXaq0dc zoF^v8ejwUgj^e{TPrV9z=$uTF<-(te9nTNkk9!dD>LvoWzfUGrxdCs4SQmT8w1Vx< zjk_Ge!J2WbT@m_o9>a0+$0)G{dvl;>ILlSJC38h^=!(T^GbU3lT=f7f%A6 z+-Ke(P5={Z^vbs0+*qKL75$<|FWP)Ud2>vB#T5ejo_wj>1U0{nu` ^7a_fCPLJk{AOi@T?=z8fL2W@2NkHVRjIa3?V zQo|=7ha;_SRoP}DVXSsr?n}ZdyUXsZbl^4_*NITOA*U~#iB0OxQ$Kl5cD?}nSlBuG zTa8pVXK1Z-`!@WUI7mmLBWLLpD-m`Pqkk-T_C)hnD^HVnBP$Gv{ss0DS9e&Wh(w)e zMjmO7d=qy^s-WD+8)^Rn#9R9p<`*yF%^w`F7}n@seYb1w^*ggj&^FJxaIM5A!dLQXL1Hr(nHu9<>*({KN1fkr^6fAug}#Bxj))w4p@MI`~mmY zWp4MP(Z*yCtqHOS3+z6B4p1G-+qmMz#y}8Co1#=QU=aZ&7`6)2C>;6yAfEl!p?Jp< zEdF@Tm544KGho3%q!>;8;?wQHgR{R@0LYDk|Hr4ZCLPZNXgi;CtsNi(9A*Y!QeU5k z+MrRwyozGUZhnQF8+Y~KtugPZob6f8sFm~Prmu&W&b5z#K-fC{Pd{xC4mLUlwLND$ zT-Ux!eFefmR%bfJqQOF>9gDo$D|Ox*lte2S|5zp|k2U7XcM^Cnoh7oY@6_NVf^hSa z6FUJmB1KEO2m9{NN EvM(o^gNKjH<3%M)E}Gb}iPV}i0s0LM3{+<5m3Du`Dg zvB7lv+t1iH^nQler0>xPI~|A<1%HbKC9X>w;|Cd77x(+k4aTAk>|_bQC-w02GClh2 zj2(=J^#a({ {c;@&5bAVx(VjYVW;#xjZ`h z! aA7;K*OlI3)bMR2#SaKePc=QkK zwurQu@z3_+YOQcIypYN#Y+|y$zc4WrRE>lz_*kbdaf6@tnfZsupefstXJz33xc%i5 z*XJCtnwrCep*&U#E3Gf-1yyEBDk|)$_^V;8%ikyc?F?c^CKXzI66eKLO(ht84#-Tn z%ua04Zc^;EFATh6A}^Qsj};&MA^wfe#r-2*q{pf dTjj(g_aOuSUk1^x)x`aY5L<$RlvL}Vbu0W{yV~d8S@ok9y&Kvt9;B&{ zR&mkMMmkwmWVhp}?-cCLmSg0P_ei6gpH``Oaw1(9k|FqI&$<&VGJ30Ie_KydT&(c0 zMx1={5lzwTAuxXSo@sqSg%!WJVvps+mjoSY+*>hE`jRK~e0Yb33xq`c`(>Y9Q5wJ3 zNwTB4a#7KbZpY^j5!_o}@)>xij}`JXC{f1NyL9w zMt{yK)QYwJc!n}?b%#YR`9;w78*;y{A5VZ}*_zHjj8{Kqd=cf3W3#M67J-~^`)Tmb zv%DdSE3jUSwFA}mwF=M=Q{(Pj#S~Rlz38MQI+*Gy0~H*p!$KfMMC79J^tFPdE7z;o z?WN53wx?uxujh_S*X}^)s(z@9>?TCb&ft%cdR`J$tb0QoDgb%+C>M^?{Pyi z6G~YXAdTa23|Vg4!>6|Rf3|7nLYRdot5cZpOgSrmxG7(+q`6eWuag=Ut-i|OByfN6 ziK|Y!X1(hI)%GjnK$-BT!*TVE`2luQ3dRnx)afeatkoRQ#X!+Ky+Q{e!6X~+6v?MB zRLbvZUZ7k>eqf|*_nh)amH|u4*#HUw)Hu`>!|c*CI{4`z(jDWXiueGG$URO;i*EvW zcIDXv7ExE&a{B9Rq!{X@C4M~?e5=@u>LC2bFDuu14OTxZbaYF>Kh-7XX!($#eZ4%1 z8(yeBg9iugp;G=J(~;kcdpG@~Ixds>XLX$1yVyGQaPufC91&S#`B?uL1}&qf!90Jm zyc6~K)# *}s0HXnq#`73E|y5vK6Vm0}GqyEEpknL78K zo1LUl!)&XG^+UmVX)XM_AU>*V?c64C;U_r`VBy8OW5Q?LLW)W}TFJ|%sDLW+t3Hs# zZR1N>S*)mXT1$9awfdh|+qPZZ&*Tz(T(F6`R{0`$jF3(@niPIHP%N#Wk&*{`#g_55 zBzVW&sN3$s8{nY39b<9gzF*>#bFMkn9xe$OKitgB7j>2dxnhH6jP#{sDXHY6`>~GF z?H5HOpS`By>*aL--V(ITOU?Y`-GY#pM7&Ux*JjRs5=-^o?~+H6{P)9dm 71PIEpov42d6VV1x-aFIoYHrhH5j(eR=SiewP_x0|;tU7k)DNyZ%Tzb=M zyd!6Qa8=T u&lVUh(;&X{na{JNX}GoIpf- z_qn}kyr(}p$%iI_vYgj2j?2Z+f!|~2Vi*RWmv9+Y?#8N8@|YKYH%1tO*LWbz >;_xT%$z@bn+HjFYyeLm`6%L^ zBoN-Qgq$^VAw9U`wb@W%Cm2SM>a=t6GCl}U4l16)gOl&6DbaKZk1Vz}hN;;K{G^`j zpKs@qmV7iRmdP)7CC67DQ#Wsyhh}rua#LKZQnHp @M2MM)R~d&(Ny@j$JJfz>O?ID?RZ9KkeL5DsMkOQd+{2_Jj6zETM`?Q~B)#g7 z WNLa zyLVY|7@xE?%8gis3AJ1tW->vSZF<(QTPoo2oyBhoaO2J3RByPM!izD(Z+A}V*H>%| zNCE7;oO(K*AGMK_r#)|ryccjeb6K+YR8y~Oanb^s(cP3q(zGr|+hRE{H;6F`Aa$ut z1Q}Dd zo_9t);r#Le<3_+j6!9B}Lf82&fW^rd3^L>-zPwm#c4Y-MDLw+Ae$@W~^NAic@7wc8@_hNLECjvy9CnFiRZbJE!sZ0aT z48~kaSoT1EDcMz{z GNcR0jE{RCdW47+fGAPw}x_IbgZi=%b20*oL6`qPx8CzdG zv2}K*y@_2g^d^PqMf=6NX{jqiVjXZTb#R;boS!ydmwgvw@XKH}!pYyJZpnCed!n!1 zQujsA_-(u*c$yS7S(Q$<{L9Ddh>f9A@ME=z$5N=~RSJYR>f?@NR;mS31)9##l{*|y z|3&PRGaL2R#R^c!M%QG2`EFD?U*ijun3k36oio?FlP`8;@A2p!4E2$A*LxJKxX1 58U-HAIbwQEh#4vGeQZ%pG_%OC9uuR5+>?xvN$OpYH2 zZe@tkq(Iv_*YR55{*IoQ8OOf{lV+ih7n9sbFL63mbCn^MnjTx46H-905k0&
*SX)D5eIYKw_|&BW zU)rN4s2`(*Al?!i_2z)yA$~3^HFk8|bkM$&`mjSRcm$PuWMa2#)>ZbXRe5N`aihaD z;*+t8Xz*u_RnfUrDLtgMR`dLi96eO{i{&=kF{oAT{%kWxBturu2%o*V30HYI52-s% zqV+yW !5he-6mjmHP zn0h6e=chDSbK@P2z(Yrbuoa(U6LWL)#CtbGc#Iizk5Q@)gsp@X0O#{EP!}$Nvg%)L zacnnH!N6lrF8{Jky$V2{b6NrZJG&ZWJ&7XJ7v+`}lcDaTH@TtuBB(MP1gR9L#E|9n zUYb-cT2IH~U}b`Yd^If2;%uUb^IKp!+R{d})CRt&Y2mgR#xLdH+gTo$%^#+lSrYrY zTV3 z T_aVNP;TU0$sT9I^4J~}T9KHbWH8_+QfzU^8YpQJqs%Pgepk$Q z&jGr)-6%cAWcKLwGr><36V_I^x|PX~#>FXH7EVhl0aCs h?zfUzH*RX0+_ zY1cbG?maXz{f@YLmqI)R6Kh{!WYQx6wT%HuHR*%&(O3QbBlp@p4xUe3Ui9VG_IR9x z<3A@hcty>(8>DRvu!{ANTvg3SG#ZWXEAp9Zl>}X{xM88l>_6`qQ_aP#75AC7U&QZf z?Q%U9XFcXq)U(Z2EdVUgYdiUAN@kv-zmCvlN`*PZ{fX24d9?~#-05Ta+5_6E4djz0 z4wpXt{qO$!y^K!wbZBG%EfZgY#=_7 Et+HF;E( z-kz&bSgDip_4)UQ8uso6S+p^owtb9DPV&)&tzG>dB6>8%8gWN+mLD8Oi?Vkpu%IlS za<3!?!%+}eT0jmk_=juI`@X}R@}w@aO9>tzW122=6NcVqd+HH~C0sCFc}SDVeEGq( zeY*I20$BqV=*Uzoza^A0Dy^%2W@Z|dPx$HGYmhg(udbc(^1JbGdRKDGu>RnU+~l&r z#Gl2o@S{;hr_NSw0sXEV62%hNyem}7q(e)dgFrDj!0D0Yf7%ge>z^uD9&J*pHNBMy zcaerPta1O`rK)b`cWB)n|AYZcMOft%jXeCo*NHhUbLkqrZdG=0GK^u8qBNt+^7HC7 z$;aif0A~}l1h~n&X(|@&*h(`RkK^tA&bs{(7lFOI+}jk}wgMF)B9}qGyaQ5QBSE8@ zauUa|QKt$OU9;tnO0)8u{%02DOY@z+oUU#;jIVhJLLZ5GKR_NC{+PkIZIm=aJ`+dn z7yCKbA#q9CkSt?5tzRu-FlUAcpqcMo460vyp UR_-)dC{0}5l-sc? ;_Or_x=rrb78_N`yjMbyW3K zbva+3@h{X}*t<7m#NZ}b6`DG=9+fvbtBgLX9;zMLA8YF8Bwj5DT#G`n7;&iD4@CTE zj`0dNbd}E-Q&%H<;QI+|pW(^|%{Oqyc9Q`+|MRm`^Qa=Vjx1c+h`DIcjq1A;{Pgd@ z3~6pKu6a(8xN6~uH2OmNslj*J7?5rVrrh1!4Bc7xBUQM|qq}wF*sI+?{5icKqqNah zT Yi_H43n=rRSR^gn3}BOX&1Wo0Ms*d=G}8;B{f1z`pN=AfO^WejwZWQ|xIxIfuW zVZVZ7`M!lptIZckMLUq{_DKdw%Bx~;ZPm6eV^eze@q8@kRjTO^h=k}XqSC^mf8^xk z;Dz9#A-F3Ud)WY_^<$bQx8?j=-!}(iH2(n;uEfQ4zs6eqs|epr7=i+5Y8Ovg%0Zhy z$n9NdpmU&qPcU91>8AlA1wt*CRkQ+aLG~AF-m!2vL^!X$-qU*!NrE{Q8|1vcBGCT? z%S8ZyweYc+_bvdC|Ll>-qV{uAs3-D!>A1PM0j%%O6dmRdv-_!pR}X2lPn6edJLw52 z(@BCIDXR&|epIknD!K3vmEQOOndbE5OrX|$!zelvOov#jpHcX^@zbbPW!I&y;cEl6 z^LoEK_&3iHVGD}J5?p1jCI4+fPET6lW_ p zQQp C6f36A9 PMj~h6R{QM59N(u@w{7y9#0H^M#Uu|K3X-L2R zf3S~I$wqzUs;WE&hm0F9aHXxQ_)Y>|o@ZWvx8s9$Eao52fR#=kiZX4r{4pN7OW9)A zpu%t9$nx?JoiZTvneC#6zLILSO2)^!Vy26pM{$pqHi>jdMrH!E;m;$oNGpYnjGrva zGx9C?y6yny(Prv0vm%)LT40J4NY&K;ENBcP*$Oby>sJ(4dQ KWnN64W)3iIuU!v!+6dqkm9e?+ZX|cw6+x a1Cg^LrcM1%{W=?q?rB z2ZRc#IQ;m@OW1{KY0~kbYDK{5p(-rOA+Bqe$pPMiVrd=hV6S>t9-U#p%zIclhB1(V zruz#zI$aVbbtiyOn3<&nsrcy4%4^J&xN{#~tJT0~dXZ(&^@f)*thxaDXMRf28e3s~ z+3}>EwAlTt8i9{nHtW44E*USnXa3ITAWD=Ix)k9Ny(Iyvp45g*+6N^0B=r^|*vy?a z;Sy&(__A3l#zY88$0N2px?Npe)K_(x(o@(gSWmK5Ibq4Q`FcOe8*8V-{N>H>d?%wg zAq3TD5n(jSp#9KO!aPDzSj3*( JW>#1&@wLY@DjXqeL2Em$SUuq-IY zc}VqxR&qM}mfcf4qTs8hH6B;{4S5&hsmcH*)pdPz0S%2rr^V8P(nA^85GwTI=K@nk zK@@4z6TTYFdTM|!T$Sqh_SUyrn-_}aL2j)z_N$qTo#M##52?dq=|WeR>V=TkJwc)w z)t>f-I(k-3dee&uMeF|b1)<3x=tlV^hg)|*Y#N=bFUg@w*DusBSm<<}YfK$|uM-s> zOZo0I;k^Vv_pMf_{oDFGlgsLbWHJh$M*jeC&ZGBX%-@C)fI}A({qXsFzL`=Ls><*b z1%>2M?Fh{HFX*TUP%J<^p?EUBJT{RnM}v5FnxjSUSI@P&B{=lm_pA0s8(Ap=;-KeR zRZ mmpO1p^p3IjD{(zGtDJcE?i~}}{ah$H^hVv9W5-)9{!L&nmjKb% zf&irQR#kQN*r!FIk&xW7Qqz%g^Ndd1t8Mw $Ju}0rDcfyfi9Qb&(09C_wk@7t(@R!h}NWBNb5`^u4rdM=U9otX+>8u0aUTGI9 z>)XQu#Cr5A+if=CNKnuz)*yYM{E<%{X%H76ix$g6bd1J-C;5w*#V9*2Pm#L`aRtBZ z2P*tBSG)=m7W W{=RS|rld}$dlX7anas5G)LQG*{kN&H5 z)IJjnf6g@@heij*1i-@@lfA$|Z@yu +{a&n5q}N33z@^7Qf<>H0hQ z1U+JAN~h!3u?w2|osys;ft`H4BIxpkXY iVL@J_$0$%a>RA;qXxGn8S!re#rH z19tAr!n^UZeB8kD*v {xygr-zXf$wQ6hWe@#@ z_&Q%?_B@*{)3I@7I2j2vaC1BUu{Ol!?0bcVtPzIgx=QR6X$Zu){KR;1aPPxQQ{uF& z1(pl`!{V!`PdYA-;u2Zk_!y4@G>rnTfB&$XnpMF{@Xa=sNII9$h*cEk>|%TmUR+_n zS$C`2fE@?LjfKvdV6_-t80Mi-tS Jv+9Kc&wO0Z_cv#51IuhSb_=4 WjfpKG`%oXcgSGAtO0>2Uw_BCM&K{;Xn@L&wjma^G$7sDnqsWR%CR!gt zO>YpG&O5hGp1i|219YF7UUX)S!5$Wb;&m{_1jEIqeSRI!Axc|kgvzL(0fS)Mba;7* z60~B4fL^oG34hL*dte|108v>zIFrhm0kN#0{AM=kr#s}h! f~(}jHzsS~`{5IdL|!fUWQ^E-pVw6Sb#U;vSiAG#7WI;R9vuM^cx+~Xi?>+n z$j09GXSAiF@g8pnX2JEGBX3mDavUZdc8)n4i|yBH#7s}mp2X}ba59>MQDD>pw^Yj` zKfS77n+rhdxQAL-Vd6TB|67f^#p^_fs4nlvs~nxI4AZxGW*E%$Z%SY66>WUg9Pk; z7=dw?beS@5l*L-7C7j%6?*-6uD(TPS{sbyk5=Xnw0NXUJ`PWCfZTu|o=Q_?Tj?9OE zPZBVWEPRdabDY9NF6gayNTD11@1V_()!wQBlv!S0zQ^qTGN!v_^UIHE=G7~6H_EYv z!z$Ikrar~P?uH5m&L~?nOJs?%Fgndjgt`~q-jZ6IEUr+tG `<<@BZxDw zF!X}X44i=wU>! Dm58;2Jv~A(FblOz9wWZD@se zw7WX@ts96$mE4XiBPoIWaBq=i(1(%SdxuH7!}DPvXuCl~_ON$A`)U$R^m}E_pA<5i z9Vq+X=nOu=zBKPm7HMeQs-NIA=NTDm&64n%c5_A8{}b0Vox0*uM}vk&ktLc1+EV-q z5cw+M&q3+V?f7w50RfU+ _@?;1hq$Luy|dsPdy((UdZ^6 zdg>JORM&M_SIyRRC_D_zD)mkU-^sh9#7+_aG!g=_x5~ 6UA_+nPb-uJ_FM_HLFS(7KpRCQJZ+ay@0w`*&&T9Q~$`P85F z-@PGy6d-Kmm8VykZA~n+y$Br_)n>X1BUVoYvlPzsz#+?la$Sq!&K0x}V`*ecGn#+3 z`R`U>@N2`>)Lw}CY(CHOkl$soOlGV!KTT4La6iqykCMf2f1XqQS;BJE{k@5*zc8e! z1@U-0&v47ik1-#`WV@}ae%M*X^Ej_>ByeIsOzdv^z&$z!=uLK#HS=#z9YI8y>yVM? zcpNX_YpVoat**(5pSBHw& 4 57VcxC5oyarE-8s zBFx<$IP2c9KEoP?+Ae))W55FDOf5Il06lKmwvUMX8MHrliGD8LR{8w`V4ymJKPhnp z#K`KUx_!EHpOwBr)Yjq5Ez>89L2YLsfk#xISd8vd?4~JZjkt6_UK}@k%}3%`*jF6S z2FTF)_XE{{v=3mZriRg?!}_=YAEAcQuZH#&?gvm5wdgOS9afzawe Ld9BK_*I1Z1h6QPB^)9;OVj|4x85_bA?V7-Vs8rJr{ zERW~0qPp=e`FFdffI=*SF!N>0Qmvw;r6piwkHS4epP!8P4_j5f$BBz)#`{5$Os`}v z?xoMX{Cn1k8mWdHp@AL(Q9As_SxWvjig$gerz Ob8hxfi!ofR{VDfgHWQ;FZc8goL4dwt 0 z@B5X9pO)!dxY}z7dT>ikdHY%8N y}RIZp{v&-0b?t!ZXl(?y6b&6SDeYX8C@&) j^0l%Qu?Imw3JQx7d#bg5G*`iafv3<2#P3bbkfw7HUl zlj&oSL#nS?aQ&ANe1b49PtUht1IN1T2?|>h)!(8b=(30tdX^LUM}YnqL}F6IB*a0z zJ|?R0;Htx3#Th$H`XyK5$unZY3Rq9YSVi} 3$YeG0MDFZKmW5dxe&IZ&mTu`;i9S zL(YQb4ZY-=G)6-H2R!#lV&{94_Y{ @;7CVaKvA`GR?8lcw1e=hhDJLKL~=h;c^BuK+6V8SVVb*)AK&CLuyi+!;U zIgyYM1KWj|aDeYkL&c+$d;Jbwr0pGm(7mW{v;@-dV(}eMLEefRPl5udQ2g#_p83p4 zYB7yYCe{F Hm;g|(_cvkP{ytrYjp~X<+HZS4d*(9}{*=1_T92i4@>Cfa8!-Zc zGL`_@9^Un R z__>}BQ`>2j1%R?x-nVoufM7}d0B^mrFo>7)qIvm}Qj)-38`U8Z{%8{y+%F{IXNUao zi=#7;T1R3I`Us_yBLJxWOiRl)M#sRwwlrPQ>P$OI@9rniPjlvTzB6OU{^CyVLkJp$ z@b$Z!2yqfYD $?|NIBCyGhxYvYDxVC(t; zn?A*cdUA1j4{y>;F$q4A>!)1~%}ixaTGxOosC>eR;~*q8Z*Ta`w>Mt%5VScs75BA5 zq#@shF*xD!jE)_Y^AvytrhLNs{KZ$?t5wYn```SKXv|dhRSUns{gd{mWrpZ+>{pA? zzg`Ta0=6mN)b$aDee=bDs}=f=uVMjr%~>aG2eR&~XJvSZJh&EIq^E;q(y+lHF{sE& ztp+6(9s#jdi(lD*n2tuFjghITDA1!2kf|sh`~gNSgzF3M2gDrj)p{WU(3dd+rDbJ4 zRj{7%nGhjo-yLLGRAJM}Vfw4M1K}I>tzfN$y{873p(IlK4`h!KI|(#+4*h_1?^ zm7oAFNKr_rwM9`w@rBzbiZEC$t5XFaLLelXb~Z5#FfcbWM$AQ241ly0NTp8k$T~W* z@v?OpEo>0P`0GQ+3vM-%x>|2@FouQ)EJ+>EZcYN{Xt{p97F (%Tgix z!%{m$76^>;9om)ul|?m&T<>4W8RsPnJxf7JA+r;1>e`4*^uNj!r>!N=+VcTjo3O5N z4MV_cAv{&MIR?$-HJ}R8S(^m^JMRm!VpK4qt@CAvZsv|2QVp01?2-zq_gH ir1!Iy&O)1m&O|;i-HuoLNKlv5JvGJXPQ^D{FfsBDpcPU#C$i@ElSXjs~g5 z;%bQAx>rKN!>P?uw37Qj%*H4&Qv;9@l(-s&xUA^Dp;u*1=cY>>PMktfk#$i?VTmBd z?{M%ecXEbgqa^h#m|Q5zgB8=$CQ9hWgmwQbj=8l5CS1uU3KE{{kYXGJcbO}nTHtM9 z>^1F|`xX@LpriM!0DRKWUw>>zH3?=y5Us_qWHmGStxkdKTDye-f5o&xgA70*YM? zP-iu<0T)0@%TE#xv^V^Kmm178@yHuEiH{D5sR~_PhcHW-T>JC!F00cw62G(%ymutj z&^f#Mc&->Qz#aZ4A~qXPsX* je*YA}pO&2IDW6G=DXC1y|FoRZ${ z!MyI9W-;i{U^dST5SXGYF1HLkN&}-@>kAj>P6ph@q0gR` a^y~tWxl) zK~RFMz6YQKxSPr8@XIUU)aEH(9R5f+N&&$k`KzPj|0K7XUP6PE&}vj%oIsqW&@4d( z&V^GdZ>YU}=JjQGFlq#C_} >?DjeJAbOG`eV@_AJejIjxFm&9u&aTXV;^ zF#*#Aq!wWZ&S1w%HRhZ^tDM3He>wdep98}s2Q($DR&!H4L-8auXcog8-Ngz>$8&x3 zV;@QSdd-py>7eRZeyF?VWX7ST;{M}9#PPtguR7!R5v0Ep7*F_5h^CoP#&W%BCSYVX zn?uY#Lx)a&4sV@evgFb^n}nQLOMr t@ga^N;D{zfONW=)G`JP5YxV*e zkhm6ey1$J4QQ8|#s!R2CJ1BF0wWb@J=D=h~b;(}(#BzmU&h-iRVkHu-?Fu5TZlj4u zUj^|2i*WX>F{@|p4RRb|>`9J4RKo|-2iMeh2|JaxGQUZImY~(Ze+&7_=a0C*04E2G z%D;S<8N{~}%-&AM{SM`?2+6z{hJtRtzXpm#=h&_8n9fX3dkG(%mTP=Fv@zaeu>@mv z6p1sD73lQgfA-N{>`5M0#tqul{_HAga)Df5I|GLEtBl#=*`4#vxi^1G4445Nh!Wgi zW--^2=6T;9x(Hf08SyFhwlXwR^B9|W!Lad1V 67cW4zo$_EwC~OGqV@NI z$)L4^x3S{&6UmO>1`%`tDo+7j-qoKG^bT^W+O0!<1)aO_+OH0@G-}nRe;GM!#Z3fY zKQW&m)LqA!+GlGY2)G>wy6hTREH@e#9SD3t~`P12*#0KG0aF9Deu5DdEIp_WbQ( zee`*lApKc+#Kn_`9*KA5w`~=yOky2gPRQ{5ws7LQvl@pcE|(&}M)<7y*Z05MLN(9( zwRJE>SXzYEv*J=Sc9*^h{7@ladj--EFRg#i#Xxy L|G(S-M VPVjt#1?&P!SXa0qK^KkS^&)MCnkvyHg1fkZ{x8jUX*8-QC^NvFYZUjYm)3``$M` z|2&8N?Ag!EtXZ?xFZLxpMT@pGN}YfV-LWUqbfN#;Flk7cgeUAu oe_1pHSZA) @`OSy@?Z )E;W5fLj0q=xg^++>)<$$(t87SSD zBMP~+27X^U<@MVL4U2EKb>mMWD}h^y6u~au>aRR^@x2*fHHGC`tw)XRPl LdU{Q08F4ljmUtCt@_&mLy z9Va1>{D# oVzumuZB+wpB0xCl6BMGk>gL-TOTj*dSJXY;Y0f z&JOKL!8;UCta1ljlcuHRuYPU;ZYW*N@J=h=?m~vK8l@-H>CTESTpdq!AXwzFEy&z3 zWh38gdpH*sBK_j>BgM0cNCD+4yt!vVZWlzKRfJ5CqiLFa5&6#=c;x`2{rW_OH>O4t z;G_Cr(kZWuHb>GWl3y!+4yNMp@9pNTxyG*}hEsff0*ym7UiQx3#pn(hLjoa20{n2x z{m8XJ&tumu1NL0Sh=XuYc~0N@P8v6umzd!;vI+!^ldDz+eOB%gylqn=q^#F}7s}g? z#d3Bkwz(qzsx^rRkkNX@0Up*TIy3R=uCB;$KO+-M?m4pV__owRW-V!Yev1FJ)$kek zu6ksmL`85{yOI+;?sNYkCzvmu={;1mb-KLt&w_$tg<()`G{NVQ4nfqZrZr>-v~A*w z3xuu1(n;5{qO*(m23M@@9YAc{N{?~A-0Ir1L5ei@i!F8$!#eT|B$yI{VB`t(%%9-# zX-FVJ@l;+u9-OSvB8I3YE&Sjzr=pH|Ej6dz7WABs`cmuES(eio&*k3( 8!Ry13$8EfSmGOuHLmxg<|V z%rz#NcupFBGM^1^3piK!Uhc4&r`(Wg_Q%6#=a<#kIZ48-HevE_m4&<&?yR0@6AU7_ zh_U?K23 JW+@OLzCT0hXaPDhq%lixT_MYysRR4PvA%ZBXPZUJzj?Ko_G}B>yM$B zh1=J}mlybOhw|;C$^3==6dr=OVT&V`^GvkAvbK%X`7h1)lz`n`ZrnT9fp}FfKPN9? zx1sH^-H4~9{JJi0Ss0!Py&wkd*-su9-?Svs-!OLRo6Xf1Jonu%_vtg6&5p(Tcs5`Z zX=*z~-9}T;1n9-w9G4&yYEygMT-b8&7C}lrSzE2x1DdFbw2h2-a)rCE#KRc;LB>_3 zdWNB@%*eIsw@-Ed4G _EDKC L>|`%q+O8 P70;3G6Zrmuy^+NL^9<#qUS$XRxDsv!@EN3Ipc$6KmD3nd?WVcrCIfe>%pGo zy}58#>Xjn g-*gIbFTbGifeJ`_x z0-wF*2|@ckHFXFN13DxvTFs%Msb>x+7^x7d)%mH(knrpf#>;hb7X2Oze3J&GgHgB0 z%0>RRZgeibyQh?@Md0FA{ktaE;yN~v1cT(ox?EP|=f0(2GuZCXimKsBncO>R*{*%3 zL4a+(*8<&K1RxZ!^Gd2kqNmfcu_#;)0Z?z!KmP-9-C3qc2=R>&D)_xj&xHP!xpo57 z4c|e0GAXv3$4+_V{ue%dsxO0Xhs^IwDx-{-`nOi32m$?2eOG}##uT dj}EJg zYX}a4Tov;+0YJ_Meh4RCw$3t%j^Mfxp56(N4;<`wVaSK*fx9X58_V}Drq)Q}rxMQl zZ|yP#8XOqoS?;yG4L15aB!bBaCPHRGcXQbfndps=Y-fz|y`&7*PDq1Ib}$cNQ+y{T zOX}Ta?>ldzHS~fXhu+!V3a6~Ls`#)Cs9)&tH}y-5PG*5#3E4H{IMre}3cG?V@pR zzfJ!enB^+fHvZ&;{(OM2k~OgCJBF_3cT|K2R0-78#(G?ye*Yj)ans38FV NG5^ z=%^rNi&G!XX}|11vk~snu%e(rG`V+10jbCPK7XA^-yhT26(-Hr#r4`#If{F}w?}1p zX(dKDHhd66C+CH3PoLo9^3XiJsXw@$d>K?9r(4@sfg6m2ojRd>@Trpn2M>ge1T)fq z&`T>^xS|D$8z4=YuwJ1svIfL1{wkNY*XfD&M~q|YKxxgVJ?#8{#yGa6OwI?Mz?kjb zUqSrBN!oH_-M4>5X2i|ke6oED3hT~OxqF&Sfq7+R`U%m{?FAyPv&VQG?m#|*(8m-7 z*P&SDpaLA zKz>?TYW1*uO+ixqlvDveSIH+09966!Nl`xD_>0V@v+zLI8 r-+-*TPHXc7Eb#D{;=HH!vw8;LF5N@y0^Yx4SK(8~zmc;J3 z?lLr-p(#SWz2q$YTx;%YJR9u_ovwWu(yqpIldAMVm+*Ze{H^cb&)rvS0Mg)~)H~Ah z>>+Y(vx`%UahE~O`$Uj>!o8i6`3WS+KicOk6IAqEX62Qs3GMmC;}oUPn>}J5`wNS6 zrG$ajwh(pNr TWDG@ql%=e;hI zFM+aiY|h2cYvgW2zo~P4@mSawYP%%?RPExYTq75}#3(G!Nu2qV5Hn#Cqi}o#$jDHl zuj+XxhY}cDLI8 YVr)dvVvx{^8oc;TRyf9CSL@E(5l;8)VfY`yNRh$q)NZ(eh>;6G}=Tw?|*5 i3XiVGuk?mhJ}^3Ms2`5X=5=Pv?i|0?Kx zf8J;t-6M0rw^u9pa6XrAygvzIsKL35^%lWM0q%& D@;yuFem3H%N4h z^a!w?ozyOhAJ-!1(u2Mpz w+AU!(tDR2Io z9S|%iI+iLw;%8aU$<>8-qN`XN20}XvZQhDp+q?R2O_eza8SrCXT=IcB{_t>Yc(hS- z9%jPu9%DHWJ!nv-go(0htzp6Iy ;=fH}%@Q8-z{ zjmVar-k?!72#7x)J}uW}So@kiW`WYGE0;ZzwYdK6?)`iC({2D5EEI%@+Lz>| 7v!tdnhhP!!7QR+3C9t0bW%F;I;3fSwB7%&^IdxKoqg^e@=o!?zOUD=5q zy;jkS=D_iTA4?zJ`o~dQ($q8of>!N|z=%d^BhD`S+#us^N@Ii5-O6l&-AL&dr!n z=3QSleG!o_$#+9qUjam9(g$oXz7Tm_mG6pwOtHnPf;3K-R*;bM%lw{fOh0o|7qYQZ zlHMr^_$j$?N;xq@WV{UOg)TgQ6*7!}jrE4E4ugj;zDkCkM`%sHH?}54#Z0r^G(m$- z>u^FyhD&s-k{{6yvi<2pgQF*@jt3!@tK-o%OpP`mL;8L*Cbv}i^V7k>`6hn>Y0&=q zh(0|tsf}Z0P7yqOB61G)N4`s^cA5OaVtVs*V@@_J?{u+OZbf;&SRVts@e(Gv%v)di z>b c6icPhg5z}B)>6ZGa%Sbx>-}E-9}(R+g4cMBa(XF(FD1- zNju2BMe}bXtJCqH{Z$fzeMq^rPZM)O2FfPOa6yy0gu|l*2P{EiIE}u8j#0>X<=AeT zWL#xJX035aOq~{a318@ga$&BLICn(I5K^or)(#pLQMC=anx#b;9o5H-0YfR&cx|%u z{!vBVZh)u`g%?GNeD &pXS!Fu8)2x5c zPp&;{YVx5UC2>c*qi6Y$Eegosnx%6g1Bx2q5VR 7RDW* zZ$HJoU`yt5_+EJkGeI#339wmNd_lX6P>ZP!bgp$J ohi#)@SP}j#;)5qAinC5v*D~*#D&mHD)_@a9wsAsCc zA5$Z2&jk@hGmocP^E~AGS@uTTeG-3Rk6}=C((Y1v$~#>KNVtv%Ibb68i `aW56l!(ybjb$7-;>z%cC5tcFITEZRW~s zgbQ~KE=HhSU5gBYNlXwZHnPc_qyhDW-h++4hT*fgX(k$m>u_%+IpfP!y#P=-O)?i^ z^eJ5`mc!|L2Y5mA-PqH?)AE2&@COi4L?pb0cYUuSeO?zoY-{&Z=X2Nn_a%uXp8;f( zuC|9yXsFNa sCZ)glb4nAK~kpdEu $$o}fNT&|xje z$r)&-Culy{(5L@+V0kZ*K%D^%9mGv@-R=lW7D{Sr0TwnA8q75S*y(=80uQE)@L!81 z^Y~0Y8h643z*VgH#H=>vK-Hk`k}4VE5q#7-=Xop1>{p4`K{KW6<&OuqpaEjYN%<}S zrC?$J_)53yo&ociz3A7=%Lsj`hdn^aqSwqdZcIm%CGY+Dni9ttOlL#lgvv|t@wSCS ze{*tY5!6B1o~Ior ;J9-1PEGtBqw>RRaNi8NZUP|d?I;{^Ux^?T zM&JGwV-UH`*|uMTZ$x#y+2sA70*7C)m`YX(QCh#{vG)tR43o;%ghwnW`jOt<3wXtb zL}0exo3kPiQf;hEs}8^j<{X93WM%K=zS3Ja%PcA?D$&gyGz5ZX0BA$}f2y|Z{F*f4kbnR87uSPnOn^5?f7 z=R@A2@fLWSR>uJ?t@7TlFAfH7rurDt;Cmizlx{cBbqUkJo{Qgg698eCnpyaTS(bHb zDyV|9v&f|yG@tPCFJBxgX#OExdm!?krE3Ym!V1nYVAMF0vFz4pLMb4?{W$dN>F))h zm9u*QwBnCM?46*Xk`acA1;zq#%e0Gsu2KibW|pn0K*8w1;}S!5&MzK I+!vV_)Z3}I&Ud# LPY;PN05@HFNdv^_pNW+y!4jRU?YdHc+YsKW$n(Gm;7C5YNTjV~RD70P)G%1+? z;JD^_Dr(LOzd#ZK>k7Zz^3_$R%`&}K2tib57*7y75I#_lQ!^>PN(0L&{>RYYL}n0? z9EouUIx@RDiw~RPHM-#O1DDFz@-)hJ)C)(Q4UrS)=K(gbprDW&zk96MD4gyb>T)qEd&T^4(y(^eFKTszxx zXwMZIijKaeqV5{dJP!ohY!BFU3m5yg)Wht*d`&4rt$Fh3u87t-S9-tCArc{xb-g!$ zQ9Msg?#=id*85<-`(#K+$!2|Eb@6tBo4Sk*51R>thK &vDreiud z1OQww2q`Cm)NwBlC#<^j6|nJGiL4LU(k}AbGU^kAInpbg0glRrT s6;H2j>I3nWJ#(P>=2&wuD9+5Sf`vM6LgYVAV`m}-Cst*iq`Ds33r7@)pD z;N1(BKTHop>%!)}hCF)%fG+`XC-*v*C9rYW%PM>aw4dSNAnmW%YBCc6bWY>*9rjw! zCl;Eo=Bji%BD_4!A+0|%`ZAz#e${DyI+~D^lS7b;!)wa_Wqg+lzq`@_#ph7DWL-}b zDSca