From 35b587960a746e44774664872cc02985c90bdd2f Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 30 May 2026 12:17:38 +0000 Subject: [PATCH 1/7] Commit subgraph/abis + subgraph/generated; use rainix-subgraph-test reusable Resolves #2605. - Add script/build-subgraph.sh: copies the 3 ABIs subgraph.yaml needs from out/ to subgraph/abis/, runs npm ci + graph codegen. Picked up by rainix-copy-artifacts.yaml's build-subgraph.sh hook (rainlanguage/rainix#210); the git diff --exit-code gate catches drift. - Commit subgraph/abis/{Raindex,ERC20,DecimalFloat}.json and subgraph/generated/ (un-gitignored). - .prettierignore: skip subgraph/abis/ so the raw forge JSONs match the copy-artifacts regen byte-for-byte. - subgraph.yaml: ../out/*.sol/*.json -> ./abis/*.json. - test-subgraph.yml: thin wrapper over rainix-subgraph-test reusable (matchstick over committed bindings in the slim subgraph-shell, no forge build or graph codegen on the test path). - Bump rainix to 6ffb49299 (post-#210). Co-Authored-By: Claude Opus 4.7 --- .github/workflows/test-subgraph.yml | 52 +- .prettierignore | 4 + flake.lock | 6 +- script/build-subgraph.sh | 14 + subgraph/.gitignore | 1 - subgraph/abis/DecimalFloat.json | 1 + subgraph/abis/ERC20.json | 1 + subgraph/abis/Raindex.json | 1 + subgraph/generated/Raindex/DecimalFloat.ts | 996 ++++++++ subgraph/generated/Raindex/ERC20.ts | 366 +++ subgraph/generated/Raindex/Raindex.ts | 2458 ++++++++++++++++++++ subgraph/generated/schema.ts | 2247 ++++++++++++++++++ subgraph/subgraph.yaml | 6 +- 13 files changed, 6098 insertions(+), 55 deletions(-) create mode 100644 .prettierignore create mode 100755 script/build-subgraph.sh create mode 100644 subgraph/abis/DecimalFloat.json create mode 100644 subgraph/abis/ERC20.json create mode 100644 subgraph/abis/Raindex.json create mode 100644 subgraph/generated/Raindex/DecimalFloat.ts create mode 100644 subgraph/generated/Raindex/ERC20.ts create mode 100644 subgraph/generated/Raindex/Raindex.ts create mode 100644 subgraph/generated/schema.ts diff --git a/.github/workflows/test-subgraph.yml b/.github/workflows/test-subgraph.yml index c832d090c4..2064b5fa99 100644 --- a/.github/workflows/test-subgraph.yml +++ b/.github/workflows/test-subgraph.yml @@ -1,50 +1,6 @@ name: Subgraph unit tests -on: - push: - branches: - - main - pull_request: -concurrency: - group: ${{ github.ref }}-subgraph - cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} +on: [push] jobs: - test: - permissions: - id-token: write - contents: read - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Free disk space - uses: jlumbroso/free-disk-space@v1.3.1 - - uses: nixbuild/nix-quick-install-action@v30 - with: - nix_conf: | - keep-env-derivations = true - keep-outputs = true - - name: Restore and save Nix store - uses: nix-community/cache-nix-action@v6 - with: - # restore and save a cache using this key - primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} - # if there's no cache hit, restore a cache by this prefix - restore-prefixes-first-match: nix-${{ runner.os }}- - # collect garbage until the Nix store size (in bytes) is at most this number - # before trying to save a new cache - # 1G = 1073741824 - gc-max-store-size-linux: 1G - - name: Install Soldeer dependencies - run: nix develop -c forge soldeer install - - name: Build subgraph - run: nix develop -c subgraph-build - - name: Matchstick tests - run: nix develop -c subgraph-test - # forwards status to telegram chat if this ci fails or gets canceled, only runs for default branch - - name: Forward CI Status - if: always() - uses: rainlanguage/github-chore/.github/actions/telegram-status-report@main - with: - status: ${{ job.status }} - telegram-bot-token: ${{ secrets.TELEGRAM_BOT_TOKEN }} - telegram-chat-id: ${{ secrets.TELEGRAM_CHAT_ID }} + subgraph-test: + uses: rainlanguage/rainix/.github/workflows/rainix-subgraph-test.yaml@main + secrets: inherit diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..86367cc9da --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Forge-emitted ABIs are copied verbatim by script/build-subgraph.sh; keeping +# them raw means rainix-copy-artifacts' regen + `git diff --exit-code` gate +# matches what forge build produces. +subgraph/abis/ diff --git a/flake.lock b/flake.lock index 83ff2fcda9..622ea27e05 100644 --- a/flake.lock +++ b/flake.lock @@ -499,11 +499,11 @@ "solc": "solc_2" }, "locked": { - "lastModified": 1779906039, - "narHash": "sha256-NKMWv+iiirFgjOLPPlKsUA7chNzRrZd+6LFMei2M8HQ=", + "lastModified": 1780142871, + "narHash": "sha256-tCxXuup8vJKUsaBuEpKijphLRDyt1z1zMYjEZhVnCvI=", "owner": "rainlanguage", "repo": "rainix", - "rev": "660d0efe84a3ed1c8a7ef5b8493db53e4a12fe04", + "rev": "6ffb49299ff5756d4307225c2144a404dbc14c13", "type": "github" }, "original": { diff --git a/script/build-subgraph.sh b/script/build-subgraph.sh new file mode 100755 index 0000000000..e7cfacb0d2 --- /dev/null +++ b/script/build-subgraph.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# SPDX-License-Identifier: LicenseRef-DCL-1.0 +# SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd + +set -euxo pipefail + +mkdir -p subgraph/abis +cp out/RaindexV6.sol/RaindexV6.json subgraph/abis/Raindex.json +cp out/ERC20.sol/ERC20.json subgraph/abis/ERC20.json +cp out/DecimalFloat.sol/DecimalFloat.json subgraph/abis/DecimalFloat.json + +cd subgraph +npm ci +graph codegen diff --git a/subgraph/.gitignore b/subgraph/.gitignore index 65117f3fca..e00bd45070 100644 --- a/subgraph/.gitignore +++ b/subgraph/.gitignore @@ -1,4 +1,3 @@ node_modules -generated build .bin \ No newline at end of file diff --git a/subgraph/abis/DecimalFloat.json b/subgraph/abis/DecimalFloat.json new file mode 100644 index 0000000000..be9354bc77 --- /dev/null +++ b/subgraph/abis/DecimalFloat.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"FORMAT_DEFAULT_SCIENTIFIC_MAX","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"FORMAT_DEFAULT_SCIENTIFIC_MIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"abs","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"add","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"ceil","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"div","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"e","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"eq","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"floor","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"format","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"scientific","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"format","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"format","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"scientificMin","type":"bytes32","internalType":"Float"},{"name":"scientificMax","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"frac","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"fromFixedDecimalLossless","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"fromFixedDecimalLossy","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"},{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"gt","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"gte","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"integer","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"inv","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"isZero","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"log10","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"lt","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"lte","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"max","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"maxNegativeValue","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"maxPositiveValue","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"min","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"minNegativeValue","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"minPositiveValue","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"minus","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"mul","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"parse","inputs":[{"name":"str","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"pow","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"pow10","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"sqrt","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"sub","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"toFixedDecimalLossless","inputs":[{"name":"float","type":"bytes32","internalType":"Float"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"toFixedDecimalLossy","inputs":[{"name":"float","type":"bytes32","internalType":"Float"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"zero","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"error","name":"CoefficientOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"DivisionByZero","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ExponentOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ExponentUnderflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"FixedDecimalOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"Log10Negative","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"Log10Zero","inputs":[]},{"type":"error","name":"LogTablesNotDeployed","inputs":[{"name":"tablesAddress","type":"address","internalType":"address"},{"name":"expectedCodehash","type":"bytes32","internalType":"bytes32"},{"name":"actualCodehash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"LossyConversionFromFloat","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"LossyConversionToFloat","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"MaximizeOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"MulDivOverflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NegativeFixedDecimalConversion","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"PowNegativeBase","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ScientificMinNotLessThanMax","inputs":[{"name":"scientificMin","type":"bytes32","internalType":"Float"},{"name":"scientificMax","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"UnformatableExponent","inputs":[{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"WithTargetExponentOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"},{"name":"targetExponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ZeroNegativePower","inputs":[{"name":"b","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"ZeroStringStartPointer","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b5060156019565b60b8565b73c51a14251b0dcf0ae24a96b7153991378938f5f53f7f2573004ac3a9ee7fc8d73654d76386f1b6b99e34cdf86a689c4691e47143420f811460b557604051630912d0ff60e31b815273c51a14251b0dcf0ae24a96b7153991378938f5f560048201527f2573004ac3a9ee7fc8d73654d76386f1b6b99e34cdf86a689c4691e47143420f60248201526044810182905260640160405180910390fd5b50565b613c87806100c55f395ff3fe608060405234801561000f575f80fd5b506004361061029d575f3560e01c806381f7e2f511610171578063cde72ef3116100d2578063dd64691711610088578063e5526ecd1161006e578063e5526ecd146105e4578063e75f991f146105f7578063ffae15ba1461060a575f80fd5b8063dd646917146105be578063e0db5888146105d1575f80fd5b8063d1de592a116100b8578063d1de592a14610571578063d35273a714610584578063d3d6ffa8146105ab575f80fd5b8063cde72ef314610551578063d102b4d31461055e575f80fd5b8063a19684b711610127578063bc1b392d1161010d578063bc1b392d146104f2578063bc62d8d8146104f8578063cb09682b1461052b575f80fd5b8063a19684b7146104d2578063a90d041a146104df575f80fd5b806396ce1ec71161015757806396ce1ec7146104885780639b4afd991461049b578063a100a3d9146104bf575f80fd5b806381f7e2f5146104625780638dc2980714610475575f80fd5b80633447c0301161021b5780635ca0e7a4116101d1578063719cd99d116101b7578063719cd99d1461042957806373bfb2831461043c57806381a822721461044f575f80fd5b80635ca0e7a4146103f0578063602c35fc14610403575f80fd5b80633b3bd868116102015780633b3bd868146103b757806341aa0080146103ca5780635b23771d146103dd575f80fd5b80633447c03014610374578063371493ce14610397575f80fd5b80631ee62f111161027057806328fa1f011161025657806328fa1f011461033b5780633004fa411461034e5780633029740014610361575f80fd5b80631ee62f11146103155780632538835014610328575f80fd5b806304327dc5146102a1578063078b665b146102c75780630b6429bc146102da578063146e82ad14610302575b5f80fd5b6102b46102af3660046137cd565b610630565b6040519081526020015b60405180910390f35b6102b46102d53660046137e4565b610640565b6102ed6102e8366004613814565b610652565b604080519283529015156020830152016102be565b6102b46103103660046137cd565b61066a565b6102b46103233660046137cd565b610689565b6102b46103363660046137cd565b6106a8565b6102b46103493660046137cd565b6106c7565b6102b461035c3660046137e4565b6106d1565b6102b461036f3660046137e4565b6106f1565b6103876103823660046137e4565b6106fc565b60405190151581526020016102be565b6103aa6103a536600461383e565b610707565b6040516102be9190613870565b6102b46103c5366004613814565b610713565b6102b46103d83660046137e4565b61071e565b6102b46103eb366004613814565b610729565b6102b46103fe3660046137cd565b610734565b7f80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102b4565b6102b46104373660046137cd565b61073e565b61038761044a3660046137e4565b610748565b6102b461045d3660046137cd565b610753565b6103876104703660046137e4565b61075d565b6103876104833660046137e4565b610768565b6102b46104963660046137e4565b610773565b6102b47c090000000000000000000000000000000000000000000000000000000181565b6103aa6104cd3660046137cd565b61077e565b6001600160ff1b016102b4565b6102b46104ed3660046137e4565b6107c8565b5f6102b4565b61050b6105063660046138b9565b6107d3565b604080516001600160e01b031990931683526020830191909152016102be565b7f7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffff6102b4565b63ffffffff60df1b6102b4565b61038761056c3660046137e4565b6107ec565b6102b461057f3660046137e4565b6107f7565b6102b47ffffffffc0000000000000000000000000000000000000000000000000000000181565b6102b46105b93660046137cd565b610802565b6103876105cc3660046137cd565b61080c565b6102b46105df3660046137cd565b61081d565b6103aa6105f2366004613964565b610827565b6102ed610605366004613814565b610897565b7fffffffbe19cfc6ef4f44cf88f14500d013df534fcaad48fca1d5ca47bea26fcc6102b4565b5f61063a826108a3565b92915050565b5f61064b83836108d0565b9392505050565b5f8061065e84846108ec565b915091505b9250929050565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f5610918565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f5610944565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f561097c565b5f61063a8261099a565b5f61064b838373c51a14251b0dcf0ae24a96b7153991378938f5f56109c6565b5f61064b8383610baf565b5f61064b8383610bfc565b606061064b8383610c35565b5f61064b8383610c97565b5f61064b8383610cb2565b5f61064b8383610ce2565b5f61063a82610d00565b5f61063a82610d7d565b5f61064b8383610df0565b5f61063a82610e2b565b5f61064b8383610e5b565b5f61064b8383610e96565b5f61064b8383610ed0565b606061063a827ffffffffc000000000000000000000000000000000000000000000000000000017c0900000000000000000000000000000000000000000000000000000001610827565b5f61064b8383610f00565b5f805f806107e085610f0b565b90969095509350505050565b5f61064b8383610faf565b5f61064b8383610fe9565b5f61063a82611019565b5f6001600160e01b0382161561063a565b5f61063a82611036565b60606108338383610faf565b61085f57604051630ef96fe560e21b815260048101849052602481018390526044015b60405180910390fd5b5f61086985610e2b565b905061088e856108798387610faf565b8061088957506108898386610e96565b610c35565b95945050505050565b5f8061065e8484611062565b5f6001600160e01b038216601b0b60e083901d6108c082826110a2565b90925090505f61088e83836110cc565b5f6108db8383610e96565b6108e5578161064b565b5090919050565b5f806001600160e01b038416601b0b60e085901d61090b828287611119565b9350935050509250929050565b5f61064b837fffffffff00000000000000000000000000000000000000000000000000000005846109c6565b5f6001600160e01b038316601b0b60e084901d610962848383611282565b90925090505f61097283836110cc565b9695505050505050565b5f6001600160e01b038316601b0b60e084901d6109628483836113b7565b5f6001600160e01b038216601b0b60e083901d826109b88383611619565b9150505f61097282846110cc565b5f6001600160e01b03848116601b0b9060e086901d9085166109ee57506001915061064b9050565b5f8213610a5557815f03610a3257610a06855f610faf565b15610a27576040516345f414b960e11b815260048101869052602401610856565b505f915061064b9050565b60405163cceba0f160e01b81526004810183905260248101829052604401610856565b610a60856001610bfc565b8015610a715750610a71865f610e96565b15610a8057859250505061064b565b610a8a855f610faf565b15610ab357610aaa610a9b876108a3565b610aa487611019565b866109c6565b9250505061064b565b6001600160e01b038516601b0b60e086901d5f80610ad18484611619565b915091505f610ae183855f611663565b905060015f8080610b038f6001600160e01b038116601b0b9160e09190911d90565b915091505b60018510610b4a5784600116600103610b2d57610b2784848484611748565b90945092505b600185901c9450610b4082828484611748565b9092509050610b08565b5f80610b578f8e8e6113b7565b91509150610b6782828a8d611748565b9092509050610b778f8383611282565b9092509050610b8882828888611748565b90925090505f610b9883836110cc565b9e5050505050505050505050505050509392505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686611867565b915091505f610bee83836110cc565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610c2a84848484611da7565b979650505050505050565b60606001600160e01b038316601b0b60e084901d5f829003610c7457604051806040016040528060018152602001600360fc1b8152509250505061063a565b8315610c8d57610c848282611dbe565b9250505061063a565b61088e8282612041565b5f805f610ca485856125ab565b9150915061088e82826125f4565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf8686868661262d565b5f6001600160e01b038316601b0b60e084901d61088e828286612657565b5f6001600160e01b038216601b0b60e083901d828112610d2257509192915050565b5f80610d2e8484611619565b915091505f84128015610d4057508015155b15610d7257610d6d8284760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b1961262d565b935091505b5f610c2a83856110cc565b5f6001600160e01b038216601b0b60e083901d828112610d9f57509192915050565b5f80610dab8484611619565b91509150805f03610dc0575093949350505050565b5f811315610d7257610d6d8284760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b19612699565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610e1e84848484612797565b1315979650505050505050565b5f6001600160e01b038216601b0b60e083901d82821215610e50576108c0828261286b565b5f61088e83836110cc565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610e8984848484612797565b1215979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610ec484848484612797565b12979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686611748565b5f6108db8383610faf565b80515f90819060208481019185010182808080610f2886866128c0565b929650909450925090506001600160e01b031984165f03610fa057848303610f89575f80610f568484612c0f565b9150915080610f78575063195c5c5f60e11b9a5f9a5098505050505050505050565b505f9a909950975050505050505050565b5063ad384e8760e01b985f98509650505050505050565b5091975f975095505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610fdd84848484612797565b13979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686612699565b5f6001600160e01b038216601b0b60e083901d6108c0828261286b565b5f6001600160e01b038216601b0b60e083901d826110548383611619565b5090505f61097282846110cc565b5f805f805f6110718787612ce7565b9250925092505f806110838585612c0f565b91509150818380156110925750815b9650965050505050509250929050565b5f8061065e760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b198686611867565b5f805f6110d98585612c0f565b91509150801580156110e9575081155b1561111157604051638eba4d0760e01b81526004810186905260248101859052604401610856565b509392505050565b5f805f85121561114657604051634a7d166b60e01b81526004810186905260248101859052604401610856565b845f0361115857505f9050600161127a565b8460ff841685018581121561118a5760405163d556b11160e01b81526004810188905260248101879052604401610856565b5f805f8312156111d657604c198312156111ad575f80955095505050505061127a565b825f03600a0a91508184816111c4576111c461398d565b049550508402909114915061127a9050565b5f83131561126f57604d8313156112135760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610856565b82600a0a9150815f19816112295761122961398d565b0484111561125d5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610856565b509190910292506001915061127a9050565b509193506001925050505b935093915050565b5f805f8412156112be57611296848461286b565b90945092506112a6858585611282565b90945092506112b584846110a2565b9150915061127a565b5f806112ca8686611619565b9092509050845f80806112dd8585612d2a565b9194509250905061270d6127106112f56001826139b5565b851461130c576113068d8686612dbf565b90925090505b8315611379575f61131e8660016139db565b90505b8084858302816113335761133361398d565b051461134a57600a84059350600a88059750611321565b61136d6113578588613a02565b896113628785613a02565b8f8787600319612e78565b909d509b506113829050565b819b506003199a505b50505050508661139384835f611663565b61139e8860016139db565b6113a891906139db565b94509450505050935093915050565b5f8083836113c58282612f15565b90965094505f861361141457855f036113f15760405163561fc7b560e01b815260040160405180910390fd5b604051635d3fd4db60e01b81526004810183905260248101829052604401610856565b505083760161bcca7119915b50764b4abe86529797775a5f171951604c1b0361144c5761144283604c6139db565b5f9150915061127a565b760161bcca7119915b50764b4abe86529797775a5f171951604c1b8412158061147757604a1961147b565b604b195b5f0b84126115dd575f805f805f8561149457604b611497565b604c5b6114a1908a6139db565b90505f80876114ce577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000006114ef565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca0000000000000000005b6001600160f81b03169050808c816115095761150961398d565b05818102955090850193506103e7190190506115258c82612f52565b7d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000000295508594508a84146115ab57612327811461158c576115678c82600101612f52565b7d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000026115a8565b760161bcca7119915b50764b4abe86529797775a5f171951604c1b5b94505b506115bd838b848c8989604b19612e78565b909a5098506115ce8a8a835f612699565b9750975050505050505061127a565b6115e785856110a2565b90955093506115f78686866113b7565b9095509350611606858561286b565b925092505061127a565b50935093915050565b5f805f831261162c57508290505f610663565b604b1983121561164057505f905082610663565b5f839003600a0a8085816116565761165661398d565b0794859003959350505050565b5f81830361167257508261064b565b828213156116b557828203604c81138061168c57505f8113155b1561169a575f91505061064b565b80600a0a85816116ac576116ac61398d565b0591505061064b565b818303604c8113806116c757505f8113155b156116f6576040516301d5d6d160e41b8152600481018690526024810185905260448101849052606401610856565b600a81900a8581028682828161170e5761170e61398d565b051461173e576040516301d5d6d160e41b8152600481018890526024810187905260448101869052606401610856565b925061064b915050565b5f8085158415178015611760575f92505f915061185d565b61176a84876139db565b91505f61177688612fd9565b90505f61178287612fd9565b90505f61178f8383613007565b5090505f6f0785ee10d5da46d900f436a0000000008211156117c4576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a76400008211156117e557670de0b6b3a7640000820491506012015b633b9aca008211156117fe57633b9aca00820491506009015b61271082111561181357612710820491506004015b811561182757600a82049150600101611813565b61183181876139db565b95506118538b8a61184d878761184887600a613b11565b613023565b896130ef565b9097509550505050505b5094509492505050565b5f80835f0361189357604051637a97930f60e01b81526004810187905260248101869052604401610856565b855f036118a457505f905080611d9e565b5f805f806118b28a8a61318f565b919b50995091506118c3888861318f565b919950975090505f6118d48b612fd9565b90505f6118e08a612fd9565b9050760161bcca7119915b50764b4abe86529797775a5f171951604c1b604c81831015611c9f57841561193157507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b611c77565b6f4b3b4ca85a86c47a098a224000000000831015611a5d57678ac7230489e800008310156119c1576402540be40083101561198f57620186a083101561197f5750620186a090506005611c38565b506402540be4009050600a611c38565b655af3107a40008310156119ae5750655af3107a40009050600e611c38565b50678ac7230489e8000090506013611c38565b6b204fce5e3e25026110000000831015611a135769152d02c7e14af68000008310156119fc575069152d02c7e14af680000090506017611c38565b506b204fce5e3e250261100000009050601c611c38565b6d314dc6448d9338c15b0a00000000831015611a4257506d314dc6448d9338c15b0a0000000090506021611c38565b506f4b3b4ca85a86c47a098a22400000000090506026611c38565b780197d4df19d605767337e9f14d3eec8920e400000000000000831015611b555773af298d050e4395d69670b12b7f41000000000000831015611af0577172cb5bd86321e38cb6ce6682e80000000000831015611ad157507172cb5bd86321e38cb6ce6682e800000000009050602b611c38565b5073af298d050e4395d69670b12b7f4100000000000090506030611c38565b76010b46c6cdd6e3e0828f4db456ff0c8ea0000000000000831015611b31575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035611c38565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a611c38565b7c03b58e88c75313ec9d329eaaa18fb92f75215b17100000000000000000831015611beb577a026e4d30eccc3215dd8f3157d27e23acbdcfe68000000000000000831015611bc357507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f611c38565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044611c38565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000831015611c3857507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b818311611c4d57600a820491505f1901611c38565b815f03611c77576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610856565b85611c9f576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610856565b80600160ff1b018d12611cb657808d039c50611cf4565b600160ff1b9c90038c015f811315611cf457806001600160ff1b03038b13611ce157998a0199611cf4565b5f80995099505050505050505050611d9e565b5f808e128015611d0357505f8c135b15611d2457600160ff1b8e01808d13611d1c575f611d20565b808d035b9150505b8b818f01039750611d418f8e611d3b888789613023565b8b6130ef565b90995097505f811315611d8b57604c811315611d6b575f809a509a50505050505050505050611d9e565b80600a0a8981611d7d57611d7d61398d565b059850885f03611d8b575f97505b50969850949650611d9e95505050505050565b94509492505050565b5f611db485858585612797565b1495945050505050565b6060611dca8383612f15565b90935091505f80611df5760161bcca7119915b50764b4abe86529797775a5f171951604c1b86613b1c565b15611e1f5750760161bcca7119915b50764b4abe86529797775a5f171951604c1b9050604c611e3f565b507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b5b5f611e4a8387613b1c565b90505f611e578488613b48565b90505f80831215611e7157506001611e6e83613b5b565b92505b5f821215611e8857506001611e8582613b5b565b91505b60408051602081019091525f81528215611f73575f80611ea9600a89613b6f565b90505b611eb68186613b1c565b5f03611edb57611ec7600a82613b6f565b905081611ed381613b82565b925050611eac565b60408051602081019091525f8082525b83811015611f1e5781604051602001611f049190613bb1565b60408051601f198184030181529190529150600101611eeb565b505b611f2b600a87613b48565b5f03611f4357611f3c600a87613b1c565b9550611f20565b80611f4d876133e9565b604051602001611f5e929190613bcd565b60405160208183030381529060405293505050505b5f611f7d856133e9565b90505f611f8a878b6139db565b90505f8115611fc057611f9c826133e9565b604051602001611fac9190613bf3565b604051602081830303815290604052611fd0565b60405180602001604052805f8152505b90505f85611fec5760405180602001604052805f815250612007565b604051806040016040528060018152602001602d60f81b8152505b9050808486846040516020016120209493929190613c08565b6040516020818303038152906040529a505050505050505050505092915050565b60606103e882138061205c57506120596103e8613b5b565b82125b1561207d57604051630e44c72b60e41b815260048101839052602401610856565b5f8084129081156120985761209185613b5b565b905061209b565b50835b5f6120a582613459565b80519091505f5b81811080156120f4575082816120c3600185613c28565b6120cd9190613c28565b815181106120dd576120dd613c3b565b6020910101516001600160f81b031916600360fc1b145b1561210b578061210381613b82565b9150506120ac565b5f6121168284613c28565b90505f612123838a6139db565b90505f8761213f5760405180602001604052805f81525061215a565b604051806040016040528060018152602001602d60f81b8152505b90505f821261228857815f61216f8286613c4f565b67ffffffffffffffff811115612187576121876138a5565b6040519080825280601f01601f1916602001820160405280156121b1576020820181803683370190505b5090505f5b8581101561220b578881815181106121d0576121d0613c3b565b602001015160f81c60f81b8282815181106121ed576121ed613c3b565b60200101906001600160f81b03191690815f1a9053506001016121b6565b505f5b8281101561225457600360fc1b826122268389613c4f565b8151811061223657612236613c3b565b60200101906001600160f81b03191690815f1a90535060010161220e565b508281604051602001612268929190613c62565b6040516020818303038152906040529a505050505050505050505061063a565b5f61229283613b5b565b90508084111561242d575f6122a78286613c28565b90505f6122b5866001613c4f565b67ffffffffffffffff8111156122cd576122cd6138a5565b6040519080825280601f01601f1916602001820160405280156122f7576020820181803683370190505b5090505f5b828110156123515789818151811061231657612316613c3b565b602001015160f81c60f81b82828151811061233357612333613c3b565b60200101906001600160f81b03191690815f1a9053506001016122fc565b50601760f91b81838151811061236957612369613c3b565b60200101906001600160f81b03191690815f1a9053505f5b838110156123f857896123948285613c4f565b815181106123a4576123a4613c3b565b01602001516001600160f81b03191682826123c0866001613c4f565b6123ca9190613c4f565b815181106123da576123da613c3b565b60200101906001600160f81b03191690815f1a905350600101612381565b50838160405160200161240c929190613c62565b6040516020818303038152906040529b50505050505050505050505061063a565b5f6124388583613c28565b90505f85612447836002613c4f565b6124519190613c4f565b67ffffffffffffffff811115612469576124696138a5565b6040519080825280601f01601f191660200182016040528015612493576020820181803683370190505b509050600360fc1b815f815181106124ad576124ad613c3b565b60200101906001600160f81b03191690815f1a905350601760f91b816001815181106124db576124db613c3b565b60200101906001600160f81b03191690815f1a9053505f5b8281101561253a57600360fc1b8261250c836002613c4f565b8151811061251c5761251c613c3b565b60200101906001600160f81b03191690815f1a9053506001016124f3565b505f5b868110156123f85789818151811061255757612557613c3b565b01602001516001600160f81b0319168282612573866002613c4f565b61257d9190613c4f565b8151811061258d5761258d613c3b565b60200101906001600160f81b03191690815f1a90535060010161253d565b5f805f805f6125ba8787612ce7565b925092509250806125e857604051636238bcb360e11b81526004810184905260248101839052604401610856565b50909590945092505050565b5f805f6126018585612c0f565b9150915080611111576040516322c9f7bb60e01b81526004810186905260248101859052604401610856565b5f80612639848461286b565b909450925061264a86868686612699565b9150915094509492505050565b5f805f612665868686611119565b91509150806126905760405162bc8ecf60e31b81526004810187905260248101869052604401610856565b50949350505050565b5f80851584151780156126c557865f036126b95784849250925050611d9e565b86869250925050611d9e565b6126cf8787612f15565b90975095506126de8585612f15565b9095509350858413156126f2579395929492935b838603604c81111561270b578787935093505050611d9e565b80600a0a868161271d5761271d61398d565b0595505086850180881860ff90811c151589881890911c1516801561278657876001600160ff1b030361276d5760405163d556b11160e01b8152600481018a905260248101899052604401610856565b600a96879005969098058601976001979097019661278a565b8198505b5096979596505050505050565b5f80851584151781871282861218178584141780156127bc5786859250925050611d9e565b505f858413156127d0575092949193919260015b8386035f8112604c82131780156128035782156127f5575f8994509450505050611d9e565b885f94509450505050611d9e565b600a82900a8981028a82828161281b5761281b61398d565b0514612847578415612837575f8b965096505050505050611d9e565b8a5f965096505050505050611d9e565b841561285c578896509450611d9e9350505050565b9550879450611d9e9350505050565b5f80600160ff1b84036128b6576001600160ff1b0383036128a95760405163d556b11160e01b81526004810185905260248101849052604401610856565b600a840593508260010192505b50505f9190910391565b5f8281806128d58386652000000000006134f6565b925085831415836128ef81886703ff0000000000006134f6565b945080850361291057506334bd206960e01b94505f9250829150612c069050565b5f8061291c8a8861351f565b90925090506001600160e01b0319821615612942575095505f9350839250612c06915050565b86519095506540000000000060015f9290921a9190911b161515888710169150508015612afd57506001909301925f8461298581896703ff0000000000006134f6565b95508086036129a75750637bfa48af60e01b95505f9350839250612c06915050565b855b5f1981018051908a1160015f9290921a9190911b6601000000000000161515166001036129d8575f19016129a9565b818114612a17575f806129eb848461351f565b90925090506001600160e01b0319821615612a13575097505f9550859450612c069350505050565b9350505b5f831215612a395750637bfa48af60e01b96505f9450849350612c0692505050565b8315612a4557825f0392505b80820394505f851315612a6b5750629d955560e11b96505f9450849350612c0692505050565b855f03612a7a57829550612afa565b5f8590036043811115612aa2575063195c5c5f60e11b97505f9550859450612c069350505050565b600a0a8681025f88838381612ab957612ab961398d565b0514159050601b82900b8214158180612acf5750805b15612af2575063195c5c5f60e11b9a505f9850889750612c069650505050505050565b505084019650505b50505b84516c2000000020000000000000000060015f9290921a9190911b161515878610168015612bf75760019095019485612b3d818a652000000000006134f6565b965086612b53818b6703ff0000000000006134f6565b9750808803612b765750629d955560e11b97505f9550859450612c069350505050565b505f80612b83838a61351f565b90925090506001600160e01b0319821615612bab575097505f9550859450612c069350505050565b9250508482015f83138015612bbf57508581125b80612bd357505f83128015612bd357508581135b15612bf3575063d556b11160e01b97505f9550859450612c069350505050565b9450505b845f03612c02575f93505b5050505b92959194509250565b5f601b83900b8314838382612c73577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515612c5357620186a0860595506005850194505b8586601b0b14612c6e57600a86059550846001019450612c53565b612c89565b855f03612c8957505f9250600191506106639050565b848560030b14612ccc575f851215612ca957505f92508291506106639050565b60405163d556b11160e01b81526004810183905260248101829052604401610856565b50506001600160e01b03841660e084901b1791509250929050565b5f808060ff841681036001600160ff1b03861115612d1957600a860460018201600a88065f1493509350935050612d23565b8593509150600190505b9250925092565b5f805f8360031903612d4457508391505f90506001612d23565b600319841215612d9657604f19841215612d6757505f9150508215156001612d23565b5f846004015f03600a0a90505f818781612d8357612d8361398d565b0594505080840286141592509050612d23565b5f8412612dab57505f91508190506001612d23565b50505060048101600a0a82025f6001612d23565b5f80806064612dd1600a612328613b6f565b612dde600a612328613b6f565b612de9906002613c70565b612df4906001613c4f565b612dfe9190613c4f565b612e089190613c4f565b9050612e4c565b5f8052600280600a8504028301601e833c5f80516107d0840193505f80526001600a8606600a6064880402018501601f853c5f5101949350505050565b612e57858288612e0f565b9250831561161057612e6d600186018288612e0f565b915050935093915050565b5f80888803612e8b575083905081612f09565b5f805f80612e9b8c8b8f8d61262d565b915091505f80612ead8a8a8d8c61262d565b91509150612ebd84848484611748565b8096508197505050505050505f80612ed78b8b8f8d61262d565b915091505f80612ee986868686611867565b915091505f80612efb84848f8e612699565b909a50985050505050505050505b97509795505050505050565b5f805f805f612f24878761318f565b925092509250806125e8576040516305e51ecb60e01b81526004810188905260248101879052604401610856565b5f80612f61600a612328613b6f565b612f6c906002613c70565b612f77906001613c4f565b90505f612f87600a612328613b6f565b90506002600a8504026001015f8052600281601e883c505f51617fff81169350618000811615612fb657918101915b505f80526001600a8506600a6064870402018301601f873c50505f510192915050565b5f80821215612ffe57600160ff1b8203612ff85750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f6130308686613007565b91509150815f036130545783818161304a5761304a61398d565b049250505061064b565b8382106130855760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610856565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f858718121561316b576001600160ff1b038411156131585761311c6001600160ff1b036001613c4f565b84036131305750600160ff1b905081611d9e565b61313b600a85613b6f565b61314490613b5b565b61314f8460016139db565b91509150611d9e565b61316184613b5b565b8391509150611d9e565b6001600160ff1b0384111561318557613144600a85613b6f565b5082905081611d9e565b5f805f845f036131a757505f91508190506001612d23565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03613394576f4b3b4ca85a86c47a098a224000000000850515801561320957507f80000000000000000000000000000000000000000000000000000000000000268412155b1561322a576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561327257507f80000000000000000000000000000000000000000000000000000000000000138412155b1561328b57678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156132d757507f800000000000000000000000000000000000000000000000000000000000000a8412155b156132ed576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561333c57507f80000000000000000000000000000000000000000000000000000000000000028412155b15613352576064850294506002840393506132ed565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561338257506001600160ff1b018412155b1561339457600a850294506001840393505b600a808602908105861480156133b157506001600160ff1b018512155b156133c0578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b60605f82126134065760405180602001604052805f815250613421565b604051806040016040528060018152602001602d60f81b8152505b61343260ff84901d80850118613459565b604051602001613443929190613c62565b6040516020818303038152906040529050919050565b60605f613465836135ca565b60010190505f8167ffffffffffffffff811115613484576134846138a5565b6040519080825280601f01601f1916602001820160405280156134ae576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846134b857509392505050565b5f5b5f82600186515f1a1b16118385101615613517576001840193506134f8565b509192915050565b81515f90819065200000000000600191831a9190911b1615158385101680850190828061354c84886136ab565b90925090506001600160e01b031982161561356f575093505f9250610663915050565b825f036135a0576001600160ff1b03811161358a575f613593565b630fdc263560e01b5b9550935061066392505050565b600160ff1b81116135b1575f6135ba565b630fdc263560e01b5b95505f0393505050509250929050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613612577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061363e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061365c57662386f26fc10000830492506010015b6305f5e1008310613674576305f5e100830492506008015b612710831061368857612710830492506004015b6064831061369a576064830492506002015b600a831061063a5760010192915050565b5f808284106136c557506334bd206960e01b90505f610663565b835f036136e55760405163369a59b560e21b815260040160405180910390fd5b60305f5f198501815b8782101580156136fe5750604d83105b1561372257815160018401935f1990930192600a0a5f9190911a85900302016136ee565b8782106137bf5781515f1a84900360018111156137515750630fdc263560e01b95505f94506106639350505050565b600a84900a810282810183111561377b5750630fdc263560e01b96505f9550610663945050505050565b9190910190505f19909101905b8782106137bf5781515f1a603081146137b35750630fdc263560e01b95505f94506106639350505050565b505f1990910190613788565b5f9890975095505050505050565b5f602082840312156137dd575f80fd5b5035919050565b5f80604083850312156137f5575f80fd5b50508035926020909101359150565b803560ff81168114613002575f80fd5b5f8060408385031215613825575f80fd5b8235915061383560208401613804565b90509250929050565b5f806040838503121561384f575f80fd5b8235915060208301358015158114613865575f80fd5b809150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156138c9575f80fd5b813567ffffffffffffffff808211156138e0575f80fd5b818401915084601f8301126138f3575f80fd5b813581811115613905576139056138a5565b604051601f8201601f19908116603f0116810190838211818310171561392d5761392d6138a5565b81604052828152876020848701011115613945575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f805f60608486031215613976575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181035f8312801583831316838312821617156139d4576139d46139a1565b5092915050565b8082018281125f8312801582168215821617156139fa576139fa6139a1565b505092915050565b8082025f8212600160ff1b84141615613a1d57613a1d6139a1565b818105831482151761063a5761063a6139a1565b600181815b80851115613a6b57815f1904821115613a5157613a516139a1565b80851615613a5e57918102915b93841c9390800290613a36565b509250929050565b5f82613a815750600161063a565b81613a8d57505f61063a565b8160018114613aa35760028114613aad57613ac9565b600191505061063a565b60ff841115613abe57613abe6139a1565b50506001821b61063a565b5060208310610133831016604e8410600b8410161715613aec575081810a61063a565b613af68383613a31565b805f1904821115613b0957613b096139a1565b029392505050565b5f61064b8383613a73565b5f82613b2a57613b2a61398d565b600160ff1b82145f1984141615613b4357613b436139a1565b500590565b5f82613b5657613b5661398d565b500790565b5f600160ff1b8201612ff857612ff86139a1565b5f82613b7d57613b7d61398d565b500490565b5f60018201613b9357613b936139a1565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f613bbc8284613b9a565b600360fc1b81526001019392505050565b601760f91b81525f613beb613be56001840186613b9a565b84613b9a565b949350505050565b606560f81b81525f61064b6001830184613b9a565b5f610972613be5613c22613c1c858a613b9a565b88613b9a565b86613b9a565b8181038181111561063a5761063a6139a1565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561063a5761063a6139a1565b5f613beb613be58386613b9a565b808202811582820484141761063a5761063a6139a156","sourceMap":"525:13549:86:-:0;;;1114:77;;;;;;;;;-1:-1:-1;1138:46:86;:44;:46::i;:::-;525:13549;;2590:358:92;721:42;2673;934:66;2729:47;;2725:217;;2799:132;;-1:-1:-1;;;2799:132:92;;721:42;2799:132;;;216:51:543;934:66:92;283:18:543;;;276:34;326:18;;;319:34;;;189:18;;2799:132:92;;;;;;;2725:217;2638:310;2590:358::o;14:345:543:-;525:13549:86;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b506004361061029d575f3560e01c806381f7e2f511610171578063cde72ef3116100d2578063dd64691711610088578063e5526ecd1161006e578063e5526ecd146105e4578063e75f991f146105f7578063ffae15ba1461060a575f80fd5b8063dd646917146105be578063e0db5888146105d1575f80fd5b8063d1de592a116100b8578063d1de592a14610571578063d35273a714610584578063d3d6ffa8146105ab575f80fd5b8063cde72ef314610551578063d102b4d31461055e575f80fd5b8063a19684b711610127578063bc1b392d1161010d578063bc1b392d146104f2578063bc62d8d8146104f8578063cb09682b1461052b575f80fd5b8063a19684b7146104d2578063a90d041a146104df575f80fd5b806396ce1ec71161015757806396ce1ec7146104885780639b4afd991461049b578063a100a3d9146104bf575f80fd5b806381f7e2f5146104625780638dc2980714610475575f80fd5b80633447c0301161021b5780635ca0e7a4116101d1578063719cd99d116101b7578063719cd99d1461042957806373bfb2831461043c57806381a822721461044f575f80fd5b80635ca0e7a4146103f0578063602c35fc14610403575f80fd5b80633b3bd868116102015780633b3bd868146103b757806341aa0080146103ca5780635b23771d146103dd575f80fd5b80633447c03014610374578063371493ce14610397575f80fd5b80631ee62f111161027057806328fa1f011161025657806328fa1f011461033b5780633004fa411461034e5780633029740014610361575f80fd5b80631ee62f11146103155780632538835014610328575f80fd5b806304327dc5146102a1578063078b665b146102c75780630b6429bc146102da578063146e82ad14610302575b5f80fd5b6102b46102af3660046137cd565b610630565b6040519081526020015b60405180910390f35b6102b46102d53660046137e4565b610640565b6102ed6102e8366004613814565b610652565b604080519283529015156020830152016102be565b6102b46103103660046137cd565b61066a565b6102b46103233660046137cd565b610689565b6102b46103363660046137cd565b6106a8565b6102b46103493660046137cd565b6106c7565b6102b461035c3660046137e4565b6106d1565b6102b461036f3660046137e4565b6106f1565b6103876103823660046137e4565b6106fc565b60405190151581526020016102be565b6103aa6103a536600461383e565b610707565b6040516102be9190613870565b6102b46103c5366004613814565b610713565b6102b46103d83660046137e4565b61071e565b6102b46103eb366004613814565b610729565b6102b46103fe3660046137cd565b610734565b7f80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102b4565b6102b46104373660046137cd565b61073e565b61038761044a3660046137e4565b610748565b6102b461045d3660046137cd565b610753565b6103876104703660046137e4565b61075d565b6103876104833660046137e4565b610768565b6102b46104963660046137e4565b610773565b6102b47c090000000000000000000000000000000000000000000000000000000181565b6103aa6104cd3660046137cd565b61077e565b6001600160ff1b016102b4565b6102b46104ed3660046137e4565b6107c8565b5f6102b4565b61050b6105063660046138b9565b6107d3565b604080516001600160e01b031990931683526020830191909152016102be565b7f7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffff6102b4565b63ffffffff60df1b6102b4565b61038761056c3660046137e4565b6107ec565b6102b461057f3660046137e4565b6107f7565b6102b47ffffffffc0000000000000000000000000000000000000000000000000000000181565b6102b46105b93660046137cd565b610802565b6103876105cc3660046137cd565b61080c565b6102b46105df3660046137cd565b61081d565b6103aa6105f2366004613964565b610827565b6102ed610605366004613814565b610897565b7fffffffbe19cfc6ef4f44cf88f14500d013df534fcaad48fca1d5ca47bea26fcc6102b4565b5f61063a826108a3565b92915050565b5f61064b83836108d0565b9392505050565b5f8061065e84846108ec565b915091505b9250929050565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f5610918565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f5610944565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f561097c565b5f61063a8261099a565b5f61064b838373c51a14251b0dcf0ae24a96b7153991378938f5f56109c6565b5f61064b8383610baf565b5f61064b8383610bfc565b606061064b8383610c35565b5f61064b8383610c97565b5f61064b8383610cb2565b5f61064b8383610ce2565b5f61063a82610d00565b5f61063a82610d7d565b5f61064b8383610df0565b5f61063a82610e2b565b5f61064b8383610e5b565b5f61064b8383610e96565b5f61064b8383610ed0565b606061063a827ffffffffc000000000000000000000000000000000000000000000000000000017c0900000000000000000000000000000000000000000000000000000001610827565b5f61064b8383610f00565b5f805f806107e085610f0b565b90969095509350505050565b5f61064b8383610faf565b5f61064b8383610fe9565b5f61063a82611019565b5f6001600160e01b0382161561063a565b5f61063a82611036565b60606108338383610faf565b61085f57604051630ef96fe560e21b815260048101849052602481018390526044015b60405180910390fd5b5f61086985610e2b565b905061088e856108798387610faf565b8061088957506108898386610e96565b610c35565b95945050505050565b5f8061065e8484611062565b5f6001600160e01b038216601b0b60e083901d6108c082826110a2565b90925090505f61088e83836110cc565b5f6108db8383610e96565b6108e5578161064b565b5090919050565b5f806001600160e01b038416601b0b60e085901d61090b828287611119565b9350935050509250929050565b5f61064b837fffffffff00000000000000000000000000000000000000000000000000000005846109c6565b5f6001600160e01b038316601b0b60e084901d610962848383611282565b90925090505f61097283836110cc565b9695505050505050565b5f6001600160e01b038316601b0b60e084901d6109628483836113b7565b5f6001600160e01b038216601b0b60e083901d826109b88383611619565b9150505f61097282846110cc565b5f6001600160e01b03848116601b0b9060e086901d9085166109ee57506001915061064b9050565b5f8213610a5557815f03610a3257610a06855f610faf565b15610a27576040516345f414b960e11b815260048101869052602401610856565b505f915061064b9050565b60405163cceba0f160e01b81526004810183905260248101829052604401610856565b610a60856001610bfc565b8015610a715750610a71865f610e96565b15610a8057859250505061064b565b610a8a855f610faf565b15610ab357610aaa610a9b876108a3565b610aa487611019565b866109c6565b9250505061064b565b6001600160e01b038516601b0b60e086901d5f80610ad18484611619565b915091505f610ae183855f611663565b905060015f8080610b038f6001600160e01b038116601b0b9160e09190911d90565b915091505b60018510610b4a5784600116600103610b2d57610b2784848484611748565b90945092505b600185901c9450610b4082828484611748565b9092509050610b08565b5f80610b578f8e8e6113b7565b91509150610b6782828a8d611748565b9092509050610b778f8383611282565b9092509050610b8882828888611748565b90925090505f610b9883836110cc565b9e5050505050505050505050505050509392505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686611867565b915091505f610bee83836110cc565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610c2a84848484611da7565b979650505050505050565b60606001600160e01b038316601b0b60e084901d5f829003610c7457604051806040016040528060018152602001600360fc1b8152509250505061063a565b8315610c8d57610c848282611dbe565b9250505061063a565b61088e8282612041565b5f805f610ca485856125ab565b9150915061088e82826125f4565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf8686868661262d565b5f6001600160e01b038316601b0b60e084901d61088e828286612657565b5f6001600160e01b038216601b0b60e083901d828112610d2257509192915050565b5f80610d2e8484611619565b915091505f84128015610d4057508015155b15610d7257610d6d8284760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b1961262d565b935091505b5f610c2a83856110cc565b5f6001600160e01b038216601b0b60e083901d828112610d9f57509192915050565b5f80610dab8484611619565b91509150805f03610dc0575093949350505050565b5f811315610d7257610d6d8284760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b19612699565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610e1e84848484612797565b1315979650505050505050565b5f6001600160e01b038216601b0b60e083901d82821215610e50576108c0828261286b565b5f61088e83836110cc565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610e8984848484612797565b1215979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610ec484848484612797565b12979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686611748565b5f6108db8383610faf565b80515f90819060208481019185010182808080610f2886866128c0565b929650909450925090506001600160e01b031984165f03610fa057848303610f89575f80610f568484612c0f565b9150915080610f78575063195c5c5f60e11b9a5f9a5098505050505050505050565b505f9a909950975050505050505050565b5063ad384e8760e01b985f98509650505050505050565b5091975f975095505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610fdd84848484612797565b13979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686612699565b5f6001600160e01b038216601b0b60e083901d6108c0828261286b565b5f6001600160e01b038216601b0b60e083901d826110548383611619565b5090505f61097282846110cc565b5f805f805f6110718787612ce7565b9250925092505f806110838585612c0f565b91509150818380156110925750815b9650965050505050509250929050565b5f8061065e760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b198686611867565b5f805f6110d98585612c0f565b91509150801580156110e9575081155b1561111157604051638eba4d0760e01b81526004810186905260248101859052604401610856565b509392505050565b5f805f85121561114657604051634a7d166b60e01b81526004810186905260248101859052604401610856565b845f0361115857505f9050600161127a565b8460ff841685018581121561118a5760405163d556b11160e01b81526004810188905260248101879052604401610856565b5f805f8312156111d657604c198312156111ad575f80955095505050505061127a565b825f03600a0a91508184816111c4576111c461398d565b049550508402909114915061127a9050565b5f83131561126f57604d8313156112135760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610856565b82600a0a9150815f19816112295761122961398d565b0484111561125d5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610856565b509190910292506001915061127a9050565b509193506001925050505b935093915050565b5f805f8412156112be57611296848461286b565b90945092506112a6858585611282565b90945092506112b584846110a2565b9150915061127a565b5f806112ca8686611619565b9092509050845f80806112dd8585612d2a565b9194509250905061270d6127106112f56001826139b5565b851461130c576113068d8686612dbf565b90925090505b8315611379575f61131e8660016139db565b90505b8084858302816113335761133361398d565b051461134a57600a84059350600a88059750611321565b61136d6113578588613a02565b896113628785613a02565b8f8787600319612e78565b909d509b506113829050565b819b506003199a505b50505050508661139384835f611663565b61139e8860016139db565b6113a891906139db565b94509450505050935093915050565b5f8083836113c58282612f15565b90965094505f861361141457855f036113f15760405163561fc7b560e01b815260040160405180910390fd5b604051635d3fd4db60e01b81526004810183905260248101829052604401610856565b505083760161bcca7119915b50764b4abe86529797775a5f171951604c1b0361144c5761144283604c6139db565b5f9150915061127a565b760161bcca7119915b50764b4abe86529797775a5f171951604c1b8412158061147757604a1961147b565b604b195b5f0b84126115dd575f805f805f8561149457604b611497565b604c5b6114a1908a6139db565b90505f80876114ce577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000006114ef565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca0000000000000000005b6001600160f81b03169050808c816115095761150961398d565b05818102955090850193506103e7190190506115258c82612f52565b7d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000000295508594508a84146115ab57612327811461158c576115678c82600101612f52565b7d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000026115a8565b760161bcca7119915b50764b4abe86529797775a5f171951604c1b5b94505b506115bd838b848c8989604b19612e78565b909a5098506115ce8a8a835f612699565b9750975050505050505061127a565b6115e785856110a2565b90955093506115f78686866113b7565b9095509350611606858561286b565b925092505061127a565b50935093915050565b5f805f831261162c57508290505f610663565b604b1983121561164057505f905082610663565b5f839003600a0a8085816116565761165661398d565b0794859003959350505050565b5f81830361167257508261064b565b828213156116b557828203604c81138061168c57505f8113155b1561169a575f91505061064b565b80600a0a85816116ac576116ac61398d565b0591505061064b565b818303604c8113806116c757505f8113155b156116f6576040516301d5d6d160e41b8152600481018690526024810185905260448101849052606401610856565b600a81900a8581028682828161170e5761170e61398d565b051461173e576040516301d5d6d160e41b8152600481018890526024810187905260448101869052606401610856565b925061064b915050565b5f8085158415178015611760575f92505f915061185d565b61176a84876139db565b91505f61177688612fd9565b90505f61178287612fd9565b90505f61178f8383613007565b5090505f6f0785ee10d5da46d900f436a0000000008211156117c4576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a76400008211156117e557670de0b6b3a7640000820491506012015b633b9aca008211156117fe57633b9aca00820491506009015b61271082111561181357612710820491506004015b811561182757600a82049150600101611813565b61183181876139db565b95506118538b8a61184d878761184887600a613b11565b613023565b896130ef565b9097509550505050505b5094509492505050565b5f80835f0361189357604051637a97930f60e01b81526004810187905260248101869052604401610856565b855f036118a457505f905080611d9e565b5f805f806118b28a8a61318f565b919b50995091506118c3888861318f565b919950975090505f6118d48b612fd9565b90505f6118e08a612fd9565b9050760161bcca7119915b50764b4abe86529797775a5f171951604c1b604c81831015611c9f57841561193157507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b611c77565b6f4b3b4ca85a86c47a098a224000000000831015611a5d57678ac7230489e800008310156119c1576402540be40083101561198f57620186a083101561197f5750620186a090506005611c38565b506402540be4009050600a611c38565b655af3107a40008310156119ae5750655af3107a40009050600e611c38565b50678ac7230489e8000090506013611c38565b6b204fce5e3e25026110000000831015611a135769152d02c7e14af68000008310156119fc575069152d02c7e14af680000090506017611c38565b506b204fce5e3e250261100000009050601c611c38565b6d314dc6448d9338c15b0a00000000831015611a4257506d314dc6448d9338c15b0a0000000090506021611c38565b506f4b3b4ca85a86c47a098a22400000000090506026611c38565b780197d4df19d605767337e9f14d3eec8920e400000000000000831015611b555773af298d050e4395d69670b12b7f41000000000000831015611af0577172cb5bd86321e38cb6ce6682e80000000000831015611ad157507172cb5bd86321e38cb6ce6682e800000000009050602b611c38565b5073af298d050e4395d69670b12b7f4100000000000090506030611c38565b76010b46c6cdd6e3e0828f4db456ff0c8ea0000000000000831015611b31575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035611c38565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a611c38565b7c03b58e88c75313ec9d329eaaa18fb92f75215b17100000000000000000831015611beb577a026e4d30eccc3215dd8f3157d27e23acbdcfe68000000000000000831015611bc357507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f611c38565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044611c38565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000831015611c3857507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b818311611c4d57600a820491505f1901611c38565b815f03611c77576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610856565b85611c9f576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610856565b80600160ff1b018d12611cb657808d039c50611cf4565b600160ff1b9c90038c015f811315611cf457806001600160ff1b03038b13611ce157998a0199611cf4565b5f80995099505050505050505050611d9e565b5f808e128015611d0357505f8c135b15611d2457600160ff1b8e01808d13611d1c575f611d20565b808d035b9150505b8b818f01039750611d418f8e611d3b888789613023565b8b6130ef565b90995097505f811315611d8b57604c811315611d6b575f809a509a50505050505050505050611d9e565b80600a0a8981611d7d57611d7d61398d565b059850885f03611d8b575f97505b50969850949650611d9e95505050505050565b94509492505050565b5f611db485858585612797565b1495945050505050565b6060611dca8383612f15565b90935091505f80611df5760161bcca7119915b50764b4abe86529797775a5f171951604c1b86613b1c565b15611e1f5750760161bcca7119915b50764b4abe86529797775a5f171951604c1b9050604c611e3f565b507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b5b5f611e4a8387613b1c565b90505f611e578488613b48565b90505f80831215611e7157506001611e6e83613b5b565b92505b5f821215611e8857506001611e8582613b5b565b91505b60408051602081019091525f81528215611f73575f80611ea9600a89613b6f565b90505b611eb68186613b1c565b5f03611edb57611ec7600a82613b6f565b905081611ed381613b82565b925050611eac565b60408051602081019091525f8082525b83811015611f1e5781604051602001611f049190613bb1565b60408051601f198184030181529190529150600101611eeb565b505b611f2b600a87613b48565b5f03611f4357611f3c600a87613b1c565b9550611f20565b80611f4d876133e9565b604051602001611f5e929190613bcd565b60405160208183030381529060405293505050505b5f611f7d856133e9565b90505f611f8a878b6139db565b90505f8115611fc057611f9c826133e9565b604051602001611fac9190613bf3565b604051602081830303815290604052611fd0565b60405180602001604052805f8152505b90505f85611fec5760405180602001604052805f815250612007565b604051806040016040528060018152602001602d60f81b8152505b9050808486846040516020016120209493929190613c08565b6040516020818303038152906040529a505050505050505050505092915050565b60606103e882138061205c57506120596103e8613b5b565b82125b1561207d57604051630e44c72b60e41b815260048101839052602401610856565b5f8084129081156120985761209185613b5b565b905061209b565b50835b5f6120a582613459565b80519091505f5b81811080156120f4575082816120c3600185613c28565b6120cd9190613c28565b815181106120dd576120dd613c3b565b6020910101516001600160f81b031916600360fc1b145b1561210b578061210381613b82565b9150506120ac565b5f6121168284613c28565b90505f612123838a6139db565b90505f8761213f5760405180602001604052805f81525061215a565b604051806040016040528060018152602001602d60f81b8152505b90505f821261228857815f61216f8286613c4f565b67ffffffffffffffff811115612187576121876138a5565b6040519080825280601f01601f1916602001820160405280156121b1576020820181803683370190505b5090505f5b8581101561220b578881815181106121d0576121d0613c3b565b602001015160f81c60f81b8282815181106121ed576121ed613c3b565b60200101906001600160f81b03191690815f1a9053506001016121b6565b505f5b8281101561225457600360fc1b826122268389613c4f565b8151811061223657612236613c3b565b60200101906001600160f81b03191690815f1a90535060010161220e565b508281604051602001612268929190613c62565b6040516020818303038152906040529a505050505050505050505061063a565b5f61229283613b5b565b90508084111561242d575f6122a78286613c28565b90505f6122b5866001613c4f565b67ffffffffffffffff8111156122cd576122cd6138a5565b6040519080825280601f01601f1916602001820160405280156122f7576020820181803683370190505b5090505f5b828110156123515789818151811061231657612316613c3b565b602001015160f81c60f81b82828151811061233357612333613c3b565b60200101906001600160f81b03191690815f1a9053506001016122fc565b50601760f91b81838151811061236957612369613c3b565b60200101906001600160f81b03191690815f1a9053505f5b838110156123f857896123948285613c4f565b815181106123a4576123a4613c3b565b01602001516001600160f81b03191682826123c0866001613c4f565b6123ca9190613c4f565b815181106123da576123da613c3b565b60200101906001600160f81b03191690815f1a905350600101612381565b50838160405160200161240c929190613c62565b6040516020818303038152906040529b50505050505050505050505061063a565b5f6124388583613c28565b90505f85612447836002613c4f565b6124519190613c4f565b67ffffffffffffffff811115612469576124696138a5565b6040519080825280601f01601f191660200182016040528015612493576020820181803683370190505b509050600360fc1b815f815181106124ad576124ad613c3b565b60200101906001600160f81b03191690815f1a905350601760f91b816001815181106124db576124db613c3b565b60200101906001600160f81b03191690815f1a9053505f5b8281101561253a57600360fc1b8261250c836002613c4f565b8151811061251c5761251c613c3b565b60200101906001600160f81b03191690815f1a9053506001016124f3565b505f5b868110156123f85789818151811061255757612557613c3b565b01602001516001600160f81b0319168282612573866002613c4f565b61257d9190613c4f565b8151811061258d5761258d613c3b565b60200101906001600160f81b03191690815f1a90535060010161253d565b5f805f805f6125ba8787612ce7565b925092509250806125e857604051636238bcb360e11b81526004810184905260248101839052604401610856565b50909590945092505050565b5f805f6126018585612c0f565b9150915080611111576040516322c9f7bb60e01b81526004810186905260248101859052604401610856565b5f80612639848461286b565b909450925061264a86868686612699565b9150915094509492505050565b5f805f612665868686611119565b91509150806126905760405162bc8ecf60e31b81526004810187905260248101869052604401610856565b50949350505050565b5f80851584151780156126c557865f036126b95784849250925050611d9e565b86869250925050611d9e565b6126cf8787612f15565b90975095506126de8585612f15565b9095509350858413156126f2579395929492935b838603604c81111561270b578787935093505050611d9e565b80600a0a868161271d5761271d61398d565b0595505086850180881860ff90811c151589881890911c1516801561278657876001600160ff1b030361276d5760405163d556b11160e01b8152600481018a905260248101899052604401610856565b600a96879005969098058601976001979097019661278a565b8198505b5096979596505050505050565b5f80851584151781871282861218178584141780156127bc5786859250925050611d9e565b505f858413156127d0575092949193919260015b8386035f8112604c82131780156128035782156127f5575f8994509450505050611d9e565b885f94509450505050611d9e565b600a82900a8981028a82828161281b5761281b61398d565b0514612847578415612837575f8b965096505050505050611d9e565b8a5f965096505050505050611d9e565b841561285c578896509450611d9e9350505050565b9550879450611d9e9350505050565b5f80600160ff1b84036128b6576001600160ff1b0383036128a95760405163d556b11160e01b81526004810185905260248101849052604401610856565b600a840593508260010192505b50505f9190910391565b5f8281806128d58386652000000000006134f6565b925085831415836128ef81886703ff0000000000006134f6565b945080850361291057506334bd206960e01b94505f9250829150612c069050565b5f8061291c8a8861351f565b90925090506001600160e01b0319821615612942575095505f9350839250612c06915050565b86519095506540000000000060015f9290921a9190911b161515888710169150508015612afd57506001909301925f8461298581896703ff0000000000006134f6565b95508086036129a75750637bfa48af60e01b95505f9350839250612c06915050565b855b5f1981018051908a1160015f9290921a9190911b6601000000000000161515166001036129d8575f19016129a9565b818114612a17575f806129eb848461351f565b90925090506001600160e01b0319821615612a13575097505f9550859450612c069350505050565b9350505b5f831215612a395750637bfa48af60e01b96505f9450849350612c0692505050565b8315612a4557825f0392505b80820394505f851315612a6b5750629d955560e11b96505f9450849350612c0692505050565b855f03612a7a57829550612afa565b5f8590036043811115612aa2575063195c5c5f60e11b97505f9550859450612c069350505050565b600a0a8681025f88838381612ab957612ab961398d565b0514159050601b82900b8214158180612acf5750805b15612af2575063195c5c5f60e11b9a505f9850889750612c069650505050505050565b505084019650505b50505b84516c2000000020000000000000000060015f9290921a9190911b161515878610168015612bf75760019095019485612b3d818a652000000000006134f6565b965086612b53818b6703ff0000000000006134f6565b9750808803612b765750629d955560e11b97505f9550859450612c069350505050565b505f80612b83838a61351f565b90925090506001600160e01b0319821615612bab575097505f9550859450612c069350505050565b9250508482015f83138015612bbf57508581125b80612bd357505f83128015612bd357508581135b15612bf3575063d556b11160e01b97505f9550859450612c069350505050565b9450505b845f03612c02575f93505b5050505b92959194509250565b5f601b83900b8314838382612c73577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515612c5357620186a0860595506005850194505b8586601b0b14612c6e57600a86059550846001019450612c53565b612c89565b855f03612c8957505f9250600191506106639050565b848560030b14612ccc575f851215612ca957505f92508291506106639050565b60405163d556b11160e01b81526004810183905260248101829052604401610856565b50506001600160e01b03841660e084901b1791509250929050565b5f808060ff841681036001600160ff1b03861115612d1957600a860460018201600a88065f1493509350935050612d23565b8593509150600190505b9250925092565b5f805f8360031903612d4457508391505f90506001612d23565b600319841215612d9657604f19841215612d6757505f9150508215156001612d23565b5f846004015f03600a0a90505f818781612d8357612d8361398d565b0594505080840286141592509050612d23565b5f8412612dab57505f91508190506001612d23565b50505060048101600a0a82025f6001612d23565b5f80806064612dd1600a612328613b6f565b612dde600a612328613b6f565b612de9906002613c70565b612df4906001613c4f565b612dfe9190613c4f565b612e089190613c4f565b9050612e4c565b5f8052600280600a8504028301601e833c5f80516107d0840193505f80526001600a8606600a6064880402018501601f853c5f5101949350505050565b612e57858288612e0f565b9250831561161057612e6d600186018288612e0f565b915050935093915050565b5f80888803612e8b575083905081612f09565b5f805f80612e9b8c8b8f8d61262d565b915091505f80612ead8a8a8d8c61262d565b91509150612ebd84848484611748565b8096508197505050505050505f80612ed78b8b8f8d61262d565b915091505f80612ee986868686611867565b915091505f80612efb84848f8e612699565b909a50985050505050505050505b97509795505050505050565b5f805f805f612f24878761318f565b925092509250806125e8576040516305e51ecb60e01b81526004810188905260248101879052604401610856565b5f80612f61600a612328613b6f565b612f6c906002613c70565b612f77906001613c4f565b90505f612f87600a612328613b6f565b90506002600a8504026001015f8052600281601e883c505f51617fff81169350618000811615612fb657918101915b505f80526001600a8506600a6064870402018301601f873c50505f510192915050565b5f80821215612ffe57600160ff1b8203612ff85750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f6130308686613007565b91509150815f036130545783818161304a5761304a61398d565b049250505061064b565b8382106130855760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610856565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f858718121561316b576001600160ff1b038411156131585761311c6001600160ff1b036001613c4f565b84036131305750600160ff1b905081611d9e565b61313b600a85613b6f565b61314490613b5b565b61314f8460016139db565b91509150611d9e565b61316184613b5b565b8391509150611d9e565b6001600160ff1b0384111561318557613144600a85613b6f565b5082905081611d9e565b5f805f845f036131a757505f91508190506001612d23565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03613394576f4b3b4ca85a86c47a098a224000000000850515801561320957507f80000000000000000000000000000000000000000000000000000000000000268412155b1561322a576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561327257507f80000000000000000000000000000000000000000000000000000000000000138412155b1561328b57678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156132d757507f800000000000000000000000000000000000000000000000000000000000000a8412155b156132ed576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561333c57507f80000000000000000000000000000000000000000000000000000000000000028412155b15613352576064850294506002840393506132ed565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561338257506001600160ff1b018412155b1561339457600a850294506001840393505b600a808602908105861480156133b157506001600160ff1b018512155b156133c0578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b60605f82126134065760405180602001604052805f815250613421565b604051806040016040528060018152602001602d60f81b8152505b61343260ff84901d80850118613459565b604051602001613443929190613c62565b6040516020818303038152906040529050919050565b60605f613465836135ca565b60010190505f8167ffffffffffffffff811115613484576134846138a5565b6040519080825280601f01601f1916602001820160405280156134ae576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846134b857509392505050565b5f5b5f82600186515f1a1b16118385101615613517576001840193506134f8565b509192915050565b81515f90819065200000000000600191831a9190911b1615158385101680850190828061354c84886136ab565b90925090506001600160e01b031982161561356f575093505f9250610663915050565b825f036135a0576001600160ff1b03811161358a575f613593565b630fdc263560e01b5b9550935061066392505050565b600160ff1b81116135b1575f6135ba565b630fdc263560e01b5b95505f0393505050509250929050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613612577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061363e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061365c57662386f26fc10000830492506010015b6305f5e1008310613674576305f5e100830492506008015b612710831061368857612710830492506004015b6064831061369a576064830492506002015b600a831061063a5760010192915050565b5f808284106136c557506334bd206960e01b90505f610663565b835f036136e55760405163369a59b560e21b815260040160405180910390fd5b60305f5f198501815b8782101580156136fe5750604d83105b1561372257815160018401935f1990930192600a0a5f9190911a85900302016136ee565b8782106137bf5781515f1a84900360018111156137515750630fdc263560e01b95505f94506106639350505050565b600a84900a810282810183111561377b5750630fdc263560e01b96505f9550610663945050505050565b9190910190505f19909101905b8782106137bf5781515f1a603081146137b35750630fdc263560e01b95505f94506106639350505050565b505f1990910190613788565b5f9890975095505050505050565b5f602082840312156137dd575f80fd5b5035919050565b5f80604083850312156137f5575f80fd5b50508035926020909101359150565b803560ff81168114613002575f80fd5b5f8060408385031215613825575f80fd5b8235915061383560208401613804565b90509250929050565b5f806040838503121561384f575f80fd5b8235915060208301358015158114613865575f80fd5b809150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156138c9575f80fd5b813567ffffffffffffffff808211156138e0575f80fd5b818401915084601f8301126138f3575f80fd5b813581811115613905576139056138a5565b604051601f8201601f19908116603f0116810190838211818310171561392d5761392d6138a5565b81604052828152876020848701011115613945575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f805f60608486031215613976575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181035f8312801583831316838312821617156139d4576139d46139a1565b5092915050565b8082018281125f8312801582168215821617156139fa576139fa6139a1565b505092915050565b8082025f8212600160ff1b84141615613a1d57613a1d6139a1565b818105831482151761063a5761063a6139a1565b600181815b80851115613a6b57815f1904821115613a5157613a516139a1565b80851615613a5e57918102915b93841c9390800290613a36565b509250929050565b5f82613a815750600161063a565b81613a8d57505f61063a565b8160018114613aa35760028114613aad57613ac9565b600191505061063a565b60ff841115613abe57613abe6139a1565b50506001821b61063a565b5060208310610133831016604e8410600b8410161715613aec575081810a61063a565b613af68383613a31565b805f1904821115613b0957613b096139a1565b029392505050565b5f61064b8383613a73565b5f82613b2a57613b2a61398d565b600160ff1b82145f1984141615613b4357613b436139a1565b500590565b5f82613b5657613b5661398d565b500790565b5f600160ff1b8201612ff857612ff86139a1565b5f82613b7d57613b7d61398d565b500490565b5f60018201613b9357613b936139a1565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f613bbc8284613b9a565b600360fc1b81526001019392505050565b601760f91b81525f613beb613be56001840186613b9a565b84613b9a565b949350505050565b606560f81b81525f61064b6001830184613b9a565b5f610972613be5613c22613c1c858a613b9a565b88613b9a565b86613b9a565b8181038181111561063a5761063a6139a1565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561063a5761063a6139a1565b5f613beb613be58386613b9a565b808202811582820484141761063a5761063a6139a156","sourceMap":"525:13549:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6819:83;;;;;;:::i;:::-;;:::i;:::-;;;399:25:543;;;387:2;372:18;6819:83:86;;;;;;;;11299:93;;;;;;:::i;:::-;;:::i;13850:222::-;;;;;;:::i;:::-;;:::i;:::-;;;;1353:25:543;;;1421:14;;1414:22;1409:2;1394:18;;1387:50;1326:18;13850:222:86;1185:258:543;10667:140:86;;;;;;:::i;:::-;;:::i;9694:142::-;;;;;;:::i;:::-;;:::i;9997:::-;;;;;;:::i;:::-;;:::i;8997:85::-;;;;;;:::i;:::-;;:::i;10353:150::-;;;;;;:::i;:::-;;:::i;6590:93::-;;;;;;:::i;:::-;;:::i;7121:90::-;;;;;;:::i;:::-;;:::i;:::-;;;1613:14:543;;1606:22;1588:41;;1576:2;1561:18;7121:90:86;1448:187:543;4526:156:86;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12040:182::-;;;;;;:::i;:::-;;:::i;5530:93::-;;;;;;:::i;:::-;;:::i;12556:172::-;;;;;;:::i;:::-;;:::i;9229:87::-;;;;;;:::i;:::-;;:::i;1849:122::-;4837:66:91;1849:122:86;;9463:85;;;;;;:::i;:::-;;:::i;8475:92::-;;;;;;:::i;:::-;;:::i;6015:83::-;;;;;;:::i;:::-;;:::i;8125:92::-;;;;;;:::i;:::-;;:::i;7780:90::-;;;;;;:::i;:::-;;:::i;6300:93::-;;;;;;:::i;:::-;;:::i;967:140::-;;1040:66;967:140;;4894:158;;;;;;:::i;:::-;;:::i;1589:122::-;-1:-1:-1;;;;;1589:122:86;;11007:93;;;;;;:::i;:::-;;:::i;2375:96::-;2414:5;2375:96;;3040:211;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;;4149:33:543;;;4131:52;;4214:2;4199:18;;4192:34;;;;4104:18;3040:211:86;3932:300:543;1329:122:86;4277:66:91;1329:122:86;;2109;-1:-1:-1;;;2109:122:86;;7445:90;;;;;;:::i;:::-;;:::i;5240:93::-;;;;;;:::i;:::-;;:::i;706:140::-;;779:66;706:140;;5760:87;;;;;;:::i;:::-;;:::i;11554:88::-;;;;;;:::i;:::-;;:::i;8735:91::-;;;;;;:::i;:::-;;:::i;3821:383::-;;;;;;:::i;:::-;;:::i;13202:232::-;;;;;;:::i;:::-;;:::i;2602:90::-;5384:66:91;2602:90:86;;6819:83;6864:5;6888:7;:1;:5;:7::i;:::-;6881:14;6819:83;-1:-1:-1;;6819:83:86:o;11299:93::-;11353:5;11377:8;:1;11383;11377:5;:8::i;:::-;11370:15;11299:93;-1:-1:-1;;;11299:93:86:o;13850:222::-;13931:7;13940:4;14013:52;14049:5;14056:8;14013:35;:52::i;:::-;14006:59;;;;13850:222;;;;;;:::o;10667:140::-;10713:5;10737:63;:1;721:42:92;10737:6:86;:63::i;9694:142::-;9741:5;9765:64;:1;721:42:92;9765:7:86;:64::i;9997:142::-;10044:5;10068:64;:1;721:42:92;10068:7:86;:64::i;8997:85::-;9043:5;9067:8;:1;:6;:8::i;10353:150::-;10407:5;10431:65;:1;10437;721:42:92;10431:5:86;:65::i;6590:93::-;6644:5;6668:8;:1;6674;6668:5;:8::i;7121:90::-;7174:4;7197:7;:1;7202;7197:4;:7::i;4526:156::-;4591:13;4623:52;4661:1;4664:10;4623:37;:52::i;12040:182::-;12128:5;12152:63;12199:5;12206:8;12152:46;:63::i;5530:93::-;5584:5;5608:8;:1;5614;5608:5;:8::i;12556:172::-;12640:7;12666:55;12705:5;12712:8;12666:38;:55::i;9229:87::-;9276:5;9300:9;:1;:7;:9::i;9463:85::-;9509:5;9533:8;:1;:6;:8::i;8475:92::-;8529:4;8552:8;:1;8558;8552:5;:8::i;6015:83::-;6060:5;6084:7;:1;:5;:7::i;8125:92::-;8179:4;8202:8;:1;8208;8202:5;:8::i;7780:90::-;7833:4;7856:7;:1;7861;7856:4;:7::i;6300:93::-;6354:5;6378:8;:1;6384;6378:5;:8::i;4894:158::-;4942:13;4974:71;4981:1;779:66;1040;4974:6;:71::i;11007:93::-;11061:5;11085:8;:1;11091;11085:5;:8::i;3040:211::-;3097:6;3105:5;3123:20;3145:12;3161:43;3200:3;3161:38;:43::i;:::-;3122:82;;;;-1:-1:-1;3040:211:86;-1:-1:-1;;;;3040:211:86:o;7445:90::-;7498:4;7521:7;:1;7526;7521:4;:7::i;5240:93::-;5294:5;5318:8;:1;5324;5318:5;:8::i;5760:87::-;5807:5;5831:9;:1;:7;:9::i;11554:88::-;11602:4;-1:-1:-1;;;;;42905:12:91;;42898:20;11625:10:86;42626:308:91;8735:91:86;8784:5;8808:11;:1;:9;:11::i;3821:383::-;3909:13;3939:31;:13;3956;3939:16;:31::i;:::-;3934:127;;3993:57;;-1:-1:-1;;;3993:57:86;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;3993:57:86;;;;;;;;3934:127;4070:10;4083:7;:1;:5;:7::i;:::-;4070:20;-1:-1:-1;4107:90:86;4145:1;4148:22;4070:20;4156:13;4148:7;:22::i;:::-;:48;;;-1:-1:-1;4174:22:86;:4;4182:13;4174:7;:22::i;:::-;4107:37;:90::i;:::-;4100:97;3821:383;-1:-1:-1;;;;;3821:383:86:o;13202:232::-;13287:5;13294:4;13367:60;13411:5;13418:8;13367:43;:60::i;28026:334:91:-;28075:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;28194:62;21018:32;21075:16;28194:33;:62::i;:::-;28162:94;;-1:-1:-1;28162:94:91;-1:-1:-1;28266:12:91;28281:49;28162:94;;28281:20;:49::i;42289:101::-;42343:5;42367:8;42370:1;42373;42367:2;:8::i;:::-;:16;;42382:1;42367:16;;;-1:-1:-1;42378:1:91;;42289:101;-1:-1:-1;42289:101:91:o;14263:248::-;14344:7;;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;14446:58;21018:32;21075:16;14495:8;14446:19;:58::i;:::-;14439:65;;;;;;14263:248;;;;;:::o;41590:143::-;41664:5;41688:38;41692:1;3945:66;41707:18;41688:3;:38::i;35958:492::-;36037:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;36168:84;36204:18;21018:32;21075:16;36168:35;:84::i;:::-;36124:128;;-1:-1:-1;36124:128:91;-1:-1:-1;36356:12:91;36371:49;36124:128;;36371:20;:49::i;:::-;36356:64;35958:492;-1:-1:-1;;;;;;35958:492:91:o;36826:471::-;36901:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;37028:84;37064:18;21018:32;21075:16;37028:35;:84::i;33023:370::-;33073:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;33073:5;33232:66;21018:32;21075:16;33232:37;:66::i;:::-;33210:88;;;33308:12;33323:40;33344:8;33354;33323:20;:40::i;37919:3079::-;38001:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;21079:4;21075:16;;;;42905:12;;38087:869;;-1:-1:-1;3793:1:91;;-1:-1:-1;38117:16:91;;-1:-1:-1;38117:16:91;38087:869;38176:1;38154:18;:23;38150:806;;38197:18;38219:1;38197:23;38193:494;;38244:16;:1;3702;38244:4;:16::i;:::-;38240:157;;;38358:20;;-1:-1:-1;;;38358:20:91;;;;;399:25:543;;;372:18;;38358:20:91;226:204:543;38240:157:91;-1:-1:-1;3702:1:91;;-1:-1:-1;38563:17:91;;-1:-1:-1;38563:17:91;38193:494;38626:46;;-1:-1:-1;;;38626:46:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;38626:46:91;4929:302:543;38150:806:91;38783:15;:1;3793;38783:4;:15::i;:::-;:35;;;;-1:-1:-1;38802:16:91;:1;3702;38802:4;:16::i;:::-;38779:177;;;38841:1;38834:8;;;;;;38779:177;38863:16;:1;3702;38863:4;:16::i;:::-;38859:97;;;38902:43;38906:7;:1;:5;:7::i;:::-;38915:9;:1;:7;:9::i;:::-;38926:18;38902:3;:43::i;:::-;38895:50;;;;;;38859:97;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;39183:25;;39288:68;21018:32;21075:16;39288:37;:68::i;:::-;39250:106;;;;39367:24;39402:72;39451:8;39461:9;39472:1;39402:48;:72::i;:::-;39367:108;-1:-1:-1;39584:1:91;39526:30;;;39653:10;:1;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;;21079:4;21075:16;;;;;20811:296;39653:10;39599:64;;;;39673:544;39700:1;39680:16;:21;39673:544;;39721:16;39740:4;39721:23;39748:4;39721:31;39717:263;;39816:149;39871:23;39896:14;39912:21;39935:12;39816:33;:149::i;:::-;39772:193;;-1:-1:-1;39772:193:91;-1:-1:-1;39717:263:91;40014:1;39993:22;;;;;40069:137;40120:21;40143:12;40157:21;40180:12;40069:33;:137::i;:::-;40029:177;;-1:-1:-1;40029:177:91;-1:-1:-1;39673:544:91;;;40228:25;40255:16;40287:86;40323:18;40343;40363:9;40287:35;:86::i;:::-;40227:146;;;;40430:86;40464:18;40484:9;40495;40506;40430:33;:86::i;:::-;40384:132;;-1:-1:-1;40384:132:91;-1:-1:-1;40573:86:91;40609:18;40384:132;;40573:35;:86::i;:::-;40527:132;;-1:-1:-1;40527:132:91;-1:-1:-1;40716:105:91;40527:132;;40781:23;40806:14;40716:33;:105::i;:::-;40670:151;;-1:-1:-1;40670:151:91;-1:-1:-1;40912:7:91;40922:51;40670:151;;40922:20;:51::i;:::-;40912:61;-1:-1:-1;;;;;;;;;;;;;;;37919:3079:91;;;;;:::o;27084:573::-;27138:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;27138:5;;27349:95;21018:32;21075:16;21018:32;21075:16;27349:33;:95::i;:::-;27291:153;;;;27573:7;27583:49;27604:17;27623:8;27583:20;:49::i;:::-;27573:59;27084:573;-1:-1:-1;;;;;;;;;;27084:573:91:o;28702:313::-;28755:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;28914:94;21018:32;21075:16;21018:32;21075:16;28914:32;:94::i;:::-;28907:101;28702:313;-1:-1:-1;;;;;;;28702:313:91:o;1412:418:93:-;1490:13;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;1516:24:93;1604:22;;;1600:63;;1642:10;;;;;;;;;;;;;-1:-1:-1;;;1642:10:93;;;;;;;;;1600:63;1676:10;1672:90;;;1709:42;1723:17;1742:8;1709:13;:42::i;:::-;1702:49;;;;;;1672:90;1778:45;1795:17;1814:8;1778:16;:45::i;8887:263:91:-;8981:5;8999:24;9025:15;9044:41;9069:5;9076:8;9044:24;:41::i;:::-;8998:87;;;;9102:41;9115:17;9134:8;9102:12;:41::i;22427:496::-;22481:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;22481:5;;22694:95;21018:32;21075:16;21018:32;21075:16;22694:33;:95::i;15741:248::-;15825:7;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;15921:61;21018:32;21075:16;15973:8;15921:22;:61::i;33539:760::-;33590:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;33762:13;;;33758:56;;-1:-1:-1;33798:5:91;;33539:760;-1:-1:-1;;33539:760:91:o;33758:56::-;33824:8;33834:15;33853:66;33891:17;33910:8;33853:37;:66::i;:::-;33823:96;;;;33953:1;33933:17;:21;:38;;;;-1:-1:-1;33958:13:91;;;33933:38;33929:283;;;34144:57;34178:1;34181:8;-1:-1:-1;;;;;34144:33:91;:57::i;:::-;34128:73;-1:-1:-1;34128:73:91;-1:-1:-1;33929:283:91;34221:12;34236:33;34257:1;34260:8;34236:20;:33::i;34446:1052::-;34496:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;34668:13;;;34664:56;;-1:-1:-1;34704:5:91;;34446:1052;-1:-1:-1;;34446:1052:91:o;34664:56::-;34730:8;34740:15;34759:66;34797:17;34816:8;34759:37;:66::i;:::-;34729:96;;;;34911:8;34923:1;34911:13;34907:503;;-1:-1:-1;34947:5:91;;34446:1052;-1:-1:-1;;;;34446:1052:91:o;34907:503::-;35309:1;35298:8;:12;35294:116;;;35342:57;35376:1;35379:8;-1:-1:-1;;;;;35342:33:91;:57::i;31811:431::-;31865:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;32072:106;21018:32;21075:16;21018:32;21075:16;32072:44;:106::i;:::-;-1:-1:-1;32195:40:91;;31811:431;-1:-1:-1;;;;;;;31811:431:91:o;24336:502::-;24385:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;24477:21;;;24473:148;;;24546:64;24582:17;24601:8;24546:35;:64::i;24473:148::-;24744:12;24759:49;24780:17;24799:8;24759:20;:49::i;30955:431::-;31009:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;31216:106;21018:32;21075:16;21018:32;21075:16;31216:44;:106::i;:::-;-1:-1:-1;31339:40:91;;30955:431;-1:-1:-1;;;;;;;30955:431:91:o;30119:429::-;30172:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;30379:106;21018:32;21075:16;21018:32;21075:16;30379:44;:106::i;:::-;-1:-1:-1;;30119:429:91;-1:-1:-1;;;;;;;30119:429:91:o;26050:535::-;26104:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;26104:5;;26315:95;21018:32;21075:16;21018:32;21075:16;26315:33;:95::i;41961:101::-;42015:5;42039:8;42042:1;42045;42039:2;:8::i;8905:1711:95:-;9120:10;;8974:6;;;;9084:4;9075:14;;;;9109:22;;;8974:6;;;;9246:35;9075:14;9109:22;9246:23;:35::i;:::-;9150:131;;-1:-1:-1;9150:131:95;;-1:-1:-1;9150:131:95;-1:-1:-1;9150:131:95;-1:-1:-1;;;;;;;9295:18:95;;9312:1;9295:18;9291:1319;;9343:3;9333:6;:13;9329:1098;;9951:12;9965:13;9982:54;10008:17;10027:8;9982:25;:54::i;:::-;9950:86;;;;10059:8;10054:179;;-1:-1:-1;;;;10099:34:95;10146:1;;-1:-1:-1;8905:1711:95;-1:-1:-1;;;;;;;;;8905:1711:95:o;10054:179::-;-1:-1:-1;10204:1:95;;10207:6;;-1:-1:-1;8905:1711:95;-1:-1:-1;;;;;;;;8905:1711:95:o;9329:1098::-;-1:-1:-1;;;;10354:42:95;10409:1;;-1:-1:-1;8905:1711:95;-1:-1:-1;;;;;;;8905:1711:95:o;9291:1319::-;-1:-1:-1;10570:13:95;;10596:1;;-1:-1:-1;8905:1711:95;-1:-1:-1;;;;;;8905:1711:95:o;29343:430:91:-;29396:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;29603:106;21018:32;21075:16;21018:32;21075:16;29603:44;:106::i;:::-;-1:-1:-1;;29343:430:91;-1:-1:-1;;;;;;;29343:430:91:o;21591:489::-;21645:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;21645:5;;21856:95;21018:32;21075:16;21018:32;21075:16;21856:33;:95::i;23273:418::-;23324:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;23443:64;21018:32;21075:16;23443:35;:64::i;32498:358::-;32551:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;32551:5;32702:66;21018:32;21075:16;32702:37;:66::i;:::-;32688:80;;;32778:12;32793:33;32814:1;32817:8;32793:20;:33::i;7483:353::-;7574:5;7581:4;7598:24;7624:15;7641:13;7658:38;7680:5;7687:8;7658:21;:38::i;:::-;7597:99;;;;;;7707:11;7720:17;7741:38;7751:17;7770:8;7741:9;:38::i;:::-;7706:73;;;;7797:5;7804:8;:24;;;;;7816:12;7804:24;7789:40;;;;;;;;;7483:353;;;;;:::o;35535:162:94:-;35614:6;35622;35647:43;-1:-1:-1;;;;;35662:17:94;35681:8;35647:3;:43::i;20082:338:91:-;20178:5;20196:7;20205:13;20222:38;20232:17;20251:8;20222:9;:38::i;:::-;20195:65;;;;20275:8;20274:9;:42;;;;-1:-1:-1;20287:29:91;;20274:42;20270:126;;;20339:46;;-1:-1:-1;;;20339:46:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;20339:46:91;4929:302:543;20270:126:91;-1:-1:-1;20412:1:91;20082:338;-1:-1:-1;;;20082:338:91:o;9995:3701::-;10130:7;10139:4;10262:1;10242:17;:21;10238:3452;;;10286:59;;-1:-1:-1;;;10286:59:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;10286:59:91;4929:302:543;10238:3452:91;10444:17;10465:1;10444:22;10440:3250;;-1:-1:-1;10490:1:91;;-1:-1:-1;10493:4:91;10482:16;;10440:3250;10708:17;10989;;;10971:36;;11029:24;;;11025:123;;;11084:45;;-1:-1:-1;;;11084:45:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;11084:45:91;4929:302:543;11025:123:91;11176:13;11203:20;11257:1;11241:13;:17;11237:2443;;;-1:-1:-1;;11519:13:91;:19;11515:91;;;11574:1;11577:5;11566:17;;;;;;;;;;11515:91;11966:13;11965:14;;11951:2;:29;11943:37;;12039:5;12017:19;:27;;;;;:::i;:::-;;;-1:-1:-1;;12302:20:91;;:43;;;;-1:-1:-1;12280:66:91;;-1:-1:-1;12280:66:91;11237:2443;12405:1;12389:13;:17;12385:1295;;;12684:2;12668:13;:18;12664:139;;;12721:59;;-1:-1:-1;;;12721:59:91;;;;;5811:25:543;;;5852:18;;;5845:34;;;5927:4;5915:17;;5895:18;;;5888:45;5784:18;;12721:59:91;5617:322:543;12664:139:91;13030:13;13016:2;:28;13008:36;;13340:5;-1:-1:-1;;13320:25:91;;;;;:::i;:::-;;13298:19;:47;13294:168;;;13380:59;;-1:-1:-1;;;13380:59:91;;;;;5811:25:543;;;5852:18;;;5845:34;;;5927:4;5915:17;;5895:18;;;5888:45;5784:18;;13380:59:91;5617:322:543;13294:168:91;-1:-1:-1;13498:27:91;;;;;-1:-1:-1;13569:4:91;;-1:-1:-1;13547:27:91;;-1:-1:-1;13547:27:91;12385:1295;-1:-1:-1;13639:19:91;;-1:-1:-1;13660:4:91;;-1:-1:-1;;;10440:3250:91;9995:3701;;;;;;:::o;43384:1993:94:-;43517:6;43525;43571:1;43551:17;:21;43547:271;;;43620:34;43626:17;43645:8;43620:5;:34::i;:::-;43588:66;;-1:-1:-1;43588:66:94;-1:-1:-1;43700:54:94;43706:18;43588:66;;43700:5;:54::i;:::-;43668:86;;-1:-1:-1;43668:86:94;-1:-1:-1;43775:32:94;43668:86;;43775:3;:32::i;:::-;43768:39;;;;;;43547:271;43854:21;43877:22;43903:36;43911:17;43930:8;43903:7;:36::i;:::-;43853:86;;-1:-1:-1;43853:86:94;-1:-1:-1;43981:8:94;43949:29;;;44060:36;43853:86;43981:8;44060:9;:36::i;:::-;44013:83;;-1:-1:-1;44013:83:94;-1:-1:-1;44013:83:94;-1:-1:-1;44257:4:94;44298:5;782:27:96;808:1;44298:5:94;782:27:96;:::i;:::-;44321:3:94;:29;44317:252;;44485:69;44508:18;44536:3;44542:11;44485:22;:69::i;:::-;44370:184;;-1:-1:-1;44370:184:94;-1:-1:-1;44317:252:94;44586:11;44582:664;;;44676:15;44695:7;:3;44701:1;44695:7;:::i;:::-;44676:27;;44753:154;44790:8;44781:5;44772;44761:8;:16;44760:26;;;;;:::i;:::-;;:38;44753:154;;44835:2;44826:11;;;-1:-1:-1;44882:2:94;44863:21;;;;44753:154;;;44975:153;45020:11;45026:5;45020:3;:11;:::i;:::-;45033:15;45050:16;45061:5;45050:8;:16;:::i;:::-;45068:8;45078:13;45093;-1:-1:-1;;44975:23:94;:153::i;:::-;44943:185;;-1:-1:-1;44943:185:94;-1:-1:-1;44582:664:94;;-1:-1:-1;44582:664:94;;45187:13;45167:33;;-1:-1:-1;;45218:13:94;;44582:664;43999:1257;;;;;45274:17;45308:61;45327:14;45343:22;45367:1;45308:18;:61::i;:::-;45293:12;45297:8;45293:1;:12;:::i;:::-;:76;;;;:::i;:::-;45266:104;;;;;;;43384:1993;;;;;;:::o;37791:5059::-;37924:6;;38000:17;38060:8;38114:41;38000:17;38060:8;38114:12;:41::i;:::-;38082:73;;-1:-1:-1;38082:73:94;-1:-1:-1;38195:1:94;38174:22;;38170:259;;38220:17;38241:1;38220:22;38216:199;;38273:11;;-1:-1:-1;;;38273:11:94;;;;;;;;;;;38216:199;38338:58;;-1:-1:-1;;;38338:58:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;38338:58:94;4929:302:543;38216:199:94;37954:485;;38519:17;-1:-1:-1;;;38519:25:94;38515:81;;38568:13;:8;38579:2;38568:13;:::i;:::-;38583:1;38560:25;;;;;;38515:81;-1:-1:-1;;;38625:25:94;;;;38739:24;;-1:-1:-1;;38739:24:94;;;-1:-1:-1;;38739:24:94;38726:38;;:8;:38;38722:4122;;38780:20;38814;38848;38882;39533:17;39571:12;:38;;39606:2;39571:38;;;39593:2;39571:38;39553:57;;:8;:57;:::i;:::-;39533:77;;39672:11;39763:13;39779:12;:26;;39801:4;39779:26;;;39794:4;39779:26;-1:-1:-1;;;;;39763:42:94;;;40381:5;40354:17;:33;;;;;:::i;:::-;;40941:29;;;;-1:-1:-1;41478:29:94;;;;-1:-1:-1;;;40685:20:94;;-1:-1:-1;41582:42:94;41600:18;40685:20;41582:17;:42::i;:::-;41575:4;:49;41552:73;;41663:13;41647:29;;41830:17;41813:13;:34;41809:270;;513:32:96;41891:30:94;;:165;;42009:46;42027:18;42047:3;42053:1;42047:7;42009:17;:46::i;:::-;42002:4;:53;41891:165;;;-1:-1:-1;;;41891:165:94;41875:181;;41809:270;39654:2457;42157:256;42198:13;42229:17;42264:13;42295:8;42321:13;42352;-1:-1:-1;;42157:23:94;:256::i;:::-;42125:288;;-1:-1:-1;42125:288:94;-1:-1:-1;42434:47:94;42125:288;;42467:10;42479:1;42434:3;:47::i;:::-;42427:54;;;;;;;;;;;;38722:4122;42646:32;42650:17;42669:8;42646:3;:32::i;:::-;42614:64;;-1:-1:-1;42614:64:94;-1:-1:-1;42724:54:94;42730:18;42614:64;;42724:5;:54::i;:::-;42692:86;;-1:-1:-1;42692:86:94;-1:-1:-1;42799:34:94;42692:86;;42799:5;:34::i;:::-;42792:41;;;;;;;38722:4122;37944:4906;37791:5059;;;;;;:::o;55832:852::-;55915:14;55931:11;56120:1;56108:8;:13;56104:81;;-1:-1:-1;56149:17:94;;-1:-1:-1;56168:1:94;56141:29;;56104:81;-1:-1:-1;;56340:8:94;:14;56336:82;;;-1:-1:-1;56382:1:94;;-1:-1:-1;56385:17:94;56374:29;;56336:82;56528:11;56563:9;;;56549:2;:24;;56595:17;56549:24;56595;;;;:::i;:::-;;56643;;;;;55832:852;-1:-1:-1;;;;55832:852:94:o;53784:1452::-;53925:6;53987:14;53975:8;:26;53971:1249;;-1:-1:-1;54028:17:94;54021:24;;53971:1249;54087:8;54070:14;:25;54066:1154;;;54137:25;;;54199:2;54184:17;;;:38;;;54221:1;54205:12;:17;;54184:38;54180:127;;;1408:1;54246:42;;;;;54180:127;54478:12;54464:2;:27;54437:17;:55;;;;;:::i;:::-;;54430:62;;;;;54066:1154;54553:25;;;54615:2;54600:17;;;:38;;;54637:1;54621:12;:17;;54600:38;54596:163;;;54669:71;;-1:-1:-1;;;54669:71:94;;;;;6940:25:543;;;6981:18;;;6974:34;;;7024:18;;;7017:34;;;6913:18;;54669:71:94;6744:313:543;54596:163:94;54904:2;:27;;;54968:25;;;:17;54904:27;54968:25;54904:27;55015:16;;;;:::i;:::-;;:37;55011:162;;55083:71;;-1:-1:-1;;;55083:71:94;;;;;6940:25:543;;;6981:18;;;6974:34;;;7024:18;;;7017:34;;;6913:18;;55083:71:94;6744:313:543;55011:162:94;55197:8;-1:-1:-1;55190:15:94;;-1:-1:-1;;55190:15:94;7193:2230;7343:24;;7473:26;;7501;;7470:58;7547:1870;;;;1408:1;7690:53;;1495:1;7757:34;;7547:1870;;;7833:21;7845:9;7833;:21;:::i;:::-;7822:32;;7989:29;8021:48;8050:18;8021:28;:48::i;:::-;7989:80;;8083:29;8115:48;8144:18;8115:28;:48::i;:::-;8083:80;;8179:13;8197:52;8204:21;8227;8197:6;:52::i;:::-;8178:71;;;8264:22;8344:4;8336:5;:12;8332:114;;;8381:4;8372:13;;;-1:-1:-1;8425:2:94;8407:20;8332:114;8475:4;8467:5;:12;8463:114;;;8512:4;8503:13;;;-1:-1:-1;8556:2:94;8538:20;8463:114;8606:3;8598:5;:11;8594:111;;;8642:3;8633:12;;;-1:-1:-1;8685:1:94;8667:19;8594:111;8734:3;8726:5;:11;8722:111;;;8770:3;8761:12;;;-1:-1:-1;8813:1:94;8795:19;8722:111;8857:9;;8850:108;;8899:2;8890:11;;;-1:-1:-1;8923:16:94;;8850:108;;;9086:34;9105:14;9086:34;;:::i;:::-;;-1:-1:-1;9167:239:94;9211:18;9247;9283:83;9290:21;9313;9336:29;9351:14;9344:2;9336:29;:::i;:::-;9283:6;:83::i;:::-;9384:8;9167:26;:239::i;:::-;9135:271;;-1:-1:-1;9135:271:94;-1:-1:-1;;;;;7547:1870:94;7390:2033;7193:2230;;;;;;;:::o;12966:8769::-;13116:6;13124;13150:18;13172:1;13150:23;13146:8583;;13196:45;;-1:-1:-1;;;13196:45:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;13196:45:94;4929:302:543;13146:8583:94;13262:18;13284:1;13262:23;13258:8471;;-1:-1:-1;1408:1:94;;-1:-1:-1;1408:1:94;13301:67;;13258:8471;13399:24;13437:15;13466:10;13490;13697:39;13706:18;13726:9;13697:8;:39::i;:::-;13656:80;;-1:-1:-1;13656:80:94;-1:-1:-1;13656:80:94;-1:-1:-1;13791:39:94;13800:18;13820:9;13791:8;:39::i;:::-;13750:80;;-1:-1:-1;13750:80:94;-1:-1:-1;13750:80:94;-1:-1:-1;13965:29:94;13997:48;14026:18;13997:28;:48::i;:::-;13965:80;;14059:29;14091:48;14120:18;14091:28;:48::i;:::-;14059:80;-1:-1:-1;;;;14212:2:94;14663:29;;;14659:4460;;;14716:5;14712:4269;;;-1:-1:-1;;;;14753:4:94;-1:-1:-1;14796:2:94;14712:4269;;;14873:4;14849:21;:28;14845:3675;;;14933:4;14909:21;:28;14905:1781;;;14997:4;14973:21;:28;14969:813;;;15065:3;15041:21;:27;15037:321;;;-1:-1:-1;15116:3:94;;-1:-1:-1;15174:1:94;14845:3675;;15037:321;-1:-1:-1;15262:4:94;;-1:-1:-1;15321:2:94;14845:3675;;14969:813;15456:4;15432:21;:28;15428:324;;;-1:-1:-1;15508:4:94;;-1:-1:-1;15567:2:94;14845:3675;;15428:324;-1:-1:-1;15656:4:94;;-1:-1:-1;15715:2:94;14845:3675;;14905:1781;15872:4;15848:21;:28;15844:816;;;15940:4;15916:21;:28;15912:324;;;-1:-1:-1;15992:4:94;;-1:-1:-1;16051:2:94;14845:3675;;15912:324;-1:-1:-1;16140:4:94;;-1:-1:-1;16199:2:94;14845:3675;;15844:816;16334:4;16310:21;:28;16306:324;;;-1:-1:-1;16386:4:94;;-1:-1:-1;16445:2:94;14845:3675;;16306:324;-1:-1:-1;16534:4:94;;-1:-1:-1;16593:2:94;14845:3675;;;16768:4;16744:21;:28;16740:1758;;;16832:4;16808:21;:28;16804:816;;;16900:4;16876:21;:28;16872:324;;;-1:-1:-1;16952:4:94;;-1:-1:-1;17011:2:94;14845:3675;;16872:324;-1:-1:-1;17100:4:94;;-1:-1:-1;17159:2:94;16740:1758;;16804:816;17294:4;17270:21;:28;17266:324;;;-1:-1:-1;17346:4:94;;-1:-1:-1;17405:2:94;14845:3675;;17266:324;-1:-1:-1;17494:4:94;;-1:-1:-1;17553:2:94;16740:1758;;;17710:4;17686:21;:28;17682:790;;;17778:4;17754:21;:28;17750:324;;;-1:-1:-1;17830:4:94;;-1:-1:-1;17889:2:94;17682:790;;17750:324;-1:-1:-1;17978:4:94;;-1:-1:-1;18037:2:94;17682:790;;;18172:4;18148:21;:28;18144:298;;;-1:-1:-1;18224:4:94;;-1:-1:-1;18283:2:94;18144:298;18641:5;18616:21;:30;18609:214;;18723:2;18714:11;;;-1:-1:-1;;;18755:19:94;18609:214;;;18848:5;18857:1;18848:10;18844:119;;18893:47;;-1:-1:-1;;;18893:47:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;18893:47:94;4929:302:543;18844:119:94;19003:5;18998:107;;19039:47;;-1:-1:-1;;;19039:47:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;19039:47:94;4929:302:543;18998:107:94;19587:14;-1:-1:-1;;;19568:33:94;19555:9;:46;19551:623;;19638:14;19625:27;;;;19551:623;;;-1:-1:-1;;;19729:16:94;19699:46;;;;19839:1;19822:18;;19818:338;;;19904:14;-1:-1:-1;;;;;19885:33:94;19872:9;:46;19868:266;;19950:27;;;;19868:266;;;1408:1;1495;20040:67;;;;;;;;;;;;;;19868:266;20202:26;20352:1;20340:9;:13;:30;;;;;20369:1;20357:9;:13;20340:30;20336:222;;;-1:-1:-1;;;20412:28:94;;20484:20;;;:55;;20537:1;20484:55;;;20519:8;20507:9;:20;20484:55;20462:77;;20372:186;20336:222;20621:9;20599:19;20587:9;:31;:43;20576:54;;20681:235;20729:18;20769;20809:59;20816:21;20839:5;20846:21;20809:6;:59::i;:::-;20890:8;20681:26;:235::i;:::-;20649:267;;-1:-1:-1;20649:267:94;-1:-1:-1;20961:1:94;20939:23;;20935:716;;;21012:2;20990:19;:24;20986:308;;;1408:1;1495;21204:67;;;;;;;;;;;;;;;20986:308;21479:19;21465:2;:34;21437:63;;;;;;:::i;:::-;;;;21526:17;21547:1;21526:22;21522:111;;1495:1;21576:34;;21522:111;-1:-1:-1;21676:17:94;;-1:-1:-1;21695:8:94;;-1:-1:-1;21668:36:94;;-1:-1:-1;;;;;;21668:36:94;13258:8471;12966:8769;;;;;;;:::o;34854:365::-;35003:4;35078:76;35093:18;35113:9;35124:18;35144:9;35078:14;:76::i;:::-;35172:40;;34854:365;-1:-1:-1;;;;;34854:365:94:o;2112:2562:93:-;2200:13;2257:71;2300:17;2319:8;2257:42;:71::i;:::-;2225:103;;-1:-1:-1;2225:103:93;-1:-1:-1;2339:13:93;;2397:24;-1:-1:-1;;;2225:103:93;2397:24;:::i;:::-;:29;2393:179;;-1:-1:-1;;;;2482:4:93;-1:-1:-1;2458:2:93;2393:179;;;-1:-1:-1;;;;2557:4:93;-1:-1:-1;2533:2:93;2393:179;2719:15;2737:33;2764:5;2737:17;:33;:::i;:::-;2719:51;-1:-1:-1;2917:17:93;2937:33;2964:5;2937:17;:33;:::i;:::-;2917:53;;2981:10;3024:1;3013:8;:12;3009:89;;;-1:-1:-1;3049:4:93;3078:9;3079:8;3078:9;:::i;:::-;3067:20;;3009:89;3124:1;3111:10;:14;3107:95;;;-1:-1:-1;3149:4:93;3180:11;3181:10;3180:11;:::i;:::-;3167:24;;3107:95;3212:35;;;;;;;;;:30;:35;;3261:15;;3257:819;;3292:24;;3354:10;3362:2;3354:5;:10;:::i;:::-;3334:30;;3518:128;3525:30;3545:9;3525:10;:30;:::i;:::-;3559:1;3525:35;3518:128;;3580:15;3593:2;3580:15;;:::i;:::-;;-1:-1:-1;3613:18:93;;;;:::i;:::-;;;;3518:128;;;3660:41;;;;;;;;;:36;:41;;;3715:147;3739:16;3735:1;:20;3715:147;;;3819:22;3805:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3805:42:93;;;;;;;;;;-1:-1:-1;3757:3:93;;3715:147;;;;3876:78;3883:15;3896:2;3883:10;:15;:::i;:::-;3902:1;3883:20;3876:78;;3923:16;3937:2;3923:16;;:::i;:::-;;;3876:78;;;4006:22;4030:34;4053:10;4030:22;:34::i;:::-;3987:78;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3968:97;;3278:798;;;3257:819;4086:28;4117:32;4140:8;4117:22;:32::i;:::-;4086:63;-1:-1:-1;4333:22:93;4358:32;4376:13;4358:8;:32;:::i;:::-;4333:57;-1:-1:-1;4400:28:93;4443:20;;:87;;4490:39;4513:15;4490:22;:39::i;:::-;4471:59;;;;;;;;:::i;:::-;;;;;;;;;;;;;4443:87;;;;;;;;;;;;;;;;4400:130;;4540:20;4563:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4563:16:93;;;;4540:39;;4610:6;4618:14;4634:16;4652:14;4596:71;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4589:78;;;;;;;;;;;;2112:2562;;;;:::o;5044:3560::-;5135:13;1062:4;5164:8;:38;:81;;;-1:-1:-1;5217:28:93;1062:4;5217:28;:::i;:::-;5206:8;:39;5164:81;5160:149;;;5268:30;;-1:-1:-1;;;5268:30:93;;;;;399:25:543;;;372:18;;5268:30:93;226:204:543;5160:149:93;5319:10;5332:21;;;;5388:495;;;;5626:18;5627:17;5626:18;:::i;:::-;5608:37;;5388:495;;;-1:-1:-1;5854:17:93;5388:495;5893:19;5921:25;5938:7;5921:16;:25::i;:::-;5969:13;;5893:54;;-1:-1:-1;5957:9:93;6232:106;6255:1;6239:13;:17;:57;;;;-1:-1:-1;6260:6:93;6275:13;6267:5;6271:1;6267;:5;:::i;:::-;:21;;;;:::i;:::-;6260:29;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;6260:29:93;-1:-1:-1;;;6260:36:93;6239:57;6232:106;;;6312:15;;;;:::i;:::-;;;;6232:106;;;6347:12;6362:17;6366:13;6362:1;:17;:::i;:::-;6347:32;-1:-1:-1;6556:13:93;6572:32;6590:13;6572:8;:32;:::i;:::-;6556:48;;6615:20;6638:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6638:16:93;;;;6615:39;;6679:1;6669:6;:11;6665:594;;6926:6;6900:15;6976:14;6926:6;6976:4;:14;:::i;:::-;6966:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6966:25:93;;6947:44;;7010:9;7005:86;7029:4;7025:1;:8;7005:86;;;7067:6;7074:1;7067:9;;;;;;;;:::i;:::-;;;;;;;;;7058:3;7062:1;7058:6;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;7058:18:93;;;;;;;;-1:-1:-1;7035:3:93;;7005:86;;;;7109:9;7104:90;7128:7;7124:1;:11;7104:90;;;-1:-1:-1;;;7160:3:93;7164:8;7171:1;7164:4;:8;:::i;:::-;7160:13;;;;;;;;:::i;:::-;;;;:19;-1:-1:-1;;;;;7160:19:93;;;;;;;;-1:-1:-1;7137:3:93;;7104:90;;;;7228:6;7243:3;7214:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7207:41;;;;;;;;;;;;;;6665:594;7472:17;7500:7;7501:6;7500:7;:::i;:::-;7472:36;;7530:9;7523:4;:16;7519:1079;;;7620:15;7638:16;7645:9;7638:4;:16;:::i;:::-;7620:34;-1:-1:-1;7668:16:93;7697:8;:4;7704:1;7697:8;:::i;:::-;7687:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7687:19:93;;7668:38;;7725:9;7720:89;7744:7;7740:1;:11;7720:89;;;7785:6;7792:1;7785:9;;;;;;;;:::i;:::-;;;;;;;;;7776:3;7780:1;7776:6;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;7776:18:93;;;;;;;;-1:-1:-1;7753:3:93;;7720:89;;;;-1:-1:-1;;;7822:3:93;7826:7;7822:12;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;7822:18:93;;;;;;;;;7859:9;7854:115;7878:9;7874:1;:13;7854:115;;;7935:6;7942:11;7952:1;7942:7;:11;:::i;:::-;7935:19;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;7935:19:93;7912:3;7930:1;7916:11;:7;7926:1;7916:11;:::i;:::-;:15;;;;:::i;:::-;7912:20;;;;;;;;:::i;:::-;;;;:42;-1:-1:-1;;;;;7912:42:93;;;;;;;;-1:-1:-1;7889:3:93;;7854:115;;;;8003:6;8018:3;7989:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7982:41;;;;;;;;;;;;;;;7519:1079;8131:25;8159:16;8171:4;8159:9;:16;:::i;:::-;8131:44;-1:-1:-1;8189:16:93;8242:4;8218:21;8131:44;8218:1;:21;:::i;:::-;:28;;;;:::i;:::-;8208:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8208:39:93;;8189:58;;-1:-1:-1;;;8261:3:93;8265:1;8261:6;;;;;;;;:::i;:::-;;;;:12;-1:-1:-1;;;;;8261:12:93;;;;;;;;;-1:-1:-1;;;8287:3:93;8291:1;8287:6;;;;;;;;:::i;:::-;;;;:12;-1:-1:-1;;;;;8287:12:93;;;;;;;;;8318:9;8313:97;8337:17;8333:1;:21;8313:97;;;-1:-1:-1;;;8379:3:93;8383:5;8387:1;8383;:5;:::i;:::-;8379:10;;;;;;;;:::i;:::-;;;;:16;-1:-1:-1;;;;;8379:16:93;;;;;;;;-1:-1:-1;8356:3:93;;8313:97;;;;8428:9;8423:110;8447:4;8443:1;:8;8423:110;;;8509:6;8516:1;8509:9;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;8509:9:93;8476:3;8504:1;8480:21;8484:17;8480:1;:21;:::i;:::-;:25;;;;:::i;:::-;8476:30;;;;;;;;:::i;:::-;;;;:42;-1:-1:-1;;;;;8476:42:93;;;;;;;;-1:-1:-1;8453:3:93;;8423:110;;8180:373:91;8268:6;8276;8295:24;8321:15;8338:13;8355:38;8377:5;8384:8;8355:21;:38::i;:::-;8294:99;;;;;;8408:8;8403:98;;8439:51;;-1:-1:-1;;;8439:51:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;8439:51:91;4929:302:543;8403:98:91;-1:-1:-1;8518:17:91;;;;-1:-1:-1;8180:373:91;-1:-1:-1;;;8180:373:91:o;19156:299::-;19244:5;19262:7;19271:13;19288:38;19298:17;19317:8;19288:9;:38::i;:::-;19261:65;;;;19341:8;19336:95;;19372:48;;-1:-1:-1;;;19372:48:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;19372:48:91;4929:302:543;33785:339:94;33935:6;33943;33999:36;34005:18;34025:9;33999:5;:36::i;:::-;33965:70;;-1:-1:-1;33965:70:94;-1:-1:-1;34052:65:94;34056:18;34076:9;33965:70;;34052:3;:65::i;:::-;34045:72;;;;33785:339;;;;;;;:::o;14844:390:91:-;14982:7;15006:13;15021;15038:58;15058:17;15077:8;15087;15038:19;:58::i;:::-;15005:91;;;;15111:8;15106:100;;15142:53;;-1:-1:-1;;;15142:53:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;15142:53:91;4929:302:543;15106:100:91;-1:-1:-1;15222:5:91;14844:390;-1:-1:-1;;;;14844:390:91:o;29621:3681:94:-;29771:6;;30037:26;;30065;;30034:58;30111:217;;;;30145:18;30167:1;30145:23;30141:177;;30196:18;30216:9;30188:38;;;;;;;30141:177;30273:18;30293:9;30265:38;;;;;;;30141:177;30565:43;30578:18;30598:9;30565:12;:43::i;:::-;30531:77;;-1:-1:-1;30531:77:94;-1:-1:-1;30652:43:94;30665:18;30685:9;30652:12;:43::i;:::-;30618:77;;-1:-1:-1;30618:77:94;-1:-1:-1;30816:21:94;;;30812:268;;;30919:18;;31031:9;;30866:18;;30812:268;31764:21;;;824:2;31948:45;;31944:122;;;32021:18;32041:9;32013:38;;;;;;;;31944:122;32285:21;32279:2;:27;32250:57;;;;;;:::i;:::-;;;-1:-1:-1;;32400:39:94;;;32658:26;;;32555:4;32648:37;;;32641:45;32734:18;32561:43;;;32551:54;;;32544:62;32718:35;32826:412;;;;32885:9;-1:-1:-1;;;;;32865:29:94;32861:130;;32925:47;;-1:-1:-1;;;32925:47:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;32925:47:94;4929:302:543;32861:130:94;33031:2;33051:24;;;;33009;;;;33122:40;;;33093:11;;;;;;32826:412;;;33222:1;33201:22;;32826:412;-1:-1:-1;33265:18:94;;33285:9;;-1:-1:-1;;;;;;29621:3681:94:o;50744:2689::-;50905:6;;51455:26;;51483;;51452:58;51601:26;;;51629;;;51597:59;51374:308;51761:24;;;51346:461;51842:105;;;;51889:18;51909;51881:47;;;;;;;51842:105;51232:729;51975:12;52025:9;52013;:21;52009:329;;;-1:-1:-1;52124:18:94;;52248:9;;52067:18;;52319:4;52009:329;52374:21;;;52352:19;52500:20;;52540:2;52522:21;;52497:47;52571:210;;;;52610:7;52606:161;;;52649:1;52652:18;52641:30;;;;;;;;;52606:161;52726:18;52746:1;52718:30;;;;;;;;;52606:161;52914:2;:27;;;52974:26;;;:18;52914:27;52974:26;52914:27;53019:16;;;;:::i;:::-;;:38;53015:402;;53081:7;53077:161;;;53120:1;53123:18;53112:30;;;;;;;;;;;53077:161;53197:18;53217:1;53189:30;;;;;;;;;;;53015:402;53262:7;53258:159;;;53297:18;;-1:-1:-1;53317:8:94;-1:-1:-1;53289:37:94;;-1:-1:-1;;;;53289:37:94;53258:159;53373:8;-1:-1:-1;53383:18:94;;-1:-1:-1;53365:37:94;;-1:-1:-1;;;;53365:37:94;2977:541;3058:6;3066;-1:-1:-1;;;3184:17:94;:37;3180:271;;-1:-1:-1;;;;;3245:8:94;:28;3241:127;;3304:45;;-1:-1:-1;;;3304:45:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;3304:45:94;4929:302:543;3241:127:94;3406:2;3385:23;;;;3426:10;;;;;3180:271;-1:-1:-1;;3472:18:94;;;;;;2977:541::o;1751:6678:95:-;1859:20;1987:5;1859:20;;2015:55;1987:5;2045:3;7516:41:121;2015:21:95;:55::i;:::-;2006:64;-1:-1:-1;2102:15:95;;;;2006:64;2201:53;2006:64;2231:3;20378:131:121;2201:21:95;:53::i;:::-;2192:62;;2286:8;2276:6;:18;2272:120;;-1:-1:-1;;;;2326:32:95;-1:-1:-1;2368:1:95;;-1:-1:-1;2368:1:95;;-1:-1:-1;2318:55:95;;-1:-1:-1;2318:55:95;2272:120;2411:37;2450:27;2501:61;2548:5;2555:6;2501:46;:61::i;:::-;2410:152;;-1:-1:-1;2410:152:95;-1:-1:-1;;;;;;;2584:35:95;;;2580:135;;-1:-1:-1;2651:30:95;-1:-1:-1;2691:1:95;;-1:-1:-1;2691:1:95;;-1:-1:-1;2643:53:95;;-1:-1:-1;;2643:53:95;2580:135;1870:13:122;;2752:20:95;;-1:-1:-1;7662:41:121;1886:1:122;2801:16:95;1862:22:122;;;;1858:30;;;;1854:41;1847:49;1840:57;1823:15;;;1819:79;;-1:-1:-1;;2899:14:95;;2895:3973;;-1:-1:-1;2964:8:95;;;;;2945:1;2964:8;3043:53;2964:8;3073:3;20378:131:121;3043:21:95;:53::i;:::-;3034:62;;3128:9;3118:6;:19;3114:119;;-1:-1:-1;;;;3169:30:95;-1:-1:-1;3209:1:95;;-1:-1:-1;3209:1:95;;-1:-1:-1;3161:53:95;;-1:-1:-1;;3161:53:95;3114:119;3406:6;3430:125;-1:-1:-1;;3457:17:95;;1870:13:122;;1823:15;;-1:-1:-1;1886:1:122;1688:14;1862:22;;;;1858:30;;;;7945:41:121;1854::122;1847:49;1840:57;1819:79;3496:1:95;3437:60;3430:125;;-1:-1:-1;;3521:15:95;3430:125;;;3594:9;3577:13;:26;3573:403;;3628:24;3654:19;3701:72;3748:9;3759:13;3701:46;:72::i;:::-;3627:146;;-1:-1:-1;3627:146:95;-1:-1:-1;;;;;;;3799:22:95;;;3795:117;;-1:-1:-1;3857:17:95;-1:-1:-1;3884:1:95;;-1:-1:-1;3884:1:95;;-1:-1:-1;3849:40:95;;-1:-1:-1;;;;3849:40:95;3795:117;3945:12;-1:-1:-1;;3573:403:95;4079:1;4067:9;:13;4063:113;;;-1:-1:-1;;;;4112:30:95;-1:-1:-1;4152:1:95;;-1:-1:-1;4152:1:95;;-1:-1:-1;4104:53:95;;-1:-1:-1;;;4104:53:95;4063:113;4197:10;4193:79;;;4244:9;4243:10;;4231:22;;4193:79;4724:13;4704:9;4697:41;4686:52;;4843:1;4832:8;:12;4828:114;;;-1:-1:-1;;;;4876:32:95;-1:-1:-1;4918:1:95;;-1:-1:-1;4918:1:95;;-1:-1:-1;4868:55:95;;-1:-1:-1;;;4868:55:95;4828:114;4964:17;4985:1;4964:22;4960:1894;;5030:9;5010:29;;4960:1894;;;5210:13;5234:9;;;5717:2;5709:10;;5705:122;;;-1:-1:-1;;;;5755:34:95;-1:-1:-1;5799:1:95;;-1:-1:-1;5799:1:95;;-1:-1:-1;5747:57:95;;-1:-1:-1;;;;5747:57:95;5705:122;5856:2;:11;6024:33;;;5998:23;6024:17;5856:11;6024:33;5856:11;6241:32;;;;:::i;:::-;;:53;;;-1:-1:-1;6556:44:95;;;;;;;6241:53;;6626:32;;;6644:14;6626:32;6622:144;;;-1:-1:-1;;;;6694:34:95;-1:-1:-1;6738:1:95;;-1:-1:-1;6738:1:95;;-1:-1:-1;6686:57:95;;-1:-1:-1;;;;;;;6686:57:95;6622:144;-1:-1:-1;;6807:28:95;;;-1:-1:-1;;4960:1894:95;2915:3953;;2895:3973;1870:13:122;;20571:29:121;1886:1:122;6882:13:95;1862:22:122;;;;1858:30;;;;1854:41;1847:49;1840:57;1823:15;;;1819:79;6974:11:95;;6970:1209;;7005:8;;;;;;7081:55;7005:8;7111:3;7516:41:121;7081:21:95;:55::i;:::-;7072:64;-1:-1:-1;7072:64:95;7235:53;7072:64;7265:3;20378:131:121;7235:21:95;:53::i;:::-;7226:62;;7324:11;7314:6;:21;7310:131;;-1:-1:-1;;;;7371:32:95;-1:-1:-1;7413:1:95;;-1:-1:-1;7413:1:95;;-1:-1:-1;7363:55:95;;-1:-1:-1;;;;7363:55:95;7310:131;7154:305;7500:21;7523:16;7567:62;7614:6;7622;7567:46;:62::i;:::-;7499:130;;-1:-1:-1;7499:130:95;-1:-1:-1;;;;;;;7655:19:95;;;7651:111;;-1:-1:-1;7710:14:95;-1:-1:-1;7734:1:95;;-1:-1:-1;7734:1:95;;-1:-1:-1;7702:37:95;;-1:-1:-1;;;;7702:37:95;7651:111;7792:9;-1:-1:-1;;7881:17:95;;;7860:18;7925:10;;:36;;;;;7953:8;7939:11;:22;7925:36;7924:80;;;;7976:1;7967:6;:10;:36;;;;;7995:8;7981:11;:22;7967:36;7920:183;;;-1:-1:-1;;;;8040:25:95;-1:-1:-1;8075:1:95;;-1:-1:-1;8075:1:95;;-1:-1:-1;8032:48:95;;-1:-1:-1;;;;8032:48:95;7920:183;8135:11;-1:-1:-1;;6970:1209:95;8197:17;8218:1;8197:22;8193:220;;8397:1;8386:12;;8193:220;1954:6469;;;1751:6678;;;;;;;;:::o;16515:2402:91:-;16600:11;17032:46;;;;;;16696:17;16752:8;17032:46;17356:668;;17413:4;17393:17;:24;:29;17389:135;;17467:3;17446:24;;;;17504:1;17492:13;;;;17389:135;17763:17;17741;17734:46;;;17727:151;;17825:2;17804:23;;;;17849:10;;;;;17727:151;;;17356:668;;;17920:17;17941:1;17920:22;17916:94;;-1:-1:-1;3702:1:91;;-1:-1:-1;17986:4:91;;-1:-1:-1;17966:25:91;;-1:-1:-1;17966:25:91;17916:94;18234:8;18221;18215:27;;;18211:393;;18436:1;18425:8;:12;18421:85;;;-1:-1:-1;3702:1:91;;-1:-1:-1;3702:1:91;;-1:-1:-1;18461:26:91;;-1:-1:-1;18461:26:91;18421:85;18530:59;;-1:-1:-1;;;18530:59:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;18530:59:91;4929:302:543;18211:393:91;-1:-1:-1;;;;;;;18837:28:91;;18871:4;18867:19;;;18834:53;;-1:-1:-1;16515:2402:91;;;;;:::o;6103:800::-;6188:6;;;6270:17;;;6262:26;;-1:-1:-1;;;;;6419:33:91;;6415:472;;;6632:2;6624:5;:10;6648:1;6637:12;;6659:2;6651:5;:10;6665:1;6651:15;6609:58;;;;;;;;;6415:472;6849:5;;-1:-1:-1;6857:8:91;-1:-1:-1;6867:4:91;;-1:-1:-1;6103:800:91;;;;;;:::o;57066:978:94:-;57151:6;57159:4;57165:6;57211:8;-1:-1:-1;;57211:14:94;57207:821;;-1:-1:-1;57253:17:94;;-1:-1:-1;57272:5:94;;-1:-1:-1;57279:1:94;57245:36;;57207:821;-1:-1:-1;;57306:8:94;:13;57302:726;;;-1:-1:-1;;57343:8:94;:14;57339:98;;;-1:-1:-1;57389:1:94;;-1:-1:-1;;57392:22:94;;;57416:1;57381:37;;57339:98;57454:12;57492:8;57503:1;57492:12;57490:15;;57476:2;:30;57454:53;;57592:15;57630:5;57610:17;:25;;;;;:::i;:::-;;;-1:-1:-1;;57671:16:94;;;:37;;;;-1:-1:-1;57682:5:94;-1:-1:-1;57653:63:94;;57302:726;57753:1;57741:8;:13;57737:291;;-1:-1:-1;57782:1:94;;-1:-1:-1;57782:1:94;;-1:-1:-1;57792:1:94;57774:20;;57737:291;-1:-1:-1;;;57988:1:94;:12;;57974:2;:27;57947:55;;58004:5;58011:1;57939:74;;58539:1243;58674:20;;;1447:3:96;1145:33;1176:2;397:4;1145:33;:::i;:::-;;1176:2;397:4;1145:33;:::i;:::-;1294:23;;1316:1;1294:23;:::i;:::-;58911:24:94;;:1;:24;:::i;:::-;:46;;;;:::i;:::-;:79;;;;:::i;:::-;58890:100;;59102:477;;;59187:1;59184;59177:12;59267:1;59262;59257:2;59250:5;59246:14;59242:22;59234:6;59230:35;59226:2;59218:6;59206:63;59152:6;59312:1;59306:8;59354:24;59346:6;59342:37;59332:47;;59406:1;59403;59396:12;59509:1;59502:2;59495:5;59491:14;59486:2;59480:3;59473:5;59469:15;59465:24;59461:45;59453:6;59449:58;59445:2;59437:6;59425:86;59562:1;59556:8;59538:27;;59102:477;-1:-1:-1;;;;59102:477:94:o;:::-;59610:51;59657:3;59645:10;59625:18;59610:51;:::i;:::-;59593:68;;59677:8;59674:92;;;59705:59;59761:1;59756:3;59752:11;59740:10;59720:18;59705:59;:::i;:::-;59688:76;;59025:751;58539:1243;;;;;;:::o;60320:1618::-;60583:6;60591;60691:13;60675:12;:29;60671:93;;-1:-1:-1;60728:13:94;;-1:-1:-1;60743:9:94;60720:33;;60671:93;60773:33;60816:24;60888;60914:21;60939:54;60943:12;60957:9;60968:13;60983:9;60939:3;:54::i;:::-;60887:106;;;;61032:23;61057:20;61081:55;61085:13;61100:9;61111:13;61126:9;61081:3;:55::i;:::-;61031:105;;;;61253:71;61257:17;61276:14;61292:16;61310:13;61253:3;:71::i;:::-;61187:137;;;;;;;;60851:484;;;;61365:24;61391:21;61416:55;61420:13;61435:9;61446:13;61461:9;61416:3;:55::i;:::-;61364:107;;;;61529:33;61564:24;61604:85;61608:26;61636:17;61655;61674:14;61604:3;:85::i;:::-;61528:161;;;;61752:24;61778:15;61809:76;61813:26;61841:17;61860:13;61875:9;61809:3;:76::i;:::-;61751:134;;-1:-1:-1;61751:134:94;-1:-1:-1;;;;;;;;;60320:1618:94;;;;;;;;;;;:::o;48286:370::-;48374:6;48382;48401:27;48430:18;48450:9;48463:37;48472:17;48491:8;48463;:37::i;:::-;48400:100;;;;;;48515:4;48510:88;;48542:45;;-1:-1:-1;;;48542:45:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;48542:45:94;4929:302:543;35925:1328:94;36006:14;;1145:33:96;1176:2;397:4;1145:33;:::i;:::-;1294:23;;1316:1;1294:23;:::i;:::-;36104:24:94;;36127:1;36104:24;:::i;:::-;36077:51;-1:-1:-1;36138:24:94;1145:33:96;1176:2;397:4;1145:33;:::i;:::-;36138:46:94;;36537:1;36532:2;36525:5;36521:14;36517:22;36514:1;36510:30;36563:1;36560;36553:12;36614:1;36602:10;36598:2;36590:6;36578:38;;36655:1;36649:8;36699:6;36685:12;36681:25;36671:35;;36754:6;36740:12;36736:25;36729:33;36719:136;;36802:39;;;;36719:136;;36879:1;36876;36869:12;37191:1;37184:2;37177:5;37173:14;37168:2;37162:3;37155:5;37151:15;37147:24;37143:45;37125:16;37121:68;37117:2;37109:6;37097:96;-1:-1:-1;;37234:1:94;37228:8;37216:21;;35925:1328;-1:-1:-1;;35925:1328:94:o;3731:701::-;3818:7;3885:1;3865:17;:21;3861:555;;;-1:-1:-1;;;3910:17:94;:37;3906:316;;-1:-1:-1;;;;3978:29:94;3731:701;-1:-1:-1;3731:701:94:o;3906:316::-;-1:-1:-1;4184:18:94;;;3731:701::o;3861:555::-;-1:-1:-1;4383:17:94;3731:701::o;3861:555::-;3731:701;;;:::o;21872:550::-;21933:12;;-1:-1:-1;;22316:1:94;22313;22306:20;22346:9;;;;22394:11;;;22380:12;;;;22376:30;;;;;21872:550;-1:-1:-1;;21872:550:94:o;22585:4048::-;22667:14;22694:13;22709;22726:12;22733:1;22736;22726:6;:12::i;:::-;22693:45;;;;22812:5;22821:1;22812:10;22808:109;;22881:11;22873:5;:19;;;;;:::i;:::-;;22866:26;;;;;;22808:109;23024:11;23015:5;:20;23011:91;;23058:33;;-1:-1:-1;;;23058:33:94;;;;;6940:25:543;;;6981:18;;;6974:34;;;7024:18;;;7017:34;;;6913:18;;23058:33:94;6744:313:543;23011:91:94;23394:17;23553:11;23550:1;23547;23540:25;24154:1;24139:12;;:16;;24124:32;;24393:25;;;;;25554:1;25535;:15;;25534:21;;25787;;;25783:25;;25772:36;25856:21;;;25852:25;;25841:36;25926:21;;;25922:25;;25911:36;25996:21;;;25992:25;;25981:36;26066:21;;;26062:25;;26051:36;26137:21;;;26133:25;;;26122:36;24106:15;25003;;;24999:29;;;24995:37;;;23659:20;;;23648:32;;;25121:22;;;;23702:21;;;;24565:19;;;;25112:31;;;;26601:15;;-1:-1:-1;;22585:4048:94;;;;;:::o;5040:1698::-;5190:6;5198;5312:1;5307;5303;:5;5302:11;5298:1434;;;-1:-1:-1;;;;;5333:20:94;:48;5329:830;;;5429:29;-1:-1:-1;;;;;5457:1:94;5429:29;:::i;:::-;5405:20;:53;5401:529;;-1:-1:-1;;;;5600:16:94;-1:-1:-1;5618:8:94;5592:35;;5401:529;5870:25;5893:2;5870:20;:25;:::i;:::-;5862:34;;;:::i;:::-;5898:12;:8;5909:1;5898:12;:::i;:::-;5854:57;;;;;;5329:830;6104:29;6112:20;6104:29;:::i;:::-;6135:8;6096:48;;;;;;5298:1434;-1:-1:-1;;;;;6193:20:94;:48;6189:533;;;6444:25;6467:2;6444:20;:25;:::i;6189:533::-;-1:-1:-1;6675:20:94;;-1:-1:-1;6698:8:94;6660:47;;45918:1994;46002:6;46010;46018:4;46062:17;46083:1;46062:22;46058:134;;-1:-1:-1;1408:1:94;;-1:-1:-1;1408:1:94;;-1:-1:-1;46172:4:94;46104:73;;46058:134;-1:-1:-1;;;46311:17:94;:24;46339:1;46311:29;46307:1005;;46384:4;46364:17;:24;:29;:66;;;;-1:-1:-1;46409:21:94;46397:33;;;46364:66;46360:174;;;46475:4;46454:25;;;;46513:2;46501:14;;;;46360:174;46576:4;46556:17;:24;:29;:66;;;;-1:-1:-1;46601:21:94;46589:33;;;46556:66;46552:174;;;46667:4;46646:25;;;;46705:2;46693:14;;;;46552:174;46768:4;46748:17;:24;:29;:66;;;;-1:-1:-1;46793:21:94;46781:33;;;46748:66;46744:174;;;46859:4;46838:25;;;;46897:2;46885:14;;;;46744:174;46963:4;46943:17;:24;:29;:65;;;;-1:-1:-1;46988:20:94;46976:32;;;46943:65;46936:174;;;47053:3;47032:24;;;;47090:1;47078:13;;;;46936:174;;;-1:-1:-1;;;47132:17:94;:24;:29;:65;;;;-1:-1:-1;;;;;;47165:32:94;;;47132:65;47128:170;;;47242:2;47221:23;;;;47278:1;47266:13;;;;47128:170;47606:2;47586:22;;;;;47647:25;47626:17;:46;:82;;;;-1:-1:-1;;;;;;47676:32:94;;;47626:82;47622:192;;;47748:20;47728:40;;47798:1;47786:13;;;;47622:192;-1:-1:-1;47836:17:94;;47855:8;;-1:-1:-1;;;;;;47865:24:94;;:29;;;45918:1994::o;1985:168:21:-;2046:13;2100:1;2092:5;:9;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2092:20:21;;;;2114:31;2436:3:30;2431:8;;;2576;;;2575:17;2114:8:21;:31::i;:::-;2078:68;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2071:75;;1985:168;;;:::o;1251:634::-;1307:13;1356:14;1373:17;1384:5;1373:10;:17::i;:::-;1393:1;1373:21;1356:38;;1408:20;1442:6;1431:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1431:18:21;-1:-1:-1;1408:41:21;-1:-1:-1;1538:30:21;;;1554:4;1538:30;1595:247;-1:-1:-1;;1626:5:21;1730:10;1725:2;1714:14;;1709:32;1626:5;1696:46;1786:2;1777:11;;;-1:-1:-1;1806:21:21;1595:247;1806:21;-1:-1:-1;1862:6:21;1251:634;-1:-1:-1;;;1251:634:21:o;835:346:122:-;919:7;1033:109;1107:1;1100:4;1096:1;1086:6;1080:13;1077:1;1072:22;1068:30;1064:41;1061:48;1055:3;1047:6;1044:15;1040:70;1033:109;;;1135:1;1127:6;1123:14;1113:24;;1033:109;;;-1:-1:-1;1168:6:122;;835:346;-1:-1:-1;;835:346:122:o;5044:1463:123:-;1870:13:122;;5135:6:123;;;;7516:41:121;1886:1:122;1862:22;;;1858:30;;;;1854:41;1847:49;1840:57;1823:15;;;1819:79;5304:15:123;;;;5135:6;;5374:53;5304:15;1823::122;5374:40:123;:53::i;:::-;5334:93;;-1:-1:-1;5334:93:123;-1:-1:-1;;;;;;;5476:26:123;;;5472:90;;-1:-1:-1;5530:13:123;-1:-1:-1;5545:1:123;;-1:-1:-1;5522:25:123;;-1:-1:-1;;5522:25:123;5472:90;5618:5;5627:1;5618:10;5614:341;;-1:-1:-1;;;;;5847:5:123;:33;:77;;5922:1;5847:77;;;-1:-1:-1;;;5847:77:123;5839:101;-1:-1:-1;5933:5:123;-1:-1:-1;5839:101:123;;-1:-1:-1;;;5839:101:123;5614:341;-1:-1:-1;;;6392:37:123;;:81;;6471:1;6392:81;;;-1:-1:-1;;;6392:81:123;6384:106;-1:-1:-1;6475:14:123;;;-1:-1:-1;;;;5044:1463:123;;;;;:::o;29471:916:28:-;29524:7;;29608:8;29599:17;;29595:103;;29645:8;29636:17;;;-1:-1:-1;29681:2:28;29671:12;29595:103;29724:8;29715:5;:17;29711:103;;29761:8;29752:17;;;-1:-1:-1;29797:2:28;29787:12;29711:103;29840:8;29831:5;:17;29827:103;;29877:8;29868:17;;;-1:-1:-1;29913:2:28;29903:12;29827:103;29956:7;29947:5;:16;29943:100;;29992:7;29983:16;;;-1:-1:-1;30027:1:28;30017:11;29943:100;30069:7;30060:5;:16;30056:100;;30105:7;30096:16;;;-1:-1:-1;30140:1:28;30130:11;30056:100;30182:7;30173:5;:16;30169:100;;30218:7;30209:16;;;-1:-1:-1;30253:1:28;30243:11;30169:100;30295:7;30286:5;:16;30282:66;;30332:1;30322:11;30374:6;29471:916;-1:-1:-1;;29471:916:28:o;1114:3326:123:-;1199:6;1207:7;1263:3;1254:5;:12;1250:95;;-1:-1:-1;;;;1294:32:123;-1:-1:-1;1328:1:123;1286:44;;1250:95;1511:5;1520:1;1511:10;1507:80;;1548:24;;-1:-1:-1;;;1548:24:123;;;;;;;;;;;1507:80;1808:18;1778:19;-1:-1:-1;;1912:7:123;;1778:19;2083:486;2100:5;2090:6;:15;;:32;;;;;2120:2;2109:8;:13;2090:32;2083:486;;;2434:13;;2518:10;;;;-1:-1:-1;;2546:8:123;;;;2468:2;2464:17;2431:1;2426:22;;;;2422:40;;;2418:64;2407:76;2083:486;;;2785:5;2775:6;:15;2771:1613;;2939:13;;2832;2931:22;2927:40;;;3167:1;3159:9;;3155:393;;;-1:-1:-1;;;;3204:29:123;-1:-1:-1;3235:1:123;;-1:-1:-1;3196:41:123;;-1:-1:-1;;;;3196:41:123;3155:393;3318:2;:14;;;3309:24;;3363:14;;;:22;-1:-1:-1;3359:126:123;;;-1:-1:-1;;;;3425:29:123;-1:-1:-1;3456:1:123;;-1:-1:-1;3417:41:123;;-1:-1:-1;;;;;3417:41:123;3359:126;3510:15;;;;;-1:-1:-1;;;3569:8:123;;;;3760:592;3777:5;3767:6;:15;3760:592;;4007:13;;3876:23;3999:22;4177:18;4150:46;;4146:150;;-1:-1:-1;;;;4236:29:123;-1:-1:-1;4267:1:123;;-1:-1:-1;4228:41:123;;-1:-1:-1;;;;4228:41:123;4146:150;-1:-1:-1;;;4321:8:123;;;;3760:592;;;4413:1;;4417:5;;-1:-1:-1;1114:3326:123;-1:-1:-1;;;;;;1114:3326:123:o;14:207:543:-;100:6;153:2;141:9;132:7;128:23;124:32;121:52;;;169:1;166;159:12;121:52;-1:-1:-1;192:23:543;;14:207;-1:-1:-1;14:207:543:o;435:302::-;557:6;565;618:2;606:9;597:7;593:23;589:32;586:52;;;634:1;631;624:12;586:52;-1:-1:-1;;657:23:543;;;727:2;712:18;;;699:32;;-1:-1:-1;435:302:543:o;742:156::-;808:20;;868:4;857:16;;847:27;;837:55;;888:1;885;878:12;903:277;996:6;1004;1057:2;1045:9;1036:7;1032:23;1028:32;1025:52;;;1073:1;1070;1063:12;1025:52;1109:9;1096:23;1086:33;;1138:36;1170:2;1159:9;1155:18;1138:36;:::i;:::-;1128:46;;903:277;;;;;:::o;1640:368::-;1732:6;1740;1793:2;1781:9;1772:7;1768:23;1764:32;1761:52;;;1809:1;1806;1799:12;1761:52;1845:9;1832:23;1822:33;;1905:2;1894:9;1890:18;1877:32;1952:5;1945:13;1938:21;1931:5;1928:32;1918:60;;1974:1;1971;1964:12;1918:60;1997:5;1987:15;;;1640:368;;;;;:::o;2013:418::-;2162:2;2151:9;2144:21;2125:4;2194:6;2188:13;2237:6;2232:2;2221:9;2217:18;2210:34;2296:6;2291:2;2283:6;2279:15;2274:2;2263:9;2259:18;2253:50;2352:1;2347:2;2338:6;2327:9;2323:22;2319:31;2312:42;2422:2;2415;2411:7;2406:2;2398:6;2394:15;2390:29;2379:9;2375:45;2371:54;2363:62;;;2013:418;;;;:::o;2873:127::-;2934:10;2929:3;2925:20;2922:1;2915:31;2965:4;2962:1;2955:15;2989:4;2986:1;2979:15;3005:922;3074:6;3127:2;3115:9;3106:7;3102:23;3098:32;3095:52;;;3143:1;3140;3133:12;3095:52;3183:9;3170:23;3212:18;3253:2;3245:6;3242:14;3239:34;;;3269:1;3266;3259:12;3239:34;3307:6;3296:9;3292:22;3282:32;;3352:7;3345:4;3341:2;3337:13;3333:27;3323:55;;3374:1;3371;3364:12;3323:55;3410:2;3397:16;3432:2;3428;3425:10;3422:36;;;3438:18;;:::i;:::-;3513:2;3507:9;3481:2;3567:13;;-1:-1:-1;;3563:22:543;;;3587:2;3559:31;3555:40;3543:53;;;3611:18;;;3631:22;;;3608:46;3605:72;;;3657:18;;:::i;:::-;3697:10;3693:2;3686:22;3732:2;3724:6;3717:18;3772:7;3767:2;3762;3758;3754:11;3750:20;3747:33;3744:53;;;3793:1;3790;3783:12;3744:53;3849:2;3844;3840;3836:11;3831:2;3823:6;3819:15;3806:46;3894:1;3872:15;;;3889:2;3868:24;3861:35;;;;-1:-1:-1;3876:6:543;3005:922;-1:-1:-1;;;;;3005:922:543:o;4237:397::-;4395:6;4403;4411;4464:2;4452:9;4443:7;4439:23;4435:32;4432:52;;;4480:1;4477;4470:12;4432:52;-1:-1:-1;;4503:23:543;;;4573:2;4558:18;;4545:32;;-1:-1:-1;4624:2:543;4609:18;;;4596:32;;4237:397;-1:-1:-1;4237:397:543:o;5485:127::-;5546:10;5541:3;5537:20;5534:1;5527:31;5577:4;5574:1;5567:15;5601:4;5598:1;5591:15;5944:127;6005:10;6000:3;5996:20;5993:1;5986:31;6036:4;6033:1;6026:15;6060:4;6057:1;6050:15;6076:200;6142:9;;;6115:4;6170:9;;6198:10;;6210:12;;;6194:29;6233:12;;;6225:21;;6191:56;6188:82;;;6250:18;;:::i;:::-;6188:82;6076:200;;;;:::o;6281:216::-;6345:9;;;6373:11;;;6320:3;6403:9;;6431:10;;6427:19;;6456:10;;6448:19;;6424:44;6421:70;;;6471:18;;:::i;:::-;6421:70;;6281:216;;;;:::o;6502:237::-;6574:9;;;6541:7;6599:9;;-1:-1:-1;;;6610:18:543;;6595:34;6592:60;;;6632:18;;:::i;:::-;6705:1;6696:7;6691:16;6688:1;6685:23;6681:1;6674:9;6671:38;6661:72;;6713:18;;:::i;7062:416::-;7151:1;7188:5;7151:1;7202:270;7223:7;7213:8;7210:21;7202:270;;;7282:4;7278:1;7274:6;7270:17;7264:4;7261:27;7258:53;;;7291:18;;:::i;:::-;7341:7;7331:8;7327:22;7324:55;;;7361:16;;;;7324:55;7440:22;;;;7400:15;;;;7202:270;;;7206:3;7062:416;;;;;:::o;7483:806::-;7532:5;7562:8;7552:80;;-1:-1:-1;7603:1:543;7617:5;;7552:80;7651:4;7641:76;;-1:-1:-1;7688:1:543;7702:5;;7641:76;7733:4;7751:1;7746:59;;;;7819:1;7814:130;;;;7726:218;;7746:59;7776:1;7767:10;;7790:5;;;7814:130;7851:3;7841:8;7838:17;7835:43;;;7858:18;;:::i;:::-;-1:-1:-1;;7914:1:543;7900:16;;7929:5;;7726:218;;8028:2;8018:8;8015:16;8009:3;8003:4;8000:13;7996:36;7990:2;7980:8;7977:16;7972:2;7966:4;7963:12;7959:35;7956:77;7953:159;;;-1:-1:-1;8065:19:543;;;8097:5;;7953:159;8144:34;8169:8;8163:4;8144:34;:::i;:::-;8214:6;8210:1;8206:6;8202:19;8193:7;8190:32;8187:58;;;8225:18;;:::i;:::-;8263:20;;7483:806;-1:-1:-1;;;7483:806:543:o;8294:131::-;8354:5;8383:36;8410:8;8404:4;8383:36;:::i;8430:193::-;8469:1;8495;8485:35;;8500:18;;:::i;:::-;-1:-1:-1;;;8536:18:543;;-1:-1:-1;;8556:13:543;;8532:38;8529:64;;;8573:18;;:::i;:::-;-1:-1:-1;8607:10:543;;8430:193::o;8628:112::-;8659:1;8685;8675:35;;8690:18;;:::i;:::-;-1:-1:-1;8724:10:543;;8628:112::o;8745:136::-;8780:3;-1:-1:-1;;;8801:22:543;;8798:48;;8826:18;;:::i;8886:120::-;8926:1;8952;8942:35;;8957:18;;:::i;:::-;-1:-1:-1;8991:9:543;;8886:120::o;9011:135::-;9050:3;9071:17;;;9068:43;;9091:18;;:::i;:::-;-1:-1:-1;9138:1:543;9127:13;;9011:135::o;9151:212::-;9193:3;9231:5;9225:12;9275:6;9268:4;9261:5;9257:16;9252:3;9246:36;9337:1;9301:16;;9326:13;;;-1:-1:-1;9301:16:543;;9151:212;-1:-1:-1;9151:212:543:o;9368:344::-;9589:3;9620:30;9646:3;9638:6;9620:30;:::i;:::-;-1:-1:-1;;;9659:18:543;;9704:1;9693:13;;9368:344;-1:-1:-1;;;9368:344:543:o;9717:390::-;-1:-1:-1;;;10011:3:543;10004:16;9986:3;10036:65;10062:38;10097:1;10092:3;10088:11;10080:6;10062:38;:::i;:::-;10054:6;10036:65;:::i;:::-;10029:72;9717:390;-1:-1:-1;;;;9717:390:543:o;10112:315::-;-1:-1:-1;;;10358:3:543;10351:16;10333:3;10383:38;10418:1;10413:3;10409:11;10401:6;10383:38;:::i;10432:417::-;10707:3;10732:111;10758:84;10784:57;10810:30;10836:3;10828:6;10810:30;:::i;:::-;10802:6;10784:57;:::i;:::-;10776:6;10758:84;:::i;11034:128::-;11101:9;;;11122:11;;;11119:37;;;11136:18;;:::i;11167:127::-;11228:10;11223:3;11219:20;11216:1;11209:31;11259:4;11256:1;11249:15;11283:4;11280:1;11273:15;11299:125;11364:9;;;11385:10;;;11382:36;;;11398:18;;:::i;11429:267::-;11608:3;11633:57;11659:30;11685:3;11677:6;11659:30;:::i;11701:168::-;11774:9;;;11805;;11822:15;;;11816:22;;11802:37;11792:71;;11843:18;;:::i","linkReferences":{}},"methodIdentifiers":{"FORMAT_DEFAULT_SCIENTIFIC_MAX()":"9b4afd99","FORMAT_DEFAULT_SCIENTIFIC_MIN()":"d35273a7","abs(bytes32)":"81a82272","add(bytes32,bytes32)":"d1de592a","ceil(bytes32)":"719cd99d","div(bytes32,bytes32)":"30297400","e()":"ffae15ba","eq(bytes32,bytes32)":"3447c030","floor(bytes32)":"5ca0e7a4","format(bytes32)":"a100a3d9","format(bytes32,bool)":"371493ce","format(bytes32,bytes32,bytes32)":"e5526ecd","frac(bytes32)":"28fa1f01","fromFixedDecimalLossless(uint256,uint8)":"3b3bd868","fromFixedDecimalLossy(uint256,uint8)":"e75f991f","gt(bytes32,bytes32)":"8dc29807","gte(bytes32,bytes32)":"73bfb283","integer(bytes32)":"e0db5888","inv(bytes32)":"04327dc5","isZero(bytes32)":"dd646917","log10(bytes32)":"25388350","lt(bytes32,bytes32)":"d102b4d3","lte(bytes32,bytes32)":"81f7e2f5","max(bytes32,bytes32)":"078b665b","maxNegativeValue()":"602c35fc","maxPositiveValue()":"cb09682b","min(bytes32,bytes32)":"a90d041a","minNegativeValue()":"cde72ef3","minPositiveValue()":"a19684b7","minus(bytes32)":"d3d6ffa8","mul(bytes32,bytes32)":"96ce1ec7","parse(string)":"bc62d8d8","pow(bytes32,bytes32)":"3004fa41","pow10(bytes32)":"1ee62f11","sqrt(bytes32)":"146e82ad","sub(bytes32,bytes32)":"41aa0080","toFixedDecimalLossless(bytes32,uint8)":"5b23771d","toFixedDecimalLossy(bytes32,uint8)":"0b6429bc","zero()":"bc1b392d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"CoefficientOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"DivisionByZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"ExponentOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"ExponentUnderflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"FixedDecimalOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"Log10Negative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Log10Zero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tablesAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"expectedCodehash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"actualCodehash\",\"type\":\"bytes32\"}],\"name\":\"LogTablesNotDeployed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"LossyConversionFromFloat\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"LossyConversionToFloat\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"MaximizeOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"NegativeFixedDecimalConversion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"PowNegativeBase\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"scientificMin\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"scientificMax\",\"type\":\"bytes32\"}],\"name\":\"ScientificMinNotLessThanMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"UnformatableExponent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"targetExponent\",\"type\":\"int256\"}],\"name\":\"WithTargetExponentOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"ZeroNegativePower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroStringStartPointer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FORMAT_DEFAULT_SCIENTIFIC_MAX\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FORMAT_DEFAULT_SCIENTIFIC_MIN\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"abs\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"add\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"ceil\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"div\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"e\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"eq\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"floor\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"scientific\",\"type\":\"bool\"}],\"name\":\"format\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"format\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"scientificMin\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"scientificMax\",\"type\":\"bytes32\"}],\"name\":\"format\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"frac\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"fromFixedDecimalLossless\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"fromFixedDecimalLossy\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"gt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"gte\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"integer\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"inv\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"isZero\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"log10\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"lt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"lte\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"max\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxNegativeValue\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPositiveValue\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"min\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minNegativeValue\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minPositiveValue\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"minus\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"mul\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"parse\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"pow\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"pow10\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"sqrt\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"sub\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"float\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"toFixedDecimalLossless\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"float\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"toFixedDecimalLossy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zero\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CoefficientOverflow(int256,int256)\":[{\"details\":\"Thrown when a coefficient overflows.\"}],\"DivisionByZero(int256,int256)\":[{\"details\":\"Thrown when dividing by zero.\",\"params\":{\"exponent\":\"The exponent of the numerator.\",\"signedCoefficient\":\"The signed coefficient of the numerator.\"}}],\"ExponentOverflow(int256,int256)\":[{\"details\":\"Thrown when an exponent overflows.\"}],\"ExponentUnderflow(int256,int256)\":[{\"details\":\"Thrown when an exponent underflows. Exponent underflow means the magnitude is smaller than any representable Float. Without this revert, arithmetic ops that compose to underflow (e.g. `mul` with two operands whose exponents sum below `int32.min`) would silently return `FLOAT_ZERO`, breaking downstream code that branches on `result == 0`.\"}],\"FixedDecimalOverflow(int256,int256,uint8)\":[{\"details\":\"Thrown when converting a Float to a fixed-decimal uint256 and the scaled value exceeds `uint256.max`. Returning a silent zero with `lossless=false` would decapitate the high bits of the value; reverting surfaces the overflow with the original inputs so callers can rescale or reject.\"}],\"Log10Negative(int256,int256)\":[{\"details\":\"Thrown when attempting to calculate the log of a negative number.\"}],\"Log10Zero()\":[{\"details\":\"Thrown when attempting to calculate the log of 0.\"}],\"LogTablesNotDeployed(address,bytes32,bytes32)\":[{\"details\":\"Thrown when constructing a `DecimalFloat` on a chain where the log tables data contract is not deployed at the expected address with the expected codehash. Without this check, transcendental functions (`pow10`/`log10`/`pow`/`sqrt`) would silently `extcodecopy` zero bytes and return garbage.\",\"params\":{\"actualCodehash\":\"The codehash currently at `tablesAddress` (zero if no contract is deployed there).\",\"expectedCodehash\":\"The codehash the deployed table contract is expected to have.\",\"tablesAddress\":\"The address `DecimalFloat` was compiled to read log tables from.\"}}],\"LossyConversionFromFloat(int256,int256)\":[{\"details\":\"Thrown when converting a float to some value when the conversion is lossy.\"}],\"LossyConversionToFloat(int256,int256)\":[{\"details\":\"Thrown when converting some value to a float when the conversion is lossy.\"}],\"MaximizeOverflow(int256,int256)\":[{\"details\":\"Thrown when a maximize overflows where it is not appropriate.\"}],\"MulDivOverflow(uint256,uint256,uint256)\":[{\"details\":\"Thrown when mulDiv internal to division overflows.\"}],\"NegativeFixedDecimalConversion(int256,int256)\":[{\"details\":\"Thrown when attempting to convert a negative number to an unsigned fixed-point number.\"}],\"PowNegativeBase(int256,int256)\":[{\"details\":\"Thrown when attempting to exponentiate a negative base.\"}],\"ScientificMinNotLessThanMax(bytes32,bytes32)\":[{\"details\":\"Thrown when scientificMin is not less than scientificMax in format.\",\"params\":{\"scientificMax\":\"The maximum threshold for scientific notation.\",\"scientificMin\":\"The minimum threshold for scientific notation.\"}}],\"UnformatableExponent(int256)\":[{\"details\":\"Thrown when the exponent cannot be formatted.\",\"params\":{\"exponent\":\"The exponent that cannot be formatted.\"}}],\"WithTargetExponentOverflow(int256,int256,int256)\":[{\"details\":\"Thrown when attempting to rescale a coefficient to a target exponent\"}],\"ZeroNegativePower(bytes32)\":[{\"details\":\"Thrown when attempting to exponentiate 0^b where b is negative.\"}]},\"kind\":\"dev\",\"methods\":{\"abs(bytes32)\":{\"params\":{\"a\":\"The float to get the absolute value of.\"},\"returns\":{\"_0\":\"The absolute value of the float.\"}},\"add(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to add.\",\"b\":\"The second float to add.\"},\"returns\":{\"_0\":\"The sum of the two floats.\"}},\"ceil(bytes32)\":{\"params\":{\"a\":\"The float to get the ceiling of.\"},\"returns\":{\"_0\":\"The ceiled float.\"}},\"div(bytes32,bytes32)\":{\"params\":{\"a\":\"The dividend (numerator).\",\"b\":\"The divisor (denominator).\"},\"returns\":{\"_0\":\"The quotient of the two floats.\"}},\"e()\":{\"returns\":{\"_0\":\"The constant value of Euler's number as a Float.\"}},\"eq(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the two floats are equal, false otherwise.\"}},\"floor(bytes32)\":{\"params\":{\"a\":\"The float to get the floor of.\"},\"returns\":{\"_0\":\"The floored float.\"}},\"format(bytes32)\":{\"params\":{\"a\":\"The float to format.\"},\"returns\":{\"_0\":\"The string representation of the float.\"}},\"format(bytes32,bool)\":{\"params\":{\"a\":\"The float to format.\",\"scientific\":\"Whether to format the float in scientific notation.\"},\"returns\":{\"_0\":\"The string representation of the float.\"}},\"format(bytes32,bytes32,bytes32)\":{\"params\":{\"a\":\"The float to format. The absolute value of `a` is used to determine if scientific notation is used, this allows negative numbers to be formatted consistently with their positive counterparts.\",\"scientificMax\":\"The largest number that won't be formatted in scientific notation.\",\"scientificMin\":\"The smallest number that won't be formatted in scientific notation.\"},\"returns\":{\"_0\":\"The string representation of the float.\"}},\"frac(bytes32)\":{\"params\":{\"a\":\"The float to get the fractional part of.\"},\"returns\":{\"_0\":\"The fractional part of the float.\"}},\"fromFixedDecimalLossless(uint256,uint8)\":{\"params\":{\"decimals\":\"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.\",\"value\":\"The fixed point decimal value to convert.\"},\"returns\":{\"_0\":\"float The Float struct containing the signed coefficient and exponent.\"}},\"fromFixedDecimalLossy(uint256,uint8)\":{\"params\":{\"decimals\":\"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.\",\"value\":\"The fixed point decimal value to convert.\"},\"returns\":{\"_0\":\"float The Float struct containing the signed coefficient and exponent.\",\"_1\":\"lossless True if the conversion was lossless, false otherwise.\"}},\"gt(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the first float is greater than the second, false otherwise.\"}},\"gte(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the first float is greater than or equal to the second, false otherwise.\"}},\"integer(bytes32)\":{\"params\":{\"a\":\"The float to get the integer part of.\"},\"returns\":{\"_0\":\"The integer part of the float.\"}},\"inv(bytes32)\":{\"params\":{\"a\":\"The float to invert.\"},\"returns\":{\"_0\":\"The inverted float.\"}},\"isZero(bytes32)\":{\"params\":{\"a\":\"The float to check.\"},\"returns\":{\"_0\":\"True if the float is zero, false otherwise.\"}},\"log10(bytes32)\":{\"params\":{\"a\":\"The float to take the logarithm of.\"},\"returns\":{\"_0\":\"The logarithm of the float.\"}},\"lt(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the first float is less than the second, false otherwise.\"}},\"lte(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the first float is less than or equal to the second, false otherwise.\"}},\"max(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"The larger of the two floats.\"}},\"maxNegativeValue()\":{\"returns\":{\"_0\":\"The maximum negative value of a Float.\"}},\"maxPositiveValue()\":{\"returns\":{\"_0\":\"The maximum positive value of a Float.\"}},\"min(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"The smaller of the two floats.\"}},\"minNegativeValue()\":{\"returns\":{\"_0\":\"The minimum negative value of a Float.\"}},\"minPositiveValue()\":{\"returns\":{\"_0\":\"The minimum positive value of a Float.\"}},\"minus(bytes32)\":{\"params\":{\"a\":\"The float to negate.\"},\"returns\":{\"_0\":\"The negated float.\"}},\"mul(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to multiply.\",\"b\":\"The second float to multiply.\"},\"returns\":{\"_0\":\"The product of the two floats.\"}},\"parse(string)\":{\"params\":{\"str\":\"The string to parse.\"},\"returns\":{\"_0\":\"errorSelector The selector of the error if parsing failed. `0` if parsing succeeded.\",\"_1\":\"parsed The parsed float. Caller MUST check `errorSelector` to determine if parsing succeeded.\"}},\"pow(bytes32,bytes32)\":{\"params\":{\"a\":\"The base float.\",\"b\":\"The exponent float.\"},\"returns\":{\"_0\":\"The result of raising the base float to the power of the exponent\"}},\"pow10(bytes32)\":{\"params\":{\"a\":\"The exponent to raise 10 to.\"},\"returns\":{\"_0\":\"The result of 10^a.\"}},\"sqrt(bytes32)\":{\"params\":{\"a\":\"The float to take the square root of.\"},\"returns\":{\"_0\":\"The square root of the float.\"}},\"sub(bytes32,bytes32)\":{\"params\":{\"a\":\"The float to subtract from.\",\"b\":\"The float to subtract.\"},\"returns\":{\"_0\":\"The difference of the two floats.\"}},\"toFixedDecimalLossless(bytes32,uint8)\":{\"params\":{\"decimals\":\"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.\",\"float\":\"The Float struct to convert.\"},\"returns\":{\"_0\":\"The fixed point decimal value as a uint256.\"}},\"toFixedDecimalLossy(bytes32,uint8)\":{\"params\":{\"decimals\":\"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.\",\"float\":\"The Float struct to convert.\"},\"returns\":{\"_0\":\"value The fixed point decimal value as a uint256.\",\"_1\":\"lossless True if the conversion was lossless, false otherwise.\"}},\"zero()\":{\"returns\":{\"_0\":\"The zero value of a Float in its maximized representation.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ZeroStringStartPointer()\":[{\"notice\":\"The decimal string start pointer is zero.\"}]},\"kind\":\"user\",\"methods\":{\"FORMAT_DEFAULT_SCIENTIFIC_MAX()\":{\"notice\":\"The default maximum value for scientific formatting. 1e9\"},\"FORMAT_DEFAULT_SCIENTIFIC_MIN()\":{\"notice\":\"The default minimum value for scientific formatting. 1e-4\"},\"abs(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.abs` for offchain use.\"},\"add(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.add` for offchain use.\"},\"ceil(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.ceil` for offchain use.\"},\"div(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.div` for offchain use.\"},\"e()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_E` for offchain use.\"},\"eq(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.eq` for offchain use.\"},\"floor(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.floor` for offchain use.\"},\"format(bytes32)\":{\"notice\":\"Exposes `format(Float, Float, Float)` for offchain use. Provides default scientific formatting.\"},\"format(bytes32,bool)\":{\"notice\":\"Exposes `LibFormatDecimalFloat.toDecimalString` for offchain use. provides raw bool interface for custom scientific formatting.\"},\"format(bytes32,bytes32,bytes32)\":{\"notice\":\"Exposes `LibFormatDecimalFloat.toDecimalString` for offchain use.\"},\"frac(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.frac` for offchain use.\"},\"fromFixedDecimalLossless(uint256,uint8)\":{\"notice\":\"Exposes `LibDecimalFloat.fromFixedDecimalLosslessPacked` for offchain use.\"},\"fromFixedDecimalLossy(uint256,uint8)\":{\"notice\":\"Exposes `LibDecimalFloat.fromFixedDecimalLossyPacked` for offchain use.\"},\"gt(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.gt` for offchain use.\"},\"gte(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.gte` for offchain use.\"},\"integer(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.integer` for offchain use.\"},\"inv(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.inv` for offchain use.\"},\"isZero(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.isZero` for offchain use.\"},\"log10(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.log10` for offchain use.\"},\"lt(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.lt` for offchain use.\"},\"lte(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.lte` for offchain use.\"},\"max(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.max` for offchain use.\"},\"maxNegativeValue()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_MAX_NEGATIVE_VALUE` for offchain use.\"},\"maxPositiveValue()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_MAX_POSITIVE_VALUE` for offchain use.\"},\"min(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.min` for offchain use.\"},\"minNegativeValue()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_MIN_NEGATIVE_VALUE` for offchain use.\"},\"minPositiveValue()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_MIN_POSITIVE_VALUE` for offchain use.\"},\"minus(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.minus` for offchain use.\"},\"mul(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.mul` for offchain use.\"},\"parse(string)\":{\"notice\":\"Exposes `LibParseDecimalFloat.parseDecimalFloat` for offchain use.\"},\"pow(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.pow` for offchain use.\"},\"pow10(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.pow10` for offchain use.\"},\"sqrt(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.sqrt` for offchain use.\"},\"sub(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.sub` for offchain use.\"},\"toFixedDecimalLossless(bytes32,uint8)\":{\"notice\":\"Exposes `LibDecimalFloat.toFixedDecimalLossless` for offchain use.\"},\"toFixedDecimalLossy(bytes32,uint8)\":{\"notice\":\"Exposes `LibDecimalFloat.toFixedDecimalLossy` for offchain use.\"},\"zero()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_ZERO` for offchain use.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"dependencies/rain-math-float-0.1.1/src/concrete/DecimalFloat.sol\":\"DecimalFloat\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/\",\":bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/\",\":caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/\",\":codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/\",\":forge-std-1.16.1/=dependencies/forge-std-1.16.1/\",\":mut/=dependencies/rain-string-0.2.0/src/lib/mut/\",\":ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/\",\":parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/\",\":rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/\",\":rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/\",\":rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/\",\":rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/\",\":rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/\",\":rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/\",\":rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/\",\":rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/\",\":rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/\",\":rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/\",\":rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/\",\":rain-string-0.2.0/=dependencies/rain-string-0.2.0/\",\":rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/\",\":raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/\",\":rainlang-0.1.2/=dependencies/rainlang-0.1.2/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.6.1/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"dependencies/rain-math-float-0.1.1/src/concrete/DecimalFloat.sol\":{\"keccak256\":\"0x6326a6b5ffef0708b84712c0b891dfc7f2d88c38191628da1f40933951f2683b\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://ad99eda6cc266d5d160439700d3c89a487e8e31d51538f2ad83435a1aac9f3ae\",\"dweb:/ipfs/QmarsuZkgqG7jT9mYBh1VKNvjD5ZsVtJJTiRGbfMQAY669\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrDecimalFloat.sol\":{\"keccak256\":\"0x46e95357504ffe0e2cdf7a7d962b509ebdf6f2c64e1c8b1accc608bdd8288971\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://65ec73f625fce3f9cf150472735c57e7f6a2260b53598c149a0a81ec677b9dd2\",\"dweb:/ipfs/QmZXmzqDkjNVTMNW8ZFPGLm1UnVfPnFN5ggpDSHPa9UjvQ\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrFormat.sol\":{\"keccak256\":\"0xc760cb6018291753e7408d55d12d5e66c116f9750dc241bbc201f3b46ae33aa7\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://cbc81bb7c26c8503926b579f978902bcc3227839bee04bd3500cc924d142d28e\",\"dweb:/ipfs/QmXqMuqBCpckD1EnsBjweyLdRZxpvC2xSP9FWBZFh2vztR\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrParse.sol\":{\"keccak256\":\"0x7fc9fe7421d78306d252d2853fd1be943d9cbd12ff7a9c8c3f286a8164bfe357\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://7b4c434d01b53788968d185683d9633afa26d95396b1e91337a53ccaab0d44ab\",\"dweb:/ipfs/QmQHmVjR37wwrCskiQviwkg7WkeBpr9uPddjuDxqzANXeV\"]},\"dependencies/rain-math-float-0.1.1/src/generated/LogTables.pointers.sol\":{\"keccak256\":\"0x2325d92e3e248350a79f163fcb8738056ae4240b6a77f759ff5fcbf7b381f5ae\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://9a52674114518573de7d184094b266bc2b5208953086f8ec35a494f048deefbb\",\"dweb:/ipfs/QmTjuj1R9k4pFMBVpX6RcWG87Rdh9pRTZVHYo93SzBfmsH\"]},\"dependencies/rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol\":{\"keccak256\":\"0x3f0f9e9b04e6fd4ca2a322da490a236eb91a0d22411a51ed1d1e606a72fcb1eb\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://d99f8025391108725dc490efccb834c25486d59adcd8c1450c62db89f08ed203\",\"dweb:/ipfs/QmcY4JXoK4qfuUWjaDDyWkEdyzZTFN5EjokutSMDidqHjU\"]},\"dependencies/rain-math-float-0.1.1/src/lib/deploy/LibDecimalFloatDeploy.sol\":{\"keccak256\":\"0x57ac4707fa4eb4d5e69583e81a702474720eeacc855c1b014afd36d4df1e346a\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://3af339a6dccbc888a65cd17933fc60fa6392b2405a566f3c52e9c8d63177fdb5\",\"dweb:/ipfs/QmYYcFr52kesLrUGit1BQkXeavFCp2oQbEGqW5MSZJmMhM\"]},\"dependencies/rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol\":{\"keccak256\":\"0x5aac6382e7f7040e68600333c1b00b0aedb3edb6bced84b63783f6d88fe0b4f0\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://e96d30e34e1fa2cc4eb574ded30c0f6f93929dcc19cb571f555ca8c5ac32eaa7\",\"dweb:/ipfs/QmRRtk84AqEdQrRXfeTzVUAbAktJTZ92iTLqjocQV4PDx7\"]},\"dependencies/rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol\":{\"keccak256\":\"0x47d0eeb542875548689465407162a19e4a21fb4591af5bb48d5758c0d1b93634\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://631efb796ff17f277804f8a32df7d28630c2ae5300e7d74c37aa8ed1f86b5092\",\"dweb:/ipfs/QmSfmMGQyxKYxu8UrWDEtuCggQ9HtFJy5cbMsYLPZbcTZ7\"]},\"dependencies/rain-math-float-0.1.1/src/lib/parse/LibParseDecimalFloat.sol\":{\"keccak256\":\"0x703d2d37d8a14639a3eb2dcd61601b36552027e16b4e8414befe51f2d0b9ed38\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://53fa45503e115a322a701a1289c5b5fcbe68090c83e0635af77d275d123f09f0\",\"dweb:/ipfs/QmTBtz8uPLYXrTue9SmHBVdgjpFJYUU41Z48PAgu1nXafn\"]},\"dependencies/rain-math-float-0.1.1/src/lib/table/LibLogTable.sol\":{\"keccak256\":\"0xccd2dea54cfb708c01e7e8e88c089742bbab18f5783be4632311fb4923d44c88\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://f45fb78c16b5d66d56ba0e78acdb0ca5d315eb05efa2cd7a81e191aabe7aec52\",\"dweb:/ipfs/QmQJ3TFFxTMu4HZ4qnjgmdmSNhGZLQRdCnSqAipEF1up1f\"]},\"dependencies/rain-string-0.2.0/src/error/ErrParse.sol\":{\"keccak256\":\"0x7a69236ad67e39c20f6ade7973ec551c9a5bb5db4671c8afa95b80f35a996497\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4731c6ea05b4e820814380dbbd6dac14f5778a1e9194b8992148cf97a99ffbb2\",\"dweb:/ipfs/QmUMnKNt2zQ42fjS4fpLqodXytiffVFzaKupAm8rNsrYVo\"]},\"dependencies/rain-string-0.2.0/src/lib/parse/LibParseCMask.sol\":{\"keccak256\":\"0x91e798a6f71aafbd4743720eaa38a7f16f74c6c0ab2992e7e4982979e9df539a\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4782e62e0e5a5fbc7d6c757dcc90347d7ad064f25372a6c471ffa968e12b91d7\",\"dweb:/ipfs/QmPohMsVTjm19gxYwxgAsTKJQRjkK2J1Pyah63nCtYBBnt\"]},\"dependencies/rain-string-0.2.0/src/lib/parse/LibParseChar.sol\":{\"keccak256\":\"0x66c401d784e9461f709116441de3707685e08438cd83553db28fe8caf0e97238\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://e6027d0f9d558953686f6eb78ca0b2f2e7d9d38e0be6d1435ffaaa4b90919593\",\"dweb:/ipfs/QmQXDMTzmJrst2a4kHkcfjSsEdnPc4ikQs7VfGbCfe9QCc\"]},\"dependencies/rain-string-0.2.0/src/lib/parse/LibParseDecimal.sol\":{\"keccak256\":\"0x72ccc4d7e0a1245897511e1efc15ddc80d423a8eb956249be7940a8e8f4e99fe\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://3ca57acd6a7cbe16f2c03aa5a6e81ec7af1ad44078924358578560a32aead7c0\",\"dweb:/ipfs/QmNukyUMS4JrzNHAYcpLbtYsD5CwYPEjfAaADv6qMZmqs6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"CoefficientOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"DivisionByZero"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"ExponentOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"ExponentUnderflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"type":"error","name":"FixedDecimalOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"Log10Negative"},{"inputs":[],"type":"error","name":"Log10Zero"},{"inputs":[{"internalType":"address","name":"tablesAddress","type":"address"},{"internalType":"bytes32","name":"expectedCodehash","type":"bytes32"},{"internalType":"bytes32","name":"actualCodehash","type":"bytes32"}],"type":"error","name":"LogTablesNotDeployed"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"LossyConversionFromFloat"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"LossyConversionToFloat"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"MaximizeOverflow"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"type":"error","name":"MulDivOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"NegativeFixedDecimalConversion"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"PowNegativeBase"},{"inputs":[{"internalType":"Float","name":"scientificMin","type":"bytes32"},{"internalType":"Float","name":"scientificMax","type":"bytes32"}],"type":"error","name":"ScientificMinNotLessThanMax"},{"inputs":[{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"UnformatableExponent"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"},{"internalType":"int256","name":"targetExponent","type":"int256"}],"type":"error","name":"WithTargetExponentOverflow"},{"inputs":[{"internalType":"Float","name":"b","type":"bytes32"}],"type":"error","name":"ZeroNegativePower"},{"inputs":[],"type":"error","name":"ZeroStringStartPointer"},{"inputs":[],"stateMutability":"view","type":"function","name":"FORMAT_DEFAULT_SCIENTIFIC_MAX","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FORMAT_DEFAULT_SCIENTIFIC_MIN","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"abs","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"add","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"ceil","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"div","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"e","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"eq","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"floor","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"bool","name":"scientific","type":"bool"}],"stateMutability":"pure","type":"function","name":"format","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"format","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"scientificMin","type":"bytes32"},{"internalType":"Float","name":"scientificMax","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"format","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"frac","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"pure","type":"function","name":"fromFixedDecimalLossless","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"pure","type":"function","name":"fromFixedDecimalLossy","outputs":[{"internalType":"Float","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"gt","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"gte","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"integer","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"inv","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"isZero","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"view","type":"function","name":"log10","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"lt","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"lte","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"max","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maxNegativeValue","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maxPositiveValue","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"min","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minNegativeValue","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minPositiveValue","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"minus","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"mul","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"stateMutability":"pure","type":"function","name":"parse","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pow","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pow10","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"view","type":"function","name":"sqrt","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sub","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"float","type":"bytes32"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"pure","type":"function","name":"toFixedDecimalLossless","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"Float","name":"float","type":"bytes32"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"pure","type":"function","name":"toFixedDecimalLossy","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"zero","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"abs(bytes32)":{"params":{"a":"The float to get the absolute value of."},"returns":{"_0":"The absolute value of the float."}},"add(bytes32,bytes32)":{"params":{"a":"The first float to add.","b":"The second float to add."},"returns":{"_0":"The sum of the two floats."}},"ceil(bytes32)":{"params":{"a":"The float to get the ceiling of."},"returns":{"_0":"The ceiled float."}},"div(bytes32,bytes32)":{"params":{"a":"The dividend (numerator).","b":"The divisor (denominator)."},"returns":{"_0":"The quotient of the two floats."}},"e()":{"returns":{"_0":"The constant value of Euler's number as a Float."}},"eq(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the two floats are equal, false otherwise."}},"floor(bytes32)":{"params":{"a":"The float to get the floor of."},"returns":{"_0":"The floored float."}},"format(bytes32)":{"params":{"a":"The float to format."},"returns":{"_0":"The string representation of the float."}},"format(bytes32,bool)":{"params":{"a":"The float to format.","scientific":"Whether to format the float in scientific notation."},"returns":{"_0":"The string representation of the float."}},"format(bytes32,bytes32,bytes32)":{"params":{"a":"The float to format. The absolute value of `a` is used to determine if scientific notation is used, this allows negative numbers to be formatted consistently with their positive counterparts.","scientificMax":"The largest number that won't be formatted in scientific notation.","scientificMin":"The smallest number that won't be formatted in scientific notation."},"returns":{"_0":"The string representation of the float."}},"frac(bytes32)":{"params":{"a":"The float to get the fractional part of."},"returns":{"_0":"The fractional part of the float."}},"fromFixedDecimalLossless(uint256,uint8)":{"params":{"decimals":"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.","value":"The fixed point decimal value to convert."},"returns":{"_0":"float The Float struct containing the signed coefficient and exponent."}},"fromFixedDecimalLossy(uint256,uint8)":{"params":{"decimals":"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.","value":"The fixed point decimal value to convert."},"returns":{"_0":"float The Float struct containing the signed coefficient and exponent.","_1":"lossless True if the conversion was lossless, false otherwise."}},"gt(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the first float is greater than the second, false otherwise."}},"gte(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the first float is greater than or equal to the second, false otherwise."}},"integer(bytes32)":{"params":{"a":"The float to get the integer part of."},"returns":{"_0":"The integer part of the float."}},"inv(bytes32)":{"params":{"a":"The float to invert."},"returns":{"_0":"The inverted float."}},"isZero(bytes32)":{"params":{"a":"The float to check."},"returns":{"_0":"True if the float is zero, false otherwise."}},"log10(bytes32)":{"params":{"a":"The float to take the logarithm of."},"returns":{"_0":"The logarithm of the float."}},"lt(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the first float is less than the second, false otherwise."}},"lte(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the first float is less than or equal to the second, false otherwise."}},"max(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"The larger of the two floats."}},"maxNegativeValue()":{"returns":{"_0":"The maximum negative value of a Float."}},"maxPositiveValue()":{"returns":{"_0":"The maximum positive value of a Float."}},"min(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"The smaller of the two floats."}},"minNegativeValue()":{"returns":{"_0":"The minimum negative value of a Float."}},"minPositiveValue()":{"returns":{"_0":"The minimum positive value of a Float."}},"minus(bytes32)":{"params":{"a":"The float to negate."},"returns":{"_0":"The negated float."}},"mul(bytes32,bytes32)":{"params":{"a":"The first float to multiply.","b":"The second float to multiply."},"returns":{"_0":"The product of the two floats."}},"parse(string)":{"params":{"str":"The string to parse."},"returns":{"_0":"errorSelector The selector of the error if parsing failed. `0` if parsing succeeded.","_1":"parsed The parsed float. Caller MUST check `errorSelector` to determine if parsing succeeded."}},"pow(bytes32,bytes32)":{"params":{"a":"The base float.","b":"The exponent float."},"returns":{"_0":"The result of raising the base float to the power of the exponent"}},"pow10(bytes32)":{"params":{"a":"The exponent to raise 10 to."},"returns":{"_0":"The result of 10^a."}},"sqrt(bytes32)":{"params":{"a":"The float to take the square root of."},"returns":{"_0":"The square root of the float."}},"sub(bytes32,bytes32)":{"params":{"a":"The float to subtract from.","b":"The float to subtract."},"returns":{"_0":"The difference of the two floats."}},"toFixedDecimalLossless(bytes32,uint8)":{"params":{"decimals":"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.","float":"The Float struct to convert."},"returns":{"_0":"The fixed point decimal value as a uint256."}},"toFixedDecimalLossy(bytes32,uint8)":{"params":{"decimals":"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.","float":"The Float struct to convert."},"returns":{"_0":"value The fixed point decimal value as a uint256.","_1":"lossless True if the conversion was lossless, false otherwise."}},"zero()":{"returns":{"_0":"The zero value of a Float in its maximized representation."}}},"version":1},"userdoc":{"kind":"user","methods":{"FORMAT_DEFAULT_SCIENTIFIC_MAX()":{"notice":"The default maximum value for scientific formatting. 1e9"},"FORMAT_DEFAULT_SCIENTIFIC_MIN()":{"notice":"The default minimum value for scientific formatting. 1e-4"},"abs(bytes32)":{"notice":"Exposes `LibDecimalFloat.abs` for offchain use."},"add(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.add` for offchain use."},"ceil(bytes32)":{"notice":"Exposes `LibDecimalFloat.ceil` for offchain use."},"div(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.div` for offchain use."},"e()":{"notice":"Exposes `LibDecimalFloat.FLOAT_E` for offchain use."},"eq(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.eq` for offchain use."},"floor(bytes32)":{"notice":"Exposes `LibDecimalFloat.floor` for offchain use."},"format(bytes32)":{"notice":"Exposes `format(Float, Float, Float)` for offchain use. Provides default scientific formatting."},"format(bytes32,bool)":{"notice":"Exposes `LibFormatDecimalFloat.toDecimalString` for offchain use. provides raw bool interface for custom scientific formatting."},"format(bytes32,bytes32,bytes32)":{"notice":"Exposes `LibFormatDecimalFloat.toDecimalString` for offchain use."},"frac(bytes32)":{"notice":"Exposes `LibDecimalFloat.frac` for offchain use."},"fromFixedDecimalLossless(uint256,uint8)":{"notice":"Exposes `LibDecimalFloat.fromFixedDecimalLosslessPacked` for offchain use."},"fromFixedDecimalLossy(uint256,uint8)":{"notice":"Exposes `LibDecimalFloat.fromFixedDecimalLossyPacked` for offchain use."},"gt(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.gt` for offchain use."},"gte(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.gte` for offchain use."},"integer(bytes32)":{"notice":"Exposes `LibDecimalFloat.integer` for offchain use."},"inv(bytes32)":{"notice":"Exposes `LibDecimalFloat.inv` for offchain use."},"isZero(bytes32)":{"notice":"Exposes `LibDecimalFloat.isZero` for offchain use."},"log10(bytes32)":{"notice":"Exposes `LibDecimalFloat.log10` for offchain use."},"lt(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.lt` for offchain use."},"lte(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.lte` for offchain use."},"max(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.max` for offchain use."},"maxNegativeValue()":{"notice":"Exposes `LibDecimalFloat.FLOAT_MAX_NEGATIVE_VALUE` for offchain use."},"maxPositiveValue()":{"notice":"Exposes `LibDecimalFloat.FLOAT_MAX_POSITIVE_VALUE` for offchain use."},"min(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.min` for offchain use."},"minNegativeValue()":{"notice":"Exposes `LibDecimalFloat.FLOAT_MIN_NEGATIVE_VALUE` for offchain use."},"minPositiveValue()":{"notice":"Exposes `LibDecimalFloat.FLOAT_MIN_POSITIVE_VALUE` for offchain use."},"minus(bytes32)":{"notice":"Exposes `LibDecimalFloat.minus` for offchain use."},"mul(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.mul` for offchain use."},"parse(string)":{"notice":"Exposes `LibParseDecimalFloat.parseDecimalFloat` for offchain use."},"pow(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.pow` for offchain use."},"pow10(bytes32)":{"notice":"Exposes `LibDecimalFloat.pow10` for offchain use."},"sqrt(bytes32)":{"notice":"Exposes `LibDecimalFloat.sqrt` for offchain use."},"sub(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.sub` for offchain use."},"toFixedDecimalLossless(bytes32,uint8)":{"notice":"Exposes `LibDecimalFloat.toFixedDecimalLossless` for offchain use."},"toFixedDecimalLossy(bytes32,uint8)":{"notice":"Exposes `LibDecimalFloat.toFixedDecimalLossy` for offchain use."},"zero()":{"notice":"Exposes `LibDecimalFloat.FLOAT_ZERO` for offchain use."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/","bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/","caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/","codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/","forge-std-1.16.1/=dependencies/forge-std-1.16.1/","mut/=dependencies/rain-string-0.2.0/src/lib/mut/","ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/","parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/","rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/","rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/","rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/","rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/","rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/","rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/","rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/","rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/","rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/","rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/","rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/","rain-string-0.2.0/=dependencies/rain-string-0.2.0/","rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/","raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/","rainlang-0.1.2/=dependencies/rainlang-0.1.2/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"dependencies/rain-math-float-0.1.1/src/concrete/DecimalFloat.sol":"DecimalFloat"},"evmVersion":"cancun","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.6.1/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"dependencies/rain-math-float-0.1.1/src/concrete/DecimalFloat.sol":{"keccak256":"0x6326a6b5ffef0708b84712c0b891dfc7f2d88c38191628da1f40933951f2683b","urls":["bzz-raw://ad99eda6cc266d5d160439700d3c89a487e8e31d51538f2ad83435a1aac9f3ae","dweb:/ipfs/QmarsuZkgqG7jT9mYBh1VKNvjD5ZsVtJJTiRGbfMQAY669"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrDecimalFloat.sol":{"keccak256":"0x46e95357504ffe0e2cdf7a7d962b509ebdf6f2c64e1c8b1accc608bdd8288971","urls":["bzz-raw://65ec73f625fce3f9cf150472735c57e7f6a2260b53598c149a0a81ec677b9dd2","dweb:/ipfs/QmZXmzqDkjNVTMNW8ZFPGLm1UnVfPnFN5ggpDSHPa9UjvQ"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrFormat.sol":{"keccak256":"0xc760cb6018291753e7408d55d12d5e66c116f9750dc241bbc201f3b46ae33aa7","urls":["bzz-raw://cbc81bb7c26c8503926b579f978902bcc3227839bee04bd3500cc924d142d28e","dweb:/ipfs/QmXqMuqBCpckD1EnsBjweyLdRZxpvC2xSP9FWBZFh2vztR"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrParse.sol":{"keccak256":"0x7fc9fe7421d78306d252d2853fd1be943d9cbd12ff7a9c8c3f286a8164bfe357","urls":["bzz-raw://7b4c434d01b53788968d185683d9633afa26d95396b1e91337a53ccaab0d44ab","dweb:/ipfs/QmQHmVjR37wwrCskiQviwkg7WkeBpr9uPddjuDxqzANXeV"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/generated/LogTables.pointers.sol":{"keccak256":"0x2325d92e3e248350a79f163fcb8738056ae4240b6a77f759ff5fcbf7b381f5ae","urls":["bzz-raw://9a52674114518573de7d184094b266bc2b5208953086f8ec35a494f048deefbb","dweb:/ipfs/QmTjuj1R9k4pFMBVpX6RcWG87Rdh9pRTZVHYo93SzBfmsH"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol":{"keccak256":"0x3f0f9e9b04e6fd4ca2a322da490a236eb91a0d22411a51ed1d1e606a72fcb1eb","urls":["bzz-raw://d99f8025391108725dc490efccb834c25486d59adcd8c1450c62db89f08ed203","dweb:/ipfs/QmcY4JXoK4qfuUWjaDDyWkEdyzZTFN5EjokutSMDidqHjU"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/deploy/LibDecimalFloatDeploy.sol":{"keccak256":"0x57ac4707fa4eb4d5e69583e81a702474720eeacc855c1b014afd36d4df1e346a","urls":["bzz-raw://3af339a6dccbc888a65cd17933fc60fa6392b2405a566f3c52e9c8d63177fdb5","dweb:/ipfs/QmYYcFr52kesLrUGit1BQkXeavFCp2oQbEGqW5MSZJmMhM"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol":{"keccak256":"0x5aac6382e7f7040e68600333c1b00b0aedb3edb6bced84b63783f6d88fe0b4f0","urls":["bzz-raw://e96d30e34e1fa2cc4eb574ded30c0f6f93929dcc19cb571f555ca8c5ac32eaa7","dweb:/ipfs/QmRRtk84AqEdQrRXfeTzVUAbAktJTZ92iTLqjocQV4PDx7"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol":{"keccak256":"0x47d0eeb542875548689465407162a19e4a21fb4591af5bb48d5758c0d1b93634","urls":["bzz-raw://631efb796ff17f277804f8a32df7d28630c2ae5300e7d74c37aa8ed1f86b5092","dweb:/ipfs/QmSfmMGQyxKYxu8UrWDEtuCggQ9HtFJy5cbMsYLPZbcTZ7"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/parse/LibParseDecimalFloat.sol":{"keccak256":"0x703d2d37d8a14639a3eb2dcd61601b36552027e16b4e8414befe51f2d0b9ed38","urls":["bzz-raw://53fa45503e115a322a701a1289c5b5fcbe68090c83e0635af77d275d123f09f0","dweb:/ipfs/QmTBtz8uPLYXrTue9SmHBVdgjpFJYUU41Z48PAgu1nXafn"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/table/LibLogTable.sol":{"keccak256":"0xccd2dea54cfb708c01e7e8e88c089742bbab18f5783be4632311fb4923d44c88","urls":["bzz-raw://f45fb78c16b5d66d56ba0e78acdb0ca5d315eb05efa2cd7a81e191aabe7aec52","dweb:/ipfs/QmQJ3TFFxTMu4HZ4qnjgmdmSNhGZLQRdCnSqAipEF1up1f"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-string-0.2.0/src/error/ErrParse.sol":{"keccak256":"0x7a69236ad67e39c20f6ade7973ec551c9a5bb5db4671c8afa95b80f35a996497","urls":["bzz-raw://4731c6ea05b4e820814380dbbd6dac14f5778a1e9194b8992148cf97a99ffbb2","dweb:/ipfs/QmUMnKNt2zQ42fjS4fpLqodXytiffVFzaKupAm8rNsrYVo"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-string-0.2.0/src/lib/parse/LibParseCMask.sol":{"keccak256":"0x91e798a6f71aafbd4743720eaa38a7f16f74c6c0ab2992e7e4982979e9df539a","urls":["bzz-raw://4782e62e0e5a5fbc7d6c757dcc90347d7ad064f25372a6c471ffa968e12b91d7","dweb:/ipfs/QmPohMsVTjm19gxYwxgAsTKJQRjkK2J1Pyah63nCtYBBnt"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-string-0.2.0/src/lib/parse/LibParseChar.sol":{"keccak256":"0x66c401d784e9461f709116441de3707685e08438cd83553db28fe8caf0e97238","urls":["bzz-raw://e6027d0f9d558953686f6eb78ca0b2f2e7d9d38e0be6d1435ffaaa4b90919593","dweb:/ipfs/QmQXDMTzmJrst2a4kHkcfjSsEdnPc4ikQs7VfGbCfe9QCc"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-string-0.2.0/src/lib/parse/LibParseDecimal.sol":{"keccak256":"0x72ccc4d7e0a1245897511e1efc15ddc80d423a8eb956249be7940a8e8f4e99fe","urls":["bzz-raw://3ca57acd6a7cbe16f2c03aa5a6e81ec7af1ad44078924358578560a32aead7c0","dweb:/ipfs/QmNukyUMS4JrzNHAYcpLbtYsD5CwYPEjfAaADv6qMZmqs6"],"license":"LicenseRef-DCL-1.0"}},"version":1},"id":86} \ No newline at end of file diff --git a/subgraph/abis/ERC20.json b/subgraph/abis/ERC20.json new file mode 100644 index 0000000000..92cffbcf44 --- /dev/null +++ b/subgraph/abis/ERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/\",\":bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/\",\":caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/\",\":codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/\",\":forge-std-1.16.1/=dependencies/forge-std-1.16.1/\",\":mut/=dependencies/rain-string-0.2.0/src/lib/mut/\",\":ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/\",\":parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/\",\":rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/\",\":rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/\",\":rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/\",\":rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/\",\":rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/\",\":rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/\",\":rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/\",\":rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/\",\":rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/\",\":rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/\",\":rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/\",\":rain-string-0.2.0/=dependencies/rain-string-0.2.0/\",\":rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/\",\":raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/\",\":rainlang-0.1.2/=dependencies/rainlang-0.1.2/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/","bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/","caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/","codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/","forge-std-1.16.1/=dependencies/forge-std-1.16.1/","mut/=dependencies/rain-string-0.2.0/src/lib/mut/","ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/","parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/","rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/","rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/","rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/","rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/","rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/","rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/","rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/","rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/","rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/","rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/","rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/","rain-string-0.2.0/=dependencies/rain-string-0.2.0/","rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/","raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/","rainlang-0.1.2/=dependencies/rainlang-0.1.2/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.6.1/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":7} \ No newline at end of file diff --git a/subgraph/abis/Raindex.json b/subgraph/abis/Raindex.json new file mode 100644 index 0000000000..57a06c1a14 --- /dev/null +++ b/subgraph/abis/Raindex.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addOrder4","inputs":[{"name":"orderConfig","type":"tuple","internalType":"struct OrderConfigV4","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"},{"name":"secret","type":"bytes32","internalType":"bytes32"},{"name":"meta","type":"bytes","internalType":"bytes"}]},{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"clear3","inputs":[{"name":"aliceOrder","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"bobOrder","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"clearConfig","type":"tuple","internalType":"struct ClearConfigV2","components":[{"name":"aliceInputIOIndex","type":"uint256","internalType":"uint256"},{"name":"aliceOutputIOIndex","type":"uint256","internalType":"uint256"},{"name":"bobInputIOIndex","type":"uint256","internalType":"uint256"},{"name":"bobOutputIOIndex","type":"uint256","internalType":"uint256"},{"name":"aliceBountyVaultId","type":"bytes32","internalType":"bytes32"},{"name":"bobBountyVaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"aliceSignedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"bobSignedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit4","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"},{"name":"depositAmount","type":"bytes32","internalType":"Float"},{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"entask2","inputs":[{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"flashFee","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"maxFlashLoan","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"orderExists","inputs":[{"name":"orderHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"quote2","inputs":[{"name":"quoteConfig","type":"tuple","internalType":"struct QuoteV2","components":[{"name":"order","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"inputIOIndex","type":"uint256","internalType":"uint256"},{"name":"outputIOIndex","type":"uint256","internalType":"uint256"},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"bytes32","internalType":"Float"},{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"removeOrder3","inputs":[{"name":"order","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[{"name":"stateChanged","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"takeOrders4","inputs":[{"name":"config","type":"tuple","internalType":"struct TakeOrdersConfigV5","components":[{"name":"minimumIO","type":"bytes32","internalType":"Float"},{"name":"maximumIO","type":"bytes32","internalType":"Float"},{"name":"maximumIORatio","type":"bytes32","internalType":"Float"},{"name":"IOIsInput","type":"bool","internalType":"bool"},{"name":"orders","type":"tuple[]","internalType":"struct TakeOrderConfigV4[]","components":[{"name":"order","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"inputIOIndex","type":"uint256","internalType":"uint256"},{"name":"outputIOIndex","type":"uint256","internalType":"uint256"},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"totalTakerInput","type":"bytes32","internalType":"Float"},{"name":"totalTakerOutput","type":"bytes32","internalType":"Float"}],"stateMutability":"nonpayable"},{"type":"function","name":"vaultBalance2","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"withdraw4","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"},{"name":"targetAmount","type":"bytes32","internalType":"Float"},{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddOrderV3","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"order","type":"tuple","indexed":false,"internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]}],"anonymous":false},{"type":"event","name":"AfterClearV2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"clearStateChange","type":"tuple","indexed":false,"internalType":"struct ClearStateChangeV2","components":[{"name":"aliceOutput","type":"bytes32","internalType":"Float"},{"name":"bobOutput","type":"bytes32","internalType":"Float"},{"name":"aliceInput","type":"bytes32","internalType":"Float"},{"name":"bobInput","type":"bytes32","internalType":"Float"}]}],"anonymous":false},{"type":"event","name":"ClearV3","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"alice","type":"tuple","indexed":false,"internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"bob","type":"tuple","indexed":false,"internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"clearConfig","type":"tuple","indexed":false,"internalType":"struct ClearConfigV2","components":[{"name":"aliceInputIOIndex","type":"uint256","internalType":"uint256"},{"name":"aliceOutputIOIndex","type":"uint256","internalType":"uint256"},{"name":"bobInputIOIndex","type":"uint256","internalType":"uint256"},{"name":"bobOutputIOIndex","type":"uint256","internalType":"uint256"},{"name":"aliceBountyVaultId","type":"bytes32","internalType":"bytes32"},{"name":"bobBountyVaultId","type":"bytes32","internalType":"bytes32"}]}],"anonymous":false},{"type":"event","name":"ContextV2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"context","type":"bytes32[][]","indexed":false,"internalType":"bytes32[][]"}],"anonymous":false},{"type":"event","name":"DepositV2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"vaultId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"depositAmountUint256","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetaV1_2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"subject","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"meta","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OrderExceedsMaxRatio","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OrderNotFound","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OrderZeroAmount","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RemoveOrderV3","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"order","type":"tuple","indexed":false,"internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]}],"anonymous":false},{"type":"event","name":"TakeOrderV3","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"config","type":"tuple","indexed":false,"internalType":"struct TakeOrderConfigV4","components":[{"name":"order","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"inputIOIndex","type":"uint256","internalType":"uint256"},{"name":"outputIOIndex","type":"uint256","internalType":"uint256"},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]},{"name":"input","type":"bytes32","indexed":false,"internalType":"Float"},{"name":"output","type":"bytes32","indexed":false,"internalType":"Float"}],"anonymous":false},{"type":"event","name":"WithdrawV2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"vaultId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"targetAmount","type":"bytes32","indexed":false,"internalType":"Float"},{"name":"withdrawAmount","type":"bytes32","indexed":false,"internalType":"Float"},{"name":"withdrawAmountUint256","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ClearZeroAmount","inputs":[]},{"type":"error","name":"CoefficientOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"DivisionByZero","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ExponentOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ExponentUnderflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FixedDecimalOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"FlashLenderCallbackFailed","inputs":[{"name":"result","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidSignature","inputs":[{"name":"i","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LossyConversionToFloat","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"MaximizeOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"MinimumIO","inputs":[{"name":"minimumIO","type":"bytes32","internalType":"Float"},{"name":"actualIO","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"MulDivOverflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NegativeBounty","inputs":[]},{"type":"error","name":"NegativeFixedDecimalConversion","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"NegativePull","inputs":[]},{"type":"error","name":"NegativePush","inputs":[]},{"type":"error","name":"NegativeVaultBalance","inputs":[{"name":"vaultBalance","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"NegativeVaultBalanceChange","inputs":[{"name":"amount","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"NoOrders","inputs":[]},{"type":"error","name":"NotOrderOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"NotRainMetaV1","inputs":[{"name":"unmeta","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"OrderNoHandleIO","inputs":[]},{"type":"error","name":"OrderNoInputs","inputs":[]},{"type":"error","name":"OrderNoOutputs","inputs":[]},{"type":"error","name":"OrderNoSources","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SameOwner","inputs":[]},{"type":"error","name":"TOFUTokenDecimalsNotDeployed","inputs":[{"name":"expectedAddress","type":"address","internalType":"address"}]},{"type":"error","name":"TokenDecimalsReadFailure","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"tofuOutcome","type":"uint8","internalType":"enum TOFUOutcome"}]},{"type":"error","name":"TokenMismatch","inputs":[]},{"type":"error","name":"TokenSelfTrade","inputs":[]},{"type":"error","name":"UnsupportedCalculateOutputs","inputs":[{"name":"outputs","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroDepositAmount","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ZeroMaximumIO","inputs":[]},{"type":"error","name":"ZeroVaultId","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"ZeroWithdrawTargetAmount","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055615c24806100405f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063613255ab11610093578063ac9650d811610063578063ac9650d81461022b578063d7e442ec1461024b578063d9d98ce41461025e578063fa50118214610273575f80fd5b8063613255ab146101ad57806369c72856146101c0578063709fb8a5146101e85780639235084d146101fb575f80fd5b80632fbc4ba0116100ce5780632fbc4ba01461015157806341d1514f146101665780635cffe9de14610187578063607461191461019a575f80fd5b806301ffc9a7146100f45780631f69cb751461011c5780632cb77e9f1461012f575b5f80fd5b61010761010236600461463b565b610286565b60405190151581526020015b60405180910390f35b61010761012a3660046146a3565b6102bc565b61010761013d36600461470e565b5f9081526020819052604090205460011490565b61016461015f366004614744565b610404565b005b6101796101743660046147a9565b61054a565b604051908152602001610113565b6101076101953660046147e7565b61055e565b6101646101a8366004614744565b61065e565b6101796101bb36600461487e565b6107f1565b6101d36101ce3660046148af565b610859565b60408051928352602083019190915201610113565b6101076101f63660046148e1565b610efc565b61020e61020936600461492b565b6111c5565b604080519315158452602084019290925290820152606001610113565b61023e610239366004614962565b611286565b60405161011391906149cf565b610164610259366004614962565b61136c565b61017961026c366004614a31565b5f92915050565b610164610281366004614ea3565b6113c6565b5f6001600160e01b0319821663e414309160e01b14806102b657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6102c5611865565b6102d2602085018561487e565b6001600160a01b0316336001600160a01b031614610321576102f7602085018561487e565b6040516335252be360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f61033361032e86614f5d565b611880565b5f818152602081905260409020549091505f19016103e6575f818152602081905260408082209190915551600192507f09d18501db0080ca2d6cd7c17fa7255daff4b2d503ea93b76ff68b6752ea8e6390610393903390849089906150aa565b60405180910390a16040805160028152602081018390523381830152606081019091526103e6906103d7905b60408051600181526020810192909252818101905290565b6103e1858761516e565b6118af565b506103fd60015f80516020615c0483398151915255565b9392505050565b61040c611865565b33858561041a838383611a7d565b610424865f611ab3565b610459576040516306dde9c360e41b81523360048201526001600160a01b038916602482015260448101889052606401610318565b5f80610466338b8a611aed565b604080513381526001600160a01b038e1660208201529081018c90526060810183905291935091507f7f9dfa19cf1cc2f806f2f860fbc9c056b601fb1afc0e9b843dfe5c63616268e69060800160405180910390a15f806104c9338d8d8d611bc7565b909250905087156105265760408051600581526001600160a01b038e1660208201528082018d9052606081018490526080810183905260ff851660a082015260c081019091526105269061051c906103bf565b6103e18a8c61516e565b5050505050505061054360015f80516020615c0483398151915255565b5050505050565b5f610556848484611cb7565b949350505050565b5f6105736001600160a01b0386168786611e60565b6040516323e30c8b60e01b81525f906001600160a01b038816906323e30c8b906105ab9033908a908a9087908b908b9060040161522e565b6020604051808303815f875af11580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190615272565b90507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9811461063057604051630b6c58a960e31b815260048101829052602401610318565b610651873061063f5f8961529d565b6001600160a01b038a16929190611e95565b5060019695505050505050565b610666611865565b338585610674838383611a7d565b5f8080806106828a82611ab3565b6106b657604051623a3a4d60e21b81523360048201526001600160a01b038d166024820152604481018c9052606401610318565b5f6106c2338e8e611cb7565b90506106ce8b82611ed1565b94506106dc338e8e88611eed565b90935091505f6106ed338f88611f64565b80965081925050507f8045c25080b0868951141ed0a91720bcad09a8364a2b3109ee1fd49c1f0bc8b8338f8f8f8a8660405161075f969594939291906001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b60405180910390a1505060408051600681526001600160a01b038e1660208201528082018d9052606081018490526080810183905260a081018c905260ff851660c0820152600160e08201908152610100820182905261012082019092529089156107d2576107d2816103e18c8e61516e565b50505050505050505061054360015f80516020615c0483398151915255565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b69190615272565b5f80610863611865565b61087060808401846152b0565b90505f0361089157604051639c95219f60e01b815260040160405180910390fd5b610899614563565b6108a161458f565b5f6108af60808701876152b0565b5f8181106108bf576108bf6152f6565b90506020028101906108d1919061530a565b6108db9080615328565b6108e990604081019061533c565b6108f660808901896152b0565b5f818110610906576109066152f6565b9050602002810190610918919061530a565b6020013581811061092b5761092b6152f6565b610941926020604090920201908101915061487e565b90505f61095160808801886152b0565b5f818110610961576109616152f6565b9050602002810190610973919061530a565b61097d9080615328565b61098b90606081019061533c565b61099860808a018a6152b0565b5f8181106109a8576109a86152f6565b90506020028101906109ba919061530a565b604001358181106109cd576109cd6152f6565b6109e3926020604090920201908101915061487e565b905060605f6109f560808a018a6152b0565b6040805160206001939093018302810190915293508a01359150610a1b9050815f611ab3565b610a385760405163315f9e2360e21b815260040160405180910390fd5b5f5b610a4760808b018b6152b0565b905081108015610a5c5750610a5c825f611ab3565b15610db957610a6e60808b018b6152b0565b82818110610a7e57610a7e6152f6565b9050602002810190610a90919061530a565b610a9990615382565b9650865f01519550846001600160a01b03168660400151886020015181518110610ac557610ac56152f6565b60200260200101515f01516001600160a01b0316141580610b1c5750836001600160a01b03168660600151886040015181518110610b0557610b056152f6565b60200260200101515f01516001600160a01b031614155b15610b3a5760405163936bb5ad60e01b815260040160405180910390fd5b610b4d8688602001518960400151612027565b5f610b5787611880565b5f81815260208190526040902054909150610bbc578651604080513381526001600160a01b03909216602083015281018290527fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f39060600160405180910390a1610db0565b5f610bd6888a602001518b60400151338d60600151612099565b6060810151909150610bec9060408e0135611ab3565b15610c42578751604080513381526001600160a01b03909216602083015281018390527fe3151dc8cb7a54ffc4baabd28c1f241c94d510b5e5b502491ac3cad6c16316d5906060015b60405180910390a1610dae565b60408101516001600160e01b0316610c9c578751604080513381526001600160a01b03909216602083015281018390527f500b713857325f9e6dcb52ae832eca9109d107ed1aae9cb4928b4c1e13f051aa90606001610c35565b5f808d6060016020810190610cb19190615418565b15610cea576040830151610cc59087611ed1565b6060840151909250610cd79083612657565b9050610ce386836126a4565b9550610d3b565b5f610d068460400151856060015161265790919063ffffffff16565b9050610d128188611ed1565b9150610d2b8460600151836126d490919063ffffffff16565b9250610d3787836126a4565b9650505b610d458c82612704565b9b50610d518d83612704565b9c50610d5e818385612734565b7f194f1feb3b4d7076a2c272e774e792e0c48bb8c7aa1a9a3671c1cd6da9e6b4c1338c8484604051610d939493929190615540565b60405180910390a15050845160010180865260200285018190525b505b50600101610a3a565b505f9050610dcd60808a0160608b01615418565b610dd75786610dd9565b875b9050610de6818a356128fc565b15610e0e5760405163573b6f4160e01b81528935600482015260248101829052604401610318565b50610e1a338389611f64565b505f9050610e2b60a08a018a61562a565b90501115610e99573363691f9ed783858a8a610e4a60a08f018f61562a565b6040518763ffffffff1660e01b8152600401610e6b9695949392919061522e565b5f604051808303815f87803b158015610e82575f80fd5b505af1158015610e94573d5f803e3d5ffd5b505050505b610ea4338488611aed565b50505f5b8151811015610edb57610ed3828281518110610ec657610ec66152f6565b6020026020010151612936565b600101610ea8565b505050505050610ef760015f80516020615c0483398151915255565b915091565b5f610f05611865565b610f12602085018561533c565b90505f03610f3357604051636c44ef8f60e01b815260040160405180910390fd5b610f40604085018561533c565b90505f03610f615760405163540e5f0b60e01b815260040160405180910390fd5b6040805160a081019091523381525f9060208101610f7f878061566d565b610f8890615681565b8152602001868060200190610f9d919061533c565b808060200260200160405190810160405280939291908181526020015f905b82821015610fe857610fd96040830286013681900381019061568c565b81526020019060010190610fbc565b5050509183525050602001611000604088018861533c565b808060200260200160405190810160405280939291908181526020015f905b8282101561104b5761103c6040830286013681900381019061568c565b8152602001906001019061101f565b50505050508152602001866060013581525090505f61106982611880565b5f818152602081905260409020549091501580156111ab575f828152602081905260409081902060019055835190517f87491344dfbcf91f6cbbc610cbbeedc85313d37a02df0c93527f7ea5f8db717f916110c791859087906156a6565b60405180910390a15f6110dd60a089018961562a565b905011156111795761112e6110f560a089018961562a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b7992505050565b82517fd46c2c56b35c8210e9e712ec3f02242d5fc90187c0ac8ed80cc33626846ec369908361116060a08b018b61562a565b60405161117094939291906156cd565b60405180910390a15b6040805160028152602081018490523381830152606081019091526111ab906111a1906103bf565b6103e1878961516e565b925050506103fd60015f80516020615c0483398151915255565b5f8080806111df6111d68680615328565b61032e90614f5d565b5f8181526020819052604090205490915060011461120657505f925082915081905061127f565b61122b6112138680615328565b61121c90614f5d565b86602001358760400135612027565b5f6112686112398780615328565b61124290614f5d565b602088013560408901353361125a60608c018c6152b0565b611263916156ff565b612099565b905060018160400151826060015194509450945050505b9193909250565b604080515f8152602081019091526060908267ffffffffffffffff8111156112b0576112b0614a5b565b6040519080825280602002602001820160405280156112e357816020015b60608152602001906001900390816112ce5790505b5091505f5b838110156113645761133f30868684818110611306576113066152f6565b9050602002810190611318919061562a565b8560405160200161132b9392919061570b565b604051602081830303815290604052612ba4565b838281518110611351576113516152f6565b60209081029190910101526001016112e8565b505092915050565b611374611865565b604080515f808252602082019092526113ac916113a1565b606081526020019060019003908161138c5790505b506103e1838561516e565b6113c260015f80516020615c0483398151915255565b5050565b6113ce611865565b835185516001600160a01b039182169116036113fd57604051630a98f1f360e21b815260040160405180910390fd5b8360400151836040013581518110611417576114176152f6565b60200260200101515f01516001600160a01b03168560600151846020013581518110611445576114456152f6565b60200260200101515f01516001600160a01b03161415806114be5750604085015180518435908110611479576114796152f6565b60200260200101515f01516001600160a01b031684606001518460600135815181106114a7576114a76152f6565b60200260200101515f01516001600160a01b031614155b156114dc5760405163936bb5ad60e01b815260040160405180910390fd5b84606001518360200135815181106114f6576114f66152f6565b60200260200101515f01516001600160a01b03168560400151845f013581518110611523576115236152f6565b60200260200101515f01516001600160a01b03160361155557604051631cd2f1c760e21b815260040160405180910390fd5b5f805f61156188611880565b81526020019081526020015f2054036115d1577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333865f01516115a388611880565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a161184f565b5f805f6115dd87611880565b81526020019081526020015f20540361161f577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333855f01516115a387611880565b7f6fa7f4c28634b0a9d6831401c45ae468195fb63aed07308935c35374ff5d9e3933868686604051611654949392919061572e565b60405180910390a15f61167486855f01358660200135885f015186612099565b90505f61168f86866040013587606001358a5f015188612099565b90505f61169c8383612c44565b90506116b08160400151825f015185612734565b6116c38160600151826020015184612734565b606081015181515f916116d691906126a4565b90505f6116f4836040015184602001516126a490919063ffffffff16565b9050611700825f6128fc565b806117105750611710815f6128fc565b1561172e57604051630d86822160e01b815260040160405180910390fd5b611762338b606001518a602001358151811061174c5761174c6152f6565b60200260200101515f01518a6080013585611bc7565b5050611798338a606001518a6060013581518110611782576117826152f6565b60200260200101515f01518a60a0013584611bc7565b5050604080513381528451602080830191909152850151818301529084015160608083019190915284015160808201527fd9fa84dd790c969daa5c33d8050dc06b4a9b59d5b42e2be5f5e8ae20447f618d925060a001905060405180910390a161180183612936565b61180a82612936565b80516001600160e01b031615801561182d575060208101516001600160e01b0316155b1561184b576040516321badf1f60e01b815260040160405180910390fd5b5050505b61054360015f80516020615c0483398151915255565b61186d612c92565b60025f80516020615c0483398151915255565b5f8160405160200161189291906157aa565b604051602081830303815290604052805190602001209050919050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b8651811015611a7357868181518110611916576119166152f6565b602002602001015193505f845f015160400151511115611a6b575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f815260200161198e8d8a60200151612cc3565b8152602001878152602001868152506040518263ffffffff1660e01b81526004016119b99190615814565b5f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061590c565b9150505f81511115611a695784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490611a3b908a9085906004016159c2565b5f604051808303815f87803b158015611a52575f80fd5b505af1158015611a64573d5f803e3d5ffd5b505050505b505b6001016118fb565b5050505050505050565b80611aae576040516305dbdfd960e41b81526001600160a01b03808516600483015283166024820152604401610318565b505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d611ae184848484612fa5565b12979650505050505050565b5f805f80611afa86613079565b90925090506001826003811115611b1357611b136159da565b14158015611b3257505f826003811115611b2f57611b2f6159da565b14155b15611b5457858260405163ee07877f60e01b81526004016103189291906159ee565b611b5e855f6128fc565b15611b7c57604051632eaefac360e21b815260040160405180910390fd5b5f80611b888784613106565b9150915080611b9d57611b9a82615a27565b91505b8115611bb857611bb86001600160a01b0389168a3085611e95565b5093509150505b935093915050565b5f80611bd383826128fc565b15611bf45760405163793a8f5560e01b815260048101849052602401610318565b83611c1257611c04868685611f64565b505f9250829150611cae9050565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c8286612704565b9050611c58815f6128fc565b15611c795760405163c5e12af560e01b815260048101829052602401610318565b6001600160a01b038089165f908152600160209081526040808320938b16835292815282822089835290522081905590925090505b94509492505050565b5f8115611cf157506001600160a01b038084165f9081526001602090815260408083209386168352928152828220848352905220546103fd565b5f80611cfc85613133565b90925090506001826003811115611d1557611d156159da565b14158015611d3457505f826003811115611d3157611d316159da565b14155b15611d5657848260405163ee07877f60e01b81526004016103189291906159ee565b6040516370a0823160e01b81526001600160a01b0387811660048301525f91611dca918816906370a0823190602401602060405180830381865afa158015611da0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc49190615272565b83613192565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192505f91611e48919089169063dd62ed3e90604401602060405180830381865afa158015611e1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e429190615272565b846131b6565b509050611e558282611ed1565b9450505050506103fd565b611e6d83838360016131f6565b611aae57604051635274afe760e01b81526001600160a01b0384166004820152602401610318565b611ea3848484846001613258565b611ecb57604051635274afe760e01b81526001600160a01b0385166004820152602401610318565b50505050565b5f611edc83836128fc565b611ee657816103fd565b5090919050565b5f80611ef983826128fc565b15611f1a5760405163793a8f5560e01b815260048101849052602401610318565b83611f2a57611c04868685611aed565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c82866126a4565b5f805f80611f7186613079565b90925090506001826003811115611f8a57611f8a6159da565b14158015611fa957505f826003811115611fa657611fa66159da565b14155b15611fcb57858260405163ee07877f60e01b81526004016103189291906159ee565b611fd5855f6128fc565b15611ff357604051632d1671a360e11b815260040160405180910390fd5b5f611ffe8683613106565b509050801561201b5761201b6001600160a01b0388168983611e60565b97909650945050505050565b8260600151818151811061203d5761203d6152f6565b60200260200101515f01516001600160a01b031683604001518381518110612067576120676152f6565b60200260200101515f01516001600160a01b031603611aae57604051631cd2f1c760e21b815260040160405180910390fd5b6120a16145f6565b5f6120ab87611880565b60408051600480825260a082019092529192506060915f91816020015b60608152602001906001900390816120c85790505089516040805160038152602081018790526001600160a01b03928316818301529189166060830152608082019052909150816001800381518110612123576121236152f6565b60200260200101819052505f806121598b604001518b81518110612149576121496152f6565b60200260200101515f0151613133565b90925090506001826003811115612172576121726159da565b1415801561219157505f82600381111561218e5761218e6159da565b14155b156121d3578a604001518a815181106121ac576121ac6152f6565b60200260200101515f01518260405163ee07877f60e01b81526004016103189291906159ee565b5f6122238c5f01518d604001518d815181106121f1576121f16152f6565b60200260200101515f01518e604001518e81518110612212576122126152f6565b602002602001015160200151611cb7565b90506122b28c604001518c8151811061223e5761223e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e604001518e81518110612270576122706152f6565b602002602001015160200151845f801b60408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b846001600303815181106122c8576122c86152f6565b60200260200101819052505050505f806122f18b606001518a81518110612149576121496152f6565b9092509050600182600381111561230a5761230a6159da565b1415801561232957505f826003811115612326576123266159da565b14155b15612344578a6060015189815181106121ac576121ac6152f6565b5f6123838c5f01518d606001518c81518110612362576123626152f6565b60200260200101515f01518e606001518d81518110612212576122126152f6565b90506123d08c606001518b8151811061239e5761239e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e606001518d81518110612270576122706152f6565b846001600403815181106123e6576123e66152f6565b60200260200101819052505050506123fe8186612cc3565b9150505f885f01516001600160a01b031690505f808a602001515f01516001600160a01b031663d04dfe236040518060e001604052808e60200151602001516001600160a01b0316815260200161245e87305f9182526020526040902090565b81526020018e602001516040015181526020015f81526020018781526020015f67ffffffffffffffff81111561249657612496614a5b565b6040519080825280602002602001820160405280156124bf578160200160208202803683370190505b5081526020015f6040519080825280602002602001820160405280156124ef578160200160208202803683370190505b508152506040518263ffffffff1660e01b815260040161250f9190615814565b5f60405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612550919081019061590c565b9150915060028251101561257c578151604051630fbb8e5560e21b815260040161031891815260200190565b6020820151604083015160608d015180515f91908d9081106125a0576125a06152f6565b602002602001015190505f6125c08f5f0151835f01518460200151611cb7565b90506125cc8382611ed1565b6040805160028152602081018390528082018790526060810190915290935091506125f49050565b86600281518110612607576126076152f6565b60200260200101819052506040518060e001604052808e81526020018c81526020018281526020018381526020018781526020018681526020018481525097505050505050505095945050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866132c5565b915091505f61269683836133e4565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613431565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d84806126878686868661345b565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613998565b82816080015160038151811061274c5761274c6152f6565b6020026020010151600481518110612766576127666152f6565b60200260200101818152505081816080015160048151811061278a5761278a6152f6565b60200260200101516004815181106127a4576127a46152f6565b602002602001018181525050612833815f01515f015182608001516003815181106127d1576127d16152f6565b60200260200101515f815181106127ea576127ea6152f6565b60200260200101515f1c836080015160038151811061280b5761280b6152f6565b6020026020010151600281518110612825576128256152f6565b602002602001015186611bc7565b50506128b8815f01515f01518260800151600481518110612856576128566152f6565b60200260200101515f8151811061286f5761286f6152f6565b60200260200101515f1c8360800151600481518110612890576128906152f6565b60200260200101516002815181106128aa576128aa6152f6565b602002602001015185611eed565b50507f4cb6e22a3e7e651d7cf0376cff48f20f5007a54147777865be7f5f6c38c50f4a3382608001516040516128ef929190615a3f565b60405180910390a1505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d61292a84848484612fa5565b13979650505050505050565b60c081015151156129b0578051602090810151015160a082015160c083015160405163012c676d60e21b81526001600160a01b03909316926304b19db4926129829290916004016159c2565b5f604051808303815f87803b158015612999575f80fd5b505af11580156129ab573d5f803e3d5ffd5b505050505b5f815f0151602001515f01516001600160a01b031663d04dfe236040518060e00160405280855f015160200151602001516001600160a01b03168152602001612a068660a00151305f9182526020526040902090565b8152602001855f01516020015160400151815260200160018152602001856080015181526020015f67ffffffffffffffff811115612a4657612a46614a5b565b604051908082528060200260200182016040528015612a6f578160200160208202803683370190505b5081526020015f604051908082528060200260200182016040528015612a9f578160200160208202803683370190505b508152506040518263ffffffff1660e01b8152600401612abf9190615814565b5f60405180830381865afa158015612ad9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b00919081019061590c565b9150505f815111156113c2578151602090810151015160a083015160405163012c676d60e21b81526001600160a01b03909216916304b19db491612b489185906004016159c2565b5f604051808303815f87803b158015612b5f575f80fd5b505af1158015612b71573d5f803e3d5ffd5b505050505050565b612b8281613a96565b612ba15780604051630c89984b60e31b81526004016103189190615a60565b50565b60605f612bb18484613ac4565b9050808015612bd257505f3d1180612bd257505f846001600160a01b03163b115b15612be757612bdf613ad7565b9150506102b6565b8015612c1157604051639996b31560e01b81526001600160a01b0385166004820152602401610318565b3d15612c2457612c1f613af0565b612c3d565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604080516080810182525f808252602082018190529181018290526060810191909152612c718383613afb565b82526040820152612c828284613afb565b6020830152606082015292915050565b5f80516020615c0483398151915254600203612cc157604051633ee5aeb560e01b815260040160405180910390fd5b565b60605f825167ffffffffffffffff811115612ce057612ce0614a5b565b604051908082528060200260200182016040528015612d09578160200160208202803683370190505b5090505f80845111612d1b575f612d21565b83516001015b85516001010190505f8167ffffffffffffffff811115612d4357612d43614a5b565b604051908082528060200260200182016040528015612d7657816020015b6060815260200190600190039081612d615790505b5090505f612d9a604080516002815233602082015230818301526060810190915290565b828281518110612dac57612dac6152f6565b60200260200101819052505f5b8751811015612e09578180600101925050878181518110612ddc57612ddc6152f6565b6020026020010151838381518110612df657612df66152f6565b6020908102919091010152600101612db9565b50855115612f9b57808060010191505083828281518110612e2c57612e2c6152f6565b60200260200101819052505f5b8651811015612f9957612ee8878281518110612e5757612e576152f6565b60200260200101515f0151612ec5612e938a8581518110612e7a57612e7a6152f6565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b898481518110612ed757612ed76152f6565b602002602001015160400151613b64565b612f0857604051630a57f30960e31b815260048101829052602401610318565b868181518110612f1a57612f1a6152f6565b60200260200101515f01516001600160a01b03165f1b858281518110612f4257612f426152f6565b6020026020010181815250508180600101925050868181518110612f6857612f686152f6565b602002602001015160200151838381518110612f8657612f866152f6565b6020908102919091010152600101612e39565b505b5095945050505050565b5f8085158415178187128286121817858414178015612fca5786859250925050611cae565b505f85841315612fde575092949193919260015b8386035f8112604c8213178015613011578215613003575f8994509450505050611cae565b885f94509450505050611cae565b600a82900a8981028a82828161302957613029615a72565b0514613055578415613045575f8b965096505050505050611cae565b8a5f965096505050505050611cae565b841561306a578896509450611cae9350505050565b9550879450611cae9350505050565b5f80613083613bd4565b60405163b7bad1b160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb93899063b7bad1b19060240160408051808303815f875af11580156130d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fd9190615a86565b91509150915091565b5f806001600160e01b038416601b0b60e085901d613125828287613c5f565b9350935050505b9250929050565b5f8061313d613bd4565b604051630782d7e160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb938990630782d7e1906024016040805180830381865afa1580156130d9573d5f803e3d5ffd5b5f805f61319f8585613dc5565b915091506131ad8282613e0e565b95945050505050565b5f805f805f6131c58787613e47565b9250925092505f806131d78585613e8a565b91509150818380156131e65750815b9650965050505050509250929050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661324c578383151615613240573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166132b45783831516156132a8573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f80851584151780156132dd575f92505f91506133da565b6132e78487615ac6565b91505f6132f388613f62565b90505f6132ff87613f62565b90505f61330c8383613f90565b5090505f6f0785ee10d5da46d900f436a000000000821115613341576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561336257670de0b6b3a7640000820491506012015b633b9aca0082111561337b57633b9aca00820491506009015b61271082111561339057612710820491506004015b81156133a457600a82049150600101613390565b6133ae8187615ac6565b95506133d08b8a6133ca87876133c587600a615bc5565b613fac565b89614078565b9097509550505050505b5094509492505050565b5f805f6133f18585613e8a565b9150915080158015613401575081155b1561342957604051638eba4d0760e01b81526004810186905260248101859052604401610318565b509392505050565b5f8061343d8484614118565b909450925061344e86868686613998565b9150915094509492505050565b5f80835f0361348757604051637a97930f60e01b81526004810187905260248101869052604401610318565b855f0361349857505f905080611cae565b5f805f806134a68a8a61416d565b919b50995091506134b7888861416d565b919950975090505f6134c88b613f62565b90505f6134d48a613f62565b90507f161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000604c8183101561389957841561352b57507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b613871565b6f4b3b4ca85a86c47a098a22400000000083101561365757678ac7230489e800008310156135bb576402540be40083101561358957620186a08310156135795750620186a090506005613832565b506402540be4009050600a613832565b655af3107a40008310156135a85750655af3107a40009050600e613832565b50678ac7230489e8000090506013613832565b6b204fce5e3e2502611000000083101561360d5769152d02c7e14af68000008310156135f6575069152d02c7e14af680000090506017613832565b506b204fce5e3e250261100000009050601c613832565b6d314dc6448d9338c15b0a0000000083101561363c57506d314dc6448d9338c15b0a0000000090506021613832565b506f4b3b4ca85a86c47a098a22400000000090506026613832565b780197d4df19d605767337e9f14d3eec8920e40000000000000083101561374f5773af298d050e4395d69670b12b7f410000000000008310156136ea577172cb5bd86321e38cb6ce6682e800000000008310156136cb57507172cb5bd86321e38cb6ce6682e800000000009050602b613832565b5073af298d050e4395d69670b12b7f4100000000000090506030613832565b76010b46c6cdd6e3e0828f4db456ff0c8ea000000000000083101561372b575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035613832565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a613832565b7c03b58e88c75313ec9d329eaaa18fb92f75215b171000000000000000008310156137e5577a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000008310156137bd57507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f613832565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044613832565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca00000000000000000083101561383257507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b81831161384757600a820491505f1901613832565b815f03613871576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610318565b85613899576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610318565b80600160ff1b018d126138b057808d039c506138ee565b600160ff1b9c90038c015f8113156138ee57806001600160ff1b03038b136138db57998a01996138ee565b5f80995099505050505050505050611cae565b5f808e1280156138fd57505f8c135b1561391e57600160ff1b8e01808d13613916575f61391a565b808d035b9150505b8b818f0103975061393b8f8e613935888789613fac565b8b614078565b90995097505f81131561398557604c811315613965575f809a509a50505050505050505050611cae565b80600a0a898161397757613977615a72565b059850885f03613985575f97505b50969850949650611cae95505050505050565b5f80851584151780156139c457865f036139b85784849250925050611cae565b86869250925050611cae565b6139ce87876143c7565b90975095506139dd85856143c7565b9095509350858413156139f1579395929492935b838603604c811115613a0a578787935093505050611cae565b80600a0a8681613a1c57613a1c615a72565b0595505086850180881860ff90811c151589881890911c15168015613a8557876001600160ff1b0303613a6c5760405163d556b11160e01b8152600481018a905260248101899052604401610318565b600a968790059690980586019760019790970196613a89565b8198505b5096979596505050505050565b5f600882511015613aa857505f919050565b506008015167ffffffffffffffff1667ff0a89c674ee78741490565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80613b188460600151856040015161265790919063ffffffff16565b915083604001519050613b38836040015183611ab390919063ffffffff16565b1561312c5782604001519150613b5b8460600151836126d490919063ffffffff16565b90509250929050565b5f836001600160a01b03163b5f03613bc2575f80613b828585614404565b5090925090505f816003811115613b9b57613b9b6159da565b148015613bb95750856001600160a01b0316826001600160a01b0316145b925050506103fd565b613bcd84848461444a565b90506103fd565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580613c2b575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15612cc1576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610318565b5f805f851215613c8c57604051634a7d166b60e01b81526004810186905260248101859052604401610318565b845f03613c9e57505f90506001611bbf565b8460ff8416850185811215613cd05760405163d556b11160e01b81526004810188905260248101879052604401610318565b5f805f831215613d1c57604c19831215613cf3575f809550955050505050611bbf565b825f03600a0a9150818481613d0a57613d0a615a72565b0495505084029091149150611bbf9050565b5f831315613db557604d831315613d595760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b82600a0a9150815f1981613d6f57613d6f615a72565b04841115613da35760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b5091909102925060019150611bbf9050565b8360019550955050505050611bbf565b5f805f805f613dd48787613e47565b92509250925080613e0257604051636238bcb360e11b81526004810184905260248101839052604401610318565b50909590945092505050565b5f805f613e1b8585613e8a565b9150915080613429576040516322c9f7bb60e01b81526004810186905260248101859052604401610318565b5f808060ff841681036001600160ff1b03861115613e7957600a860460018201600a88065f1493509350935050613e83565b8593509150600190505b9250925092565b5f601b83900b8314838382613eee577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515613ece57620186a0860595506005850194505b8586601b0b14613ee957600a86059550846001019450613ece565b613f04565b855f03613f0457505f92506001915061312c9050565b848560030b14613f47575f851215613f2457505f925082915061312c9050565b60405163d556b11160e01b81526004810183905260248101829052604401610318565b50506001600160e01b03841660e084901b1791509250929050565b5f80821215613f8757600160ff1b8203613f815750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f613fb98686613f90565b91509150815f03613fdd57838181613fd357613fd3615a72565b04925050506103fd565b83821061400e5760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610318565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f85871812156140f4576001600160ff1b038411156140e1576140a56001600160ff1b03600161529d565b84036140b95750600160ff1b905081611cae565b6140c4600a85615bd0565b6140cd90615bef565b6140d8846001615ac6565b91509150611cae565b6140ea84615bef565b8391509150611cae565b6001600160ff1b0384111561410e576140cd600a85615bd0565b5082905081611cae565b5f80600160ff1b8403614163576001600160ff1b0383036141565760405163d556b11160e01b81526004810185905260248101849052604401610318565b600a840593508260010192505b50505f9190910391565b5f805f845f0361418557505f91508190506001613e83565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03614372576f4b3b4ca85a86c47a098a22400000000085051580156141e757507f80000000000000000000000000000000000000000000000000000000000000268412155b15614208576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561425057507f80000000000000000000000000000000000000000000000000000000000000138412155b1561426957678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156142b557507f800000000000000000000000000000000000000000000000000000000000000a8412155b156142cb576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561431a57507f80000000000000000000000000000000000000000000000000000000000000028412155b15614330576064850294506002840393506142cb565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561436057506001600160ff1b018412155b1561437257600a850294506001840393505b600a8086029081058614801561438f57506001600160ff1b018512155b1561439e578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b5f805f805f6143d6878761416d565b92509250925080613e02576040516305e51ecb60e01b81526004810188905260248101879052604401610318565b5f805f835160410361443b576020840151604085015160608601515f1a61442d8882858561449b565b955095509550505050613e83565b505081515f9150600290613e83565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156144d457505f91506003905082614559565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614525573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661455057505f925060019150829050614559565b92505f91508190505b9450945094915050565b604051806080016040528061457661458f565b81526020015f81526020015f8152602001606081525090565b6040518060a001604052805f6001600160a01b031681526020016145dd60405180606001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b8152606060208201819052604082018190525f91015290565b6040518060e0016040528061460961458f565b81526020015f81526020015f80191681526020015f8019168152602001606081526020015f8152602001606081525090565b5f6020828403121561464b575f80fd5b81356001600160e01b0319811681146103fd575f80fd5b5f8083601f840112614672575f80fd5b50813567ffffffffffffffff811115614689575f80fd5b6020830191508360208260051b850101111561312c575f80fd5b5f805f604084860312156146b5575f80fd5b833567ffffffffffffffff808211156146cc575f80fd5b9085019060a082880312156146df575f80fd5b909350602085013590808211156146f4575f80fd5b5061470186828701614662565b9497909650939450505050565b5f6020828403121561471e575f80fd5b5035919050565b6001600160a01b0381168114612ba1575f80fd5b8035613f8b81614725565b5f805f805f60808688031215614758575f80fd5b853561476381614725565b94506020860135935060408601359250606086013567ffffffffffffffff81111561478c575f80fd5b61479888828901614662565b969995985093965092949392505050565b5f805f606084860312156147bb575f80fd5b83356147c681614725565b925060208401356147d681614725565b929592945050506040919091013590565b5f805f805f608086880312156147fb575f80fd5b853561480681614725565b9450602086013561481681614725565b935060408601359250606086013567ffffffffffffffff80821115614839575f80fd5b818801915088601f83011261484c575f80fd5b81358181111561485a575f80fd5b89602082850101111561486b575f80fd5b9699959850939650602001949392505050565b5f6020828403121561488e575f80fd5b81356103fd81614725565b5f60c082840312156148a9575f80fd5b50919050565b5f602082840312156148bf575f80fd5b813567ffffffffffffffff8111156148d5575f80fd5b61055684828501614899565b5f805f604084860312156148f3575f80fd5b833567ffffffffffffffff8082111561490a575f80fd5b61491687838801614899565b945060208601359150808211156146f4575f80fd5b5f6020828403121561493b575f80fd5b813567ffffffffffffffff811115614951575f80fd5b8201608081850312156103fd575f80fd5b5f8060208385031215614973575f80fd5b823567ffffffffffffffff811115614989575f80fd5b61499585828601614662565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015614a2457603f19888603018452614a128583516149a1565b945092850192908501906001016149f6565b5092979650505050505050565b5f8060408385031215614a42575f80fd5b8235614a4d81614725565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405290565b6040805190810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405160a0810167ffffffffffffffff81118282101715614a9257614a92614a5b565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0757614b07614a5b565b604052919050565b5f82601f830112614b1e575f80fd5b813567ffffffffffffffff811115614b3857614b38614a5b565b614b4b601f8201601f1916602001614ade565b818152846020838601011115614b5f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215614b8b575f80fd5b614b93614a6f565b90508135614ba081614725565b81526020820135614bb081614725565b6020820152604082013567ffffffffffffffff811115614bce575f80fd5b614bda84828501614b0f565b60408301525092915050565b5f67ffffffffffffffff821115614bff57614bff614a5b565b5060051b60200190565b5f60408284031215614c19575f80fd5b614c21614a98565b90508135614c2e81614725565b808252506020820135602082015292915050565b5f82601f830112614c51575f80fd5b81356020614c66614c6183614be6565b614ade565b8083825260208201915060208460061b870101935086841115614c87575f80fd5b602086015b84811015614cac57614c9e8882614c09565b835291830191604001614c8c565b509695505050505050565b5f60a08284031215614cc7575f80fd5b614ccf614abb565b9050614cda82614739565b8152602082013567ffffffffffffffff80821115614cf6575f80fd5b614d0285838601614b7b565b60208401526040840135915080821115614d1a575f80fd5b614d2685838601614c42565b60408401526060840135915080821115614d3e575f80fd5b50614d4b84828501614c42565b6060830152506080820135608082015292915050565b5f614d6e614c6184614be6565b8381529050602080820190600585811b850187811115614d8c575f80fd5b855b81811015614e7957803567ffffffffffffffff80821115614dad575f80fd5b908801906060828c031215614dc0575f80fd5b614dc8614a6f565b8235614dd381614725565b81528287013582811115614de5575f80fd5b8301601f81018d13614df5575f80fd5b8035614e03614c6182614be6565b81815290881b8201890190898101908f831115614e1e575f80fd5b928a01925b82841015614e3c5783358252928a0192908a0190614e23565b848b01525060409150508381013583811115614e56575f80fd5b614e628e828701614b0f565b918301919091525087525050938301938301614d8e565b50505050509392505050565b5f82601f830112614e94575f80fd5b6103fd83833560208501614d61565b5f805f805f6101408688031215614eb8575f80fd5b853567ffffffffffffffff80821115614ecf575f80fd5b614edb89838a01614cb7565b96506020880135915080821115614ef0575f80fd5b614efc89838a01614cb7565b9550614f0b8960408a01614899565b9450610100880135915080821115614f21575f80fd5b614f2d89838a01614e85565b9350610120880135915080821115614f43575f80fd5b50614f5088828901614e85565b9150509295509295909350565b5f6102b63683614cb7565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135614f9c81614725565b6001600160a01b039081168452602083013590614fb882614725565b166020840152604082013536839003601e19018112614fd5575f80fd5b820160208101903567ffffffffffffffff811115614ff1575f80fd5b803603821315614fff575f80fd5b606060408601526131ad606086018284614f68565b5f808335601e19843603018112615029575f80fd5b830160208101925035905067ffffffffffffffff811115615048575f80fd5b8060061b360382131561312c575f80fd5b8183525f60208085019450825f5b8581101561509f57813561507a81614725565b6001600160a01b03168752818301358388015260409687019690910190600101615067565b509495945050505050565b5f6001600160a01b0380861683528460208401526060604084015283356150d081614725565b166060830152602083013536849003605e190181126150ed575f80fd5b60a060808401526151046101008401858301614f90565b90506151136040850185615014565b605f19808685030160a087015261512b848385615059565b935061513a6060880188615014565b93509150808685030160c087015250615154838383615059565b92505050608084013560e084015280915050949350505050565b5f61517b614c6184614be6565b80848252602080830192508560051b850136811115615198575f80fd5b855b8181101561522257803567ffffffffffffffff808211156151b9575f80fd5b8189019150604082360312156151cd575f80fd5b6151d5614a98565b8235828111156151e3575f80fd5b6151ef36828601614b7b565b8252508583013582811115615202575f80fd5b61520e36828601614e85565b82880152508752505093820193820161519a565b50919695505050505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015260a0608083015261526660a083018486614f68565b98975050505050505050565b5f60208284031215615282575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102b6576102b6615289565b5f808335601e198436030181126152c5575f80fd5b83018035915067ffffffffffffffff8211156152df575f80fd5b6020019150600581901b360382131561312c575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e1983360301811261531e575f80fd5b9190910192915050565b5f8235609e1983360301811261531e575f80fd5b5f808335601e19843603018112615351575f80fd5b83018035915067ffffffffffffffff82111561536b575f80fd5b6020019150600681901b360382131561312c575f80fd5b5f60808236031215615392575f80fd5b6040516080810167ffffffffffffffff82821081831117156153b6576153b6614a5b565b8160405284359150808211156153ca575f80fd5b6153d636838701614cb7565b8352602085013560208401526040850135604084015260608501359150808211156153ff575f80fd5b5061540c36828601614e85565b60608301525092915050565b5f60208284031215615428575f80fd5b813580151581146103fd575f80fd5b5f815180845260208085019450602084015f5b8381101561509f57815180516001600160a01b03168852830151838801526040909601959082019060010161544a565b5f6001600160a01b03808351168452602083015160a060208601528181511660a08601528160208201511660c08601526040810151915050606060e08501526154c76101008501826149a1565b9050604083015184820360408601526154e08282615437565b915050606083015184820360608601526154fa8282615437565b915050608083015160808501528091505092915050565b5f815180845260208085019450602084015f5b8381101561509f57815187529582019590820190600101615524565b5f6001600160a01b0380871683526020608081850152865160808086015261556c61010086018261547a565b90508188015160a086015260408089015160c08701526060808a0151607f198885030160e08901528381518086528686019150868160051b87010187840193505f5b8281101561560857601f1988830301845284518a815116835289810151878b8501526155dc88850182615511565b91890151848303858b01529190506155f481836149a1565b968b0196958b0195935050506001016155ae565b5080995050505050505050505083604083015282606083015295945050505050565b5f808335601e1984360301811261563f575f80fd5b83018035915067ffffffffffffffff821115615659575f80fd5b60200191503681900382131561312c575f80fd5b5f8235605e1983360301811261531e575f80fd5b5f6102b63683614b7b565b5f6040828403121561569c575f80fd5b6103fd8383614c09565b6001600160a01b0384168152826020820152606060408201525f6131ad606083018461547a565b6001600160a01b0385168152836020820152606060408201525f6156f5606083018486614f68565b9695505050505050565b5f6103fd368484614d61565b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f6101206001600160a01b03871683528060208401526157508184018761547a565b90508281036040840152615764818661547a565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b602081525f6103fd602083018461547a565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561580757601f198684030189526157f5838351615511565b988401989250908301906001016157d9565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261584d6101008401826149a1565b9050606084015160808401526080840151601f19808584030160a086015261587583836157bc565b925060a08601519150808584030160c08601526158928383615511565b925060c08601519150808584030160e0860152506131ad8282615511565b5f82601f8301126158bf575f80fd5b815160206158cf614c6183614be6565b8083825260208201915060208460051b8701019350868411156158f0575f80fd5b602086015b84811015614cac57805183529183019183016158f5565b5f806040838503121561591d575f80fd5b825167ffffffffffffffff80821115615934575f80fd5b818501915085601f830112615947575f80fd5b81516020615957614c6183614be6565b82815260059290921b84018101918181019089841115615975575f80fd5b948201945b838610156159935785518252948201949082019061597a565b918801519196509093505050808211156159ab575f80fd5b506159b8858286016158b0565b9150509250929050565b828152604060208201525f6105566040830184615511565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160048310615a1a57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60018201615a3857615a38615289565b5060010190565b6001600160a01b0383168152604060208201525f61055660408301846157bc565b602081525f6103fd60208301846149a1565b634e487b7160e01b5f52601260045260245ffd5b5f8060408385031215615a97575f80fd5b825160048110615aa5575f80fd5b602084015190925060ff81168114615abb575f80fd5b809150509250929050565b8082018281125f83128015821682158216171561136457611364615289565b600181815b80851115615b1f57815f1904821115615b0557615b05615289565b80851615615b1257918102915b93841c9390800290615aea565b509250929050565b5f82615b35575060016102b6565b81615b4157505f6102b6565b8160018114615b575760028114615b6157615b7d565b60019150506102b6565b60ff841115615b7257615b72615289565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715615ba0575081810a6102b6565b615baa8383615ae5565b805f1904821115615bbd57615bbd615289565b029392505050565b5f6103fd8383615b27565b5f82615bea57634e487b7160e01b5f52601260045260245ffd5b500490565b5f600160ff1b8201613f8157613f8161528956fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00","sourceMap":"7948:40830:377:-:0;;;;;;;;;;;;-1:-1:-1;2365:1:19;1505:66;2539;7948:40830:377;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063613255ab11610093578063ac9650d811610063578063ac9650d81461022b578063d7e442ec1461024b578063d9d98ce41461025e578063fa50118214610273575f80fd5b8063613255ab146101ad57806369c72856146101c0578063709fb8a5146101e85780639235084d146101fb575f80fd5b80632fbc4ba0116100ce5780632fbc4ba01461015157806341d1514f146101665780635cffe9de14610187578063607461191461019a575f80fd5b806301ffc9a7146100f45780631f69cb751461011c5780632cb77e9f1461012f575b5f80fd5b61010761010236600461463b565b610286565b60405190151581526020015b60405180910390f35b61010761012a3660046146a3565b6102bc565b61010761013d36600461470e565b5f9081526020819052604090205460011490565b61016461015f366004614744565b610404565b005b6101796101743660046147a9565b61054a565b604051908152602001610113565b6101076101953660046147e7565b61055e565b6101646101a8366004614744565b61065e565b6101796101bb36600461487e565b6107f1565b6101d36101ce3660046148af565b610859565b60408051928352602083019190915201610113565b6101076101f63660046148e1565b610efc565b61020e61020936600461492b565b6111c5565b604080519315158452602084019290925290820152606001610113565b61023e610239366004614962565b611286565b60405161011391906149cf565b610164610259366004614962565b61136c565b61017961026c366004614a31565b5f92915050565b610164610281366004614ea3565b6113c6565b5f6001600160e01b0319821663e414309160e01b14806102b657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6102c5611865565b6102d2602085018561487e565b6001600160a01b0316336001600160a01b031614610321576102f7602085018561487e565b6040516335252be360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f61033361032e86614f5d565b611880565b5f818152602081905260409020549091505f19016103e6575f818152602081905260408082209190915551600192507f09d18501db0080ca2d6cd7c17fa7255daff4b2d503ea93b76ff68b6752ea8e6390610393903390849089906150aa565b60405180910390a16040805160028152602081018390523381830152606081019091526103e6906103d7905b60408051600181526020810192909252818101905290565b6103e1858761516e565b6118af565b506103fd60015f80516020615c0483398151915255565b9392505050565b61040c611865565b33858561041a838383611a7d565b610424865f611ab3565b610459576040516306dde9c360e41b81523360048201526001600160a01b038916602482015260448101889052606401610318565b5f80610466338b8a611aed565b604080513381526001600160a01b038e1660208201529081018c90526060810183905291935091507f7f9dfa19cf1cc2f806f2f860fbc9c056b601fb1afc0e9b843dfe5c63616268e69060800160405180910390a15f806104c9338d8d8d611bc7565b909250905087156105265760408051600581526001600160a01b038e1660208201528082018d9052606081018490526080810183905260ff851660a082015260c081019091526105269061051c906103bf565b6103e18a8c61516e565b5050505050505061054360015f80516020615c0483398151915255565b5050505050565b5f610556848484611cb7565b949350505050565b5f6105736001600160a01b0386168786611e60565b6040516323e30c8b60e01b81525f906001600160a01b038816906323e30c8b906105ab9033908a908a9087908b908b9060040161522e565b6020604051808303815f875af11580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190615272565b90507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9811461063057604051630b6c58a960e31b815260048101829052602401610318565b610651873061063f5f8961529d565b6001600160a01b038a16929190611e95565b5060019695505050505050565b610666611865565b338585610674838383611a7d565b5f8080806106828a82611ab3565b6106b657604051623a3a4d60e21b81523360048201526001600160a01b038d166024820152604481018c9052606401610318565b5f6106c2338e8e611cb7565b90506106ce8b82611ed1565b94506106dc338e8e88611eed565b90935091505f6106ed338f88611f64565b80965081925050507f8045c25080b0868951141ed0a91720bcad09a8364a2b3109ee1fd49c1f0bc8b8338f8f8f8a8660405161075f969594939291906001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b60405180910390a1505060408051600681526001600160a01b038e1660208201528082018d9052606081018490526080810183905260a081018c905260ff851660c0820152600160e08201908152610100820182905261012082019092529089156107d2576107d2816103e18c8e61516e565b50505050505050505061054360015f80516020615c0483398151915255565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b69190615272565b5f80610863611865565b61087060808401846152b0565b90505f0361089157604051639c95219f60e01b815260040160405180910390fd5b610899614563565b6108a161458f565b5f6108af60808701876152b0565b5f8181106108bf576108bf6152f6565b90506020028101906108d1919061530a565b6108db9080615328565b6108e990604081019061533c565b6108f660808901896152b0565b5f818110610906576109066152f6565b9050602002810190610918919061530a565b6020013581811061092b5761092b6152f6565b610941926020604090920201908101915061487e565b90505f61095160808801886152b0565b5f818110610961576109616152f6565b9050602002810190610973919061530a565b61097d9080615328565b61098b90606081019061533c565b61099860808a018a6152b0565b5f8181106109a8576109a86152f6565b90506020028101906109ba919061530a565b604001358181106109cd576109cd6152f6565b6109e3926020604090920201908101915061487e565b905060605f6109f560808a018a6152b0565b6040805160206001939093018302810190915293508a01359150610a1b9050815f611ab3565b610a385760405163315f9e2360e21b815260040160405180910390fd5b5f5b610a4760808b018b6152b0565b905081108015610a5c5750610a5c825f611ab3565b15610db957610a6e60808b018b6152b0565b82818110610a7e57610a7e6152f6565b9050602002810190610a90919061530a565b610a9990615382565b9650865f01519550846001600160a01b03168660400151886020015181518110610ac557610ac56152f6565b60200260200101515f01516001600160a01b0316141580610b1c5750836001600160a01b03168660600151886040015181518110610b0557610b056152f6565b60200260200101515f01516001600160a01b031614155b15610b3a5760405163936bb5ad60e01b815260040160405180910390fd5b610b4d8688602001518960400151612027565b5f610b5787611880565b5f81815260208190526040902054909150610bbc578651604080513381526001600160a01b03909216602083015281018290527fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f39060600160405180910390a1610db0565b5f610bd6888a602001518b60400151338d60600151612099565b6060810151909150610bec9060408e0135611ab3565b15610c42578751604080513381526001600160a01b03909216602083015281018390527fe3151dc8cb7a54ffc4baabd28c1f241c94d510b5e5b502491ac3cad6c16316d5906060015b60405180910390a1610dae565b60408101516001600160e01b0316610c9c578751604080513381526001600160a01b03909216602083015281018390527f500b713857325f9e6dcb52ae832eca9109d107ed1aae9cb4928b4c1e13f051aa90606001610c35565b5f808d6060016020810190610cb19190615418565b15610cea576040830151610cc59087611ed1565b6060840151909250610cd79083612657565b9050610ce386836126a4565b9550610d3b565b5f610d068460400151856060015161265790919063ffffffff16565b9050610d128188611ed1565b9150610d2b8460600151836126d490919063ffffffff16565b9250610d3787836126a4565b9650505b610d458c82612704565b9b50610d518d83612704565b9c50610d5e818385612734565b7f194f1feb3b4d7076a2c272e774e792e0c48bb8c7aa1a9a3671c1cd6da9e6b4c1338c8484604051610d939493929190615540565b60405180910390a15050845160010180865260200285018190525b505b50600101610a3a565b505f9050610dcd60808a0160608b01615418565b610dd75786610dd9565b875b9050610de6818a356128fc565b15610e0e5760405163573b6f4160e01b81528935600482015260248101829052604401610318565b50610e1a338389611f64565b505f9050610e2b60a08a018a61562a565b90501115610e99573363691f9ed783858a8a610e4a60a08f018f61562a565b6040518763ffffffff1660e01b8152600401610e6b9695949392919061522e565b5f604051808303815f87803b158015610e82575f80fd5b505af1158015610e94573d5f803e3d5ffd5b505050505b610ea4338488611aed565b50505f5b8151811015610edb57610ed3828281518110610ec657610ec66152f6565b6020026020010151612936565b600101610ea8565b505050505050610ef760015f80516020615c0483398151915255565b915091565b5f610f05611865565b610f12602085018561533c565b90505f03610f3357604051636c44ef8f60e01b815260040160405180910390fd5b610f40604085018561533c565b90505f03610f615760405163540e5f0b60e01b815260040160405180910390fd5b6040805160a081019091523381525f9060208101610f7f878061566d565b610f8890615681565b8152602001868060200190610f9d919061533c565b808060200260200160405190810160405280939291908181526020015f905b82821015610fe857610fd96040830286013681900381019061568c565b81526020019060010190610fbc565b5050509183525050602001611000604088018861533c565b808060200260200160405190810160405280939291908181526020015f905b8282101561104b5761103c6040830286013681900381019061568c565b8152602001906001019061101f565b50505050508152602001866060013581525090505f61106982611880565b5f818152602081905260409020549091501580156111ab575f828152602081905260409081902060019055835190517f87491344dfbcf91f6cbbc610cbbeedc85313d37a02df0c93527f7ea5f8db717f916110c791859087906156a6565b60405180910390a15f6110dd60a089018961562a565b905011156111795761112e6110f560a089018961562a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b7992505050565b82517fd46c2c56b35c8210e9e712ec3f02242d5fc90187c0ac8ed80cc33626846ec369908361116060a08b018b61562a565b60405161117094939291906156cd565b60405180910390a15b6040805160028152602081018490523381830152606081019091526111ab906111a1906103bf565b6103e1878961516e565b925050506103fd60015f80516020615c0483398151915255565b5f8080806111df6111d68680615328565b61032e90614f5d565b5f8181526020819052604090205490915060011461120657505f925082915081905061127f565b61122b6112138680615328565b61121c90614f5d565b86602001358760400135612027565b5f6112686112398780615328565b61124290614f5d565b602088013560408901353361125a60608c018c6152b0565b611263916156ff565b612099565b905060018160400151826060015194509450945050505b9193909250565b604080515f8152602081019091526060908267ffffffffffffffff8111156112b0576112b0614a5b565b6040519080825280602002602001820160405280156112e357816020015b60608152602001906001900390816112ce5790505b5091505f5b838110156113645761133f30868684818110611306576113066152f6565b9050602002810190611318919061562a565b8560405160200161132b9392919061570b565b604051602081830303815290604052612ba4565b838281518110611351576113516152f6565b60209081029190910101526001016112e8565b505092915050565b611374611865565b604080515f808252602082019092526113ac916113a1565b606081526020019060019003908161138c5790505b506103e1838561516e565b6113c260015f80516020615c0483398151915255565b5050565b6113ce611865565b835185516001600160a01b039182169116036113fd57604051630a98f1f360e21b815260040160405180910390fd5b8360400151836040013581518110611417576114176152f6565b60200260200101515f01516001600160a01b03168560600151846020013581518110611445576114456152f6565b60200260200101515f01516001600160a01b03161415806114be5750604085015180518435908110611479576114796152f6565b60200260200101515f01516001600160a01b031684606001518460600135815181106114a7576114a76152f6565b60200260200101515f01516001600160a01b031614155b156114dc5760405163936bb5ad60e01b815260040160405180910390fd5b84606001518360200135815181106114f6576114f66152f6565b60200260200101515f01516001600160a01b03168560400151845f013581518110611523576115236152f6565b60200260200101515f01516001600160a01b03160361155557604051631cd2f1c760e21b815260040160405180910390fd5b5f805f61156188611880565b81526020019081526020015f2054036115d1577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333865f01516115a388611880565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a161184f565b5f805f6115dd87611880565b81526020019081526020015f20540361161f577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333855f01516115a387611880565b7f6fa7f4c28634b0a9d6831401c45ae468195fb63aed07308935c35374ff5d9e3933868686604051611654949392919061572e565b60405180910390a15f61167486855f01358660200135885f015186612099565b90505f61168f86866040013587606001358a5f015188612099565b90505f61169c8383612c44565b90506116b08160400151825f015185612734565b6116c38160600151826020015184612734565b606081015181515f916116d691906126a4565b90505f6116f4836040015184602001516126a490919063ffffffff16565b9050611700825f6128fc565b806117105750611710815f6128fc565b1561172e57604051630d86822160e01b815260040160405180910390fd5b611762338b606001518a602001358151811061174c5761174c6152f6565b60200260200101515f01518a6080013585611bc7565b5050611798338a606001518a6060013581518110611782576117826152f6565b60200260200101515f01518a60a0013584611bc7565b5050604080513381528451602080830191909152850151818301529084015160608083019190915284015160808201527fd9fa84dd790c969daa5c33d8050dc06b4a9b59d5b42e2be5f5e8ae20447f618d925060a001905060405180910390a161180183612936565b61180a82612936565b80516001600160e01b031615801561182d575060208101516001600160e01b0316155b1561184b576040516321badf1f60e01b815260040160405180910390fd5b5050505b61054360015f80516020615c0483398151915255565b61186d612c92565b60025f80516020615c0483398151915255565b5f8160405160200161189291906157aa565b604051602081830303815290604052805190602001209050919050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b8651811015611a7357868181518110611916576119166152f6565b602002602001015193505f845f015160400151511115611a6b575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f815260200161198e8d8a60200151612cc3565b8152602001878152602001868152506040518263ffffffff1660e01b81526004016119b99190615814565b5f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061590c565b9150505f81511115611a695784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490611a3b908a9085906004016159c2565b5f604051808303815f87803b158015611a52575f80fd5b505af1158015611a64573d5f803e3d5ffd5b505050505b505b6001016118fb565b5050505050505050565b80611aae576040516305dbdfd960e41b81526001600160a01b03808516600483015283166024820152604401610318565b505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d611ae184848484612fa5565b12979650505050505050565b5f805f80611afa86613079565b90925090506001826003811115611b1357611b136159da565b14158015611b3257505f826003811115611b2f57611b2f6159da565b14155b15611b5457858260405163ee07877f60e01b81526004016103189291906159ee565b611b5e855f6128fc565b15611b7c57604051632eaefac360e21b815260040160405180910390fd5b5f80611b888784613106565b9150915080611b9d57611b9a82615a27565b91505b8115611bb857611bb86001600160a01b0389168a3085611e95565b5093509150505b935093915050565b5f80611bd383826128fc565b15611bf45760405163793a8f5560e01b815260048101849052602401610318565b83611c1257611c04868685611f64565b505f9250829150611cae9050565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c8286612704565b9050611c58815f6128fc565b15611c795760405163c5e12af560e01b815260048101829052602401610318565b6001600160a01b038089165f908152600160209081526040808320938b16835292815282822089835290522081905590925090505b94509492505050565b5f8115611cf157506001600160a01b038084165f9081526001602090815260408083209386168352928152828220848352905220546103fd565b5f80611cfc85613133565b90925090506001826003811115611d1557611d156159da565b14158015611d3457505f826003811115611d3157611d316159da565b14155b15611d5657848260405163ee07877f60e01b81526004016103189291906159ee565b6040516370a0823160e01b81526001600160a01b0387811660048301525f91611dca918816906370a0823190602401602060405180830381865afa158015611da0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc49190615272565b83613192565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192505f91611e48919089169063dd62ed3e90604401602060405180830381865afa158015611e1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e429190615272565b846131b6565b509050611e558282611ed1565b9450505050506103fd565b611e6d83838360016131f6565b611aae57604051635274afe760e01b81526001600160a01b0384166004820152602401610318565b611ea3848484846001613258565b611ecb57604051635274afe760e01b81526001600160a01b0385166004820152602401610318565b50505050565b5f611edc83836128fc565b611ee657816103fd565b5090919050565b5f80611ef983826128fc565b15611f1a5760405163793a8f5560e01b815260048101849052602401610318565b83611f2a57611c04868685611aed565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c82866126a4565b5f805f80611f7186613079565b90925090506001826003811115611f8a57611f8a6159da565b14158015611fa957505f826003811115611fa657611fa66159da565b14155b15611fcb57858260405163ee07877f60e01b81526004016103189291906159ee565b611fd5855f6128fc565b15611ff357604051632d1671a360e11b815260040160405180910390fd5b5f611ffe8683613106565b509050801561201b5761201b6001600160a01b0388168983611e60565b97909650945050505050565b8260600151818151811061203d5761203d6152f6565b60200260200101515f01516001600160a01b031683604001518381518110612067576120676152f6565b60200260200101515f01516001600160a01b031603611aae57604051631cd2f1c760e21b815260040160405180910390fd5b6120a16145f6565b5f6120ab87611880565b60408051600480825260a082019092529192506060915f91816020015b60608152602001906001900390816120c85790505089516040805160038152602081018790526001600160a01b03928316818301529189166060830152608082019052909150816001800381518110612123576121236152f6565b60200260200101819052505f806121598b604001518b81518110612149576121496152f6565b60200260200101515f0151613133565b90925090506001826003811115612172576121726159da565b1415801561219157505f82600381111561218e5761218e6159da565b14155b156121d3578a604001518a815181106121ac576121ac6152f6565b60200260200101515f01518260405163ee07877f60e01b81526004016103189291906159ee565b5f6122238c5f01518d604001518d815181106121f1576121f16152f6565b60200260200101515f01518e604001518e81518110612212576122126152f6565b602002602001015160200151611cb7565b90506122b28c604001518c8151811061223e5761223e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e604001518e81518110612270576122706152f6565b602002602001015160200151845f801b60408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b846001600303815181106122c8576122c86152f6565b60200260200101819052505050505f806122f18b606001518a81518110612149576121496152f6565b9092509050600182600381111561230a5761230a6159da565b1415801561232957505f826003811115612326576123266159da565b14155b15612344578a6060015189815181106121ac576121ac6152f6565b5f6123838c5f01518d606001518c81518110612362576123626152f6565b60200260200101515f01518e606001518d81518110612212576122126152f6565b90506123d08c606001518b8151811061239e5761239e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e606001518d81518110612270576122706152f6565b846001600403815181106123e6576123e66152f6565b60200260200101819052505050506123fe8186612cc3565b9150505f885f01516001600160a01b031690505f808a602001515f01516001600160a01b031663d04dfe236040518060e001604052808e60200151602001516001600160a01b0316815260200161245e87305f9182526020526040902090565b81526020018e602001516040015181526020015f81526020018781526020015f67ffffffffffffffff81111561249657612496614a5b565b6040519080825280602002602001820160405280156124bf578160200160208202803683370190505b5081526020015f6040519080825280602002602001820160405280156124ef578160200160208202803683370190505b508152506040518263ffffffff1660e01b815260040161250f9190615814565b5f60405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612550919081019061590c565b9150915060028251101561257c578151604051630fbb8e5560e21b815260040161031891815260200190565b6020820151604083015160608d015180515f91908d9081106125a0576125a06152f6565b602002602001015190505f6125c08f5f0151835f01518460200151611cb7565b90506125cc8382611ed1565b6040805160028152602081018390528082018790526060810190915290935091506125f49050565b86600281518110612607576126076152f6565b60200260200101819052506040518060e001604052808e81526020018c81526020018281526020018381526020018781526020018681526020018481525097505050505050505095945050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866132c5565b915091505f61269683836133e4565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613431565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d84806126878686868661345b565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613998565b82816080015160038151811061274c5761274c6152f6565b6020026020010151600481518110612766576127666152f6565b60200260200101818152505081816080015160048151811061278a5761278a6152f6565b60200260200101516004815181106127a4576127a46152f6565b602002602001018181525050612833815f01515f015182608001516003815181106127d1576127d16152f6565b60200260200101515f815181106127ea576127ea6152f6565b60200260200101515f1c836080015160038151811061280b5761280b6152f6565b6020026020010151600281518110612825576128256152f6565b602002602001015186611bc7565b50506128b8815f01515f01518260800151600481518110612856576128566152f6565b60200260200101515f8151811061286f5761286f6152f6565b60200260200101515f1c8360800151600481518110612890576128906152f6565b60200260200101516002815181106128aa576128aa6152f6565b602002602001015185611eed565b50507f4cb6e22a3e7e651d7cf0376cff48f20f5007a54147777865be7f5f6c38c50f4a3382608001516040516128ef929190615a3f565b60405180910390a1505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d61292a84848484612fa5565b13979650505050505050565b60c081015151156129b0578051602090810151015160a082015160c083015160405163012c676d60e21b81526001600160a01b03909316926304b19db4926129829290916004016159c2565b5f604051808303815f87803b158015612999575f80fd5b505af11580156129ab573d5f803e3d5ffd5b505050505b5f815f0151602001515f01516001600160a01b031663d04dfe236040518060e00160405280855f015160200151602001516001600160a01b03168152602001612a068660a00151305f9182526020526040902090565b8152602001855f01516020015160400151815260200160018152602001856080015181526020015f67ffffffffffffffff811115612a4657612a46614a5b565b604051908082528060200260200182016040528015612a6f578160200160208202803683370190505b5081526020015f604051908082528060200260200182016040528015612a9f578160200160208202803683370190505b508152506040518263ffffffff1660e01b8152600401612abf9190615814565b5f60405180830381865afa158015612ad9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b00919081019061590c565b9150505f815111156113c2578151602090810151015160a083015160405163012c676d60e21b81526001600160a01b03909216916304b19db491612b489185906004016159c2565b5f604051808303815f87803b158015612b5f575f80fd5b505af1158015612b71573d5f803e3d5ffd5b505050505050565b612b8281613a96565b612ba15780604051630c89984b60e31b81526004016103189190615a60565b50565b60605f612bb18484613ac4565b9050808015612bd257505f3d1180612bd257505f846001600160a01b03163b115b15612be757612bdf613ad7565b9150506102b6565b8015612c1157604051639996b31560e01b81526001600160a01b0385166004820152602401610318565b3d15612c2457612c1f613af0565b612c3d565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604080516080810182525f808252602082018190529181018290526060810191909152612c718383613afb565b82526040820152612c828284613afb565b6020830152606082015292915050565b5f80516020615c0483398151915254600203612cc157604051633ee5aeb560e01b815260040160405180910390fd5b565b60605f825167ffffffffffffffff811115612ce057612ce0614a5b565b604051908082528060200260200182016040528015612d09578160200160208202803683370190505b5090505f80845111612d1b575f612d21565b83516001015b85516001010190505f8167ffffffffffffffff811115612d4357612d43614a5b565b604051908082528060200260200182016040528015612d7657816020015b6060815260200190600190039081612d615790505b5090505f612d9a604080516002815233602082015230818301526060810190915290565b828281518110612dac57612dac6152f6565b60200260200101819052505f5b8751811015612e09578180600101925050878181518110612ddc57612ddc6152f6565b6020026020010151838381518110612df657612df66152f6565b6020908102919091010152600101612db9565b50855115612f9b57808060010191505083828281518110612e2c57612e2c6152f6565b60200260200101819052505f5b8651811015612f9957612ee8878281518110612e5757612e576152f6565b60200260200101515f0151612ec5612e938a8581518110612e7a57612e7a6152f6565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b898481518110612ed757612ed76152f6565b602002602001015160400151613b64565b612f0857604051630a57f30960e31b815260048101829052602401610318565b868181518110612f1a57612f1a6152f6565b60200260200101515f01516001600160a01b03165f1b858281518110612f4257612f426152f6565b6020026020010181815250508180600101925050868181518110612f6857612f686152f6565b602002602001015160200151838381518110612f8657612f866152f6565b6020908102919091010152600101612e39565b505b5095945050505050565b5f8085158415178187128286121817858414178015612fca5786859250925050611cae565b505f85841315612fde575092949193919260015b8386035f8112604c8213178015613011578215613003575f8994509450505050611cae565b885f94509450505050611cae565b600a82900a8981028a82828161302957613029615a72565b0514613055578415613045575f8b965096505050505050611cae565b8a5f965096505050505050611cae565b841561306a578896509450611cae9350505050565b9550879450611cae9350505050565b5f80613083613bd4565b60405163b7bad1b160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb93899063b7bad1b19060240160408051808303815f875af11580156130d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fd9190615a86565b91509150915091565b5f806001600160e01b038416601b0b60e085901d613125828287613c5f565b9350935050505b9250929050565b5f8061313d613bd4565b604051630782d7e160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb938990630782d7e1906024016040805180830381865afa1580156130d9573d5f803e3d5ffd5b5f805f61319f8585613dc5565b915091506131ad8282613e0e565b95945050505050565b5f805f805f6131c58787613e47565b9250925092505f806131d78585613e8a565b91509150818380156131e65750815b9650965050505050509250929050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661324c578383151615613240573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166132b45783831516156132a8573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f80851584151780156132dd575f92505f91506133da565b6132e78487615ac6565b91505f6132f388613f62565b90505f6132ff87613f62565b90505f61330c8383613f90565b5090505f6f0785ee10d5da46d900f436a000000000821115613341576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561336257670de0b6b3a7640000820491506012015b633b9aca0082111561337b57633b9aca00820491506009015b61271082111561339057612710820491506004015b81156133a457600a82049150600101613390565b6133ae8187615ac6565b95506133d08b8a6133ca87876133c587600a615bc5565b613fac565b89614078565b9097509550505050505b5094509492505050565b5f805f6133f18585613e8a565b9150915080158015613401575081155b1561342957604051638eba4d0760e01b81526004810186905260248101859052604401610318565b509392505050565b5f8061343d8484614118565b909450925061344e86868686613998565b9150915094509492505050565b5f80835f0361348757604051637a97930f60e01b81526004810187905260248101869052604401610318565b855f0361349857505f905080611cae565b5f805f806134a68a8a61416d565b919b50995091506134b7888861416d565b919950975090505f6134c88b613f62565b90505f6134d48a613f62565b90507f161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000604c8183101561389957841561352b57507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b613871565b6f4b3b4ca85a86c47a098a22400000000083101561365757678ac7230489e800008310156135bb576402540be40083101561358957620186a08310156135795750620186a090506005613832565b506402540be4009050600a613832565b655af3107a40008310156135a85750655af3107a40009050600e613832565b50678ac7230489e8000090506013613832565b6b204fce5e3e2502611000000083101561360d5769152d02c7e14af68000008310156135f6575069152d02c7e14af680000090506017613832565b506b204fce5e3e250261100000009050601c613832565b6d314dc6448d9338c15b0a0000000083101561363c57506d314dc6448d9338c15b0a0000000090506021613832565b506f4b3b4ca85a86c47a098a22400000000090506026613832565b780197d4df19d605767337e9f14d3eec8920e40000000000000083101561374f5773af298d050e4395d69670b12b7f410000000000008310156136ea577172cb5bd86321e38cb6ce6682e800000000008310156136cb57507172cb5bd86321e38cb6ce6682e800000000009050602b613832565b5073af298d050e4395d69670b12b7f4100000000000090506030613832565b76010b46c6cdd6e3e0828f4db456ff0c8ea000000000000083101561372b575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035613832565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a613832565b7c03b58e88c75313ec9d329eaaa18fb92f75215b171000000000000000008310156137e5577a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000008310156137bd57507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f613832565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044613832565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca00000000000000000083101561383257507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b81831161384757600a820491505f1901613832565b815f03613871576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610318565b85613899576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610318565b80600160ff1b018d126138b057808d039c506138ee565b600160ff1b9c90038c015f8113156138ee57806001600160ff1b03038b136138db57998a01996138ee565b5f80995099505050505050505050611cae565b5f808e1280156138fd57505f8c135b1561391e57600160ff1b8e01808d13613916575f61391a565b808d035b9150505b8b818f0103975061393b8f8e613935888789613fac565b8b614078565b90995097505f81131561398557604c811315613965575f809a509a50505050505050505050611cae565b80600a0a898161397757613977615a72565b059850885f03613985575f97505b50969850949650611cae95505050505050565b5f80851584151780156139c457865f036139b85784849250925050611cae565b86869250925050611cae565b6139ce87876143c7565b90975095506139dd85856143c7565b9095509350858413156139f1579395929492935b838603604c811115613a0a578787935093505050611cae565b80600a0a8681613a1c57613a1c615a72565b0595505086850180881860ff90811c151589881890911c15168015613a8557876001600160ff1b0303613a6c5760405163d556b11160e01b8152600481018a905260248101899052604401610318565b600a968790059690980586019760019790970196613a89565b8198505b5096979596505050505050565b5f600882511015613aa857505f919050565b506008015167ffffffffffffffff1667ff0a89c674ee78741490565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80613b188460600151856040015161265790919063ffffffff16565b915083604001519050613b38836040015183611ab390919063ffffffff16565b1561312c5782604001519150613b5b8460600151836126d490919063ffffffff16565b90509250929050565b5f836001600160a01b03163b5f03613bc2575f80613b828585614404565b5090925090505f816003811115613b9b57613b9b6159da565b148015613bb95750856001600160a01b0316826001600160a01b0316145b925050506103fd565b613bcd84848461444a565b90506103fd565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580613c2b575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15612cc1576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610318565b5f805f851215613c8c57604051634a7d166b60e01b81526004810186905260248101859052604401610318565b845f03613c9e57505f90506001611bbf565b8460ff8416850185811215613cd05760405163d556b11160e01b81526004810188905260248101879052604401610318565b5f805f831215613d1c57604c19831215613cf3575f809550955050505050611bbf565b825f03600a0a9150818481613d0a57613d0a615a72565b0495505084029091149150611bbf9050565b5f831315613db557604d831315613d595760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b82600a0a9150815f1981613d6f57613d6f615a72565b04841115613da35760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b5091909102925060019150611bbf9050565b8360019550955050505050611bbf565b5f805f805f613dd48787613e47565b92509250925080613e0257604051636238bcb360e11b81526004810184905260248101839052604401610318565b50909590945092505050565b5f805f613e1b8585613e8a565b9150915080613429576040516322c9f7bb60e01b81526004810186905260248101859052604401610318565b5f808060ff841681036001600160ff1b03861115613e7957600a860460018201600a88065f1493509350935050613e83565b8593509150600190505b9250925092565b5f601b83900b8314838382613eee577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515613ece57620186a0860595506005850194505b8586601b0b14613ee957600a86059550846001019450613ece565b613f04565b855f03613f0457505f92506001915061312c9050565b848560030b14613f47575f851215613f2457505f925082915061312c9050565b60405163d556b11160e01b81526004810183905260248101829052604401610318565b50506001600160e01b03841660e084901b1791509250929050565b5f80821215613f8757600160ff1b8203613f815750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f613fb98686613f90565b91509150815f03613fdd57838181613fd357613fd3615a72565b04925050506103fd565b83821061400e5760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610318565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f85871812156140f4576001600160ff1b038411156140e1576140a56001600160ff1b03600161529d565b84036140b95750600160ff1b905081611cae565b6140c4600a85615bd0565b6140cd90615bef565b6140d8846001615ac6565b91509150611cae565b6140ea84615bef565b8391509150611cae565b6001600160ff1b0384111561410e576140cd600a85615bd0565b5082905081611cae565b5f80600160ff1b8403614163576001600160ff1b0383036141565760405163d556b11160e01b81526004810185905260248101849052604401610318565b600a840593508260010192505b50505f9190910391565b5f805f845f0361418557505f91508190506001613e83565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03614372576f4b3b4ca85a86c47a098a22400000000085051580156141e757507f80000000000000000000000000000000000000000000000000000000000000268412155b15614208576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561425057507f80000000000000000000000000000000000000000000000000000000000000138412155b1561426957678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156142b557507f800000000000000000000000000000000000000000000000000000000000000a8412155b156142cb576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561431a57507f80000000000000000000000000000000000000000000000000000000000000028412155b15614330576064850294506002840393506142cb565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561436057506001600160ff1b018412155b1561437257600a850294506001840393505b600a8086029081058614801561438f57506001600160ff1b018512155b1561439e578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b5f805f805f6143d6878761416d565b92509250925080613e02576040516305e51ecb60e01b81526004810188905260248101879052604401610318565b5f805f835160410361443b576020840151604085015160608601515f1a61442d8882858561449b565b955095509550505050613e83565b505081515f9150600290613e83565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156144d457505f91506003905082614559565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614525573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661455057505f925060019150829050614559565b92505f91508190505b9450945094915050565b604051806080016040528061457661458f565b81526020015f81526020015f8152602001606081525090565b6040518060a001604052805f6001600160a01b031681526020016145dd60405180606001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b8152606060208201819052604082018190525f91015290565b6040518060e0016040528061460961458f565b81526020015f81526020015f80191681526020015f8019168152602001606081526020015f8152602001606081525090565b5f6020828403121561464b575f80fd5b81356001600160e01b0319811681146103fd575f80fd5b5f8083601f840112614672575f80fd5b50813567ffffffffffffffff811115614689575f80fd5b6020830191508360208260051b850101111561312c575f80fd5b5f805f604084860312156146b5575f80fd5b833567ffffffffffffffff808211156146cc575f80fd5b9085019060a082880312156146df575f80fd5b909350602085013590808211156146f4575f80fd5b5061470186828701614662565b9497909650939450505050565b5f6020828403121561471e575f80fd5b5035919050565b6001600160a01b0381168114612ba1575f80fd5b8035613f8b81614725565b5f805f805f60808688031215614758575f80fd5b853561476381614725565b94506020860135935060408601359250606086013567ffffffffffffffff81111561478c575f80fd5b61479888828901614662565b969995985093965092949392505050565b5f805f606084860312156147bb575f80fd5b83356147c681614725565b925060208401356147d681614725565b929592945050506040919091013590565b5f805f805f608086880312156147fb575f80fd5b853561480681614725565b9450602086013561481681614725565b935060408601359250606086013567ffffffffffffffff80821115614839575f80fd5b818801915088601f83011261484c575f80fd5b81358181111561485a575f80fd5b89602082850101111561486b575f80fd5b9699959850939650602001949392505050565b5f6020828403121561488e575f80fd5b81356103fd81614725565b5f60c082840312156148a9575f80fd5b50919050565b5f602082840312156148bf575f80fd5b813567ffffffffffffffff8111156148d5575f80fd5b61055684828501614899565b5f805f604084860312156148f3575f80fd5b833567ffffffffffffffff8082111561490a575f80fd5b61491687838801614899565b945060208601359150808211156146f4575f80fd5b5f6020828403121561493b575f80fd5b813567ffffffffffffffff811115614951575f80fd5b8201608081850312156103fd575f80fd5b5f8060208385031215614973575f80fd5b823567ffffffffffffffff811115614989575f80fd5b61499585828601614662565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015614a2457603f19888603018452614a128583516149a1565b945092850192908501906001016149f6565b5092979650505050505050565b5f8060408385031215614a42575f80fd5b8235614a4d81614725565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405290565b6040805190810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405160a0810167ffffffffffffffff81118282101715614a9257614a92614a5b565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0757614b07614a5b565b604052919050565b5f82601f830112614b1e575f80fd5b813567ffffffffffffffff811115614b3857614b38614a5b565b614b4b601f8201601f1916602001614ade565b818152846020838601011115614b5f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215614b8b575f80fd5b614b93614a6f565b90508135614ba081614725565b81526020820135614bb081614725565b6020820152604082013567ffffffffffffffff811115614bce575f80fd5b614bda84828501614b0f565b60408301525092915050565b5f67ffffffffffffffff821115614bff57614bff614a5b565b5060051b60200190565b5f60408284031215614c19575f80fd5b614c21614a98565b90508135614c2e81614725565b808252506020820135602082015292915050565b5f82601f830112614c51575f80fd5b81356020614c66614c6183614be6565b614ade565b8083825260208201915060208460061b870101935086841115614c87575f80fd5b602086015b84811015614cac57614c9e8882614c09565b835291830191604001614c8c565b509695505050505050565b5f60a08284031215614cc7575f80fd5b614ccf614abb565b9050614cda82614739565b8152602082013567ffffffffffffffff80821115614cf6575f80fd5b614d0285838601614b7b565b60208401526040840135915080821115614d1a575f80fd5b614d2685838601614c42565b60408401526060840135915080821115614d3e575f80fd5b50614d4b84828501614c42565b6060830152506080820135608082015292915050565b5f614d6e614c6184614be6565b8381529050602080820190600585811b850187811115614d8c575f80fd5b855b81811015614e7957803567ffffffffffffffff80821115614dad575f80fd5b908801906060828c031215614dc0575f80fd5b614dc8614a6f565b8235614dd381614725565b81528287013582811115614de5575f80fd5b8301601f81018d13614df5575f80fd5b8035614e03614c6182614be6565b81815290881b8201890190898101908f831115614e1e575f80fd5b928a01925b82841015614e3c5783358252928a0192908a0190614e23565b848b01525060409150508381013583811115614e56575f80fd5b614e628e828701614b0f565b918301919091525087525050938301938301614d8e565b50505050509392505050565b5f82601f830112614e94575f80fd5b6103fd83833560208501614d61565b5f805f805f6101408688031215614eb8575f80fd5b853567ffffffffffffffff80821115614ecf575f80fd5b614edb89838a01614cb7565b96506020880135915080821115614ef0575f80fd5b614efc89838a01614cb7565b9550614f0b8960408a01614899565b9450610100880135915080821115614f21575f80fd5b614f2d89838a01614e85565b9350610120880135915080821115614f43575f80fd5b50614f5088828901614e85565b9150509295509295909350565b5f6102b63683614cb7565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135614f9c81614725565b6001600160a01b039081168452602083013590614fb882614725565b166020840152604082013536839003601e19018112614fd5575f80fd5b820160208101903567ffffffffffffffff811115614ff1575f80fd5b803603821315614fff575f80fd5b606060408601526131ad606086018284614f68565b5f808335601e19843603018112615029575f80fd5b830160208101925035905067ffffffffffffffff811115615048575f80fd5b8060061b360382131561312c575f80fd5b8183525f60208085019450825f5b8581101561509f57813561507a81614725565b6001600160a01b03168752818301358388015260409687019690910190600101615067565b509495945050505050565b5f6001600160a01b0380861683528460208401526060604084015283356150d081614725565b166060830152602083013536849003605e190181126150ed575f80fd5b60a060808401526151046101008401858301614f90565b90506151136040850185615014565b605f19808685030160a087015261512b848385615059565b935061513a6060880188615014565b93509150808685030160c087015250615154838383615059565b92505050608084013560e084015280915050949350505050565b5f61517b614c6184614be6565b80848252602080830192508560051b850136811115615198575f80fd5b855b8181101561522257803567ffffffffffffffff808211156151b9575f80fd5b8189019150604082360312156151cd575f80fd5b6151d5614a98565b8235828111156151e3575f80fd5b6151ef36828601614b7b565b8252508583013582811115615202575f80fd5b61520e36828601614e85565b82880152508752505093820193820161519a565b50919695505050505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015260a0608083015261526660a083018486614f68565b98975050505050505050565b5f60208284031215615282575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102b6576102b6615289565b5f808335601e198436030181126152c5575f80fd5b83018035915067ffffffffffffffff8211156152df575f80fd5b6020019150600581901b360382131561312c575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e1983360301811261531e575f80fd5b9190910192915050565b5f8235609e1983360301811261531e575f80fd5b5f808335601e19843603018112615351575f80fd5b83018035915067ffffffffffffffff82111561536b575f80fd5b6020019150600681901b360382131561312c575f80fd5b5f60808236031215615392575f80fd5b6040516080810167ffffffffffffffff82821081831117156153b6576153b6614a5b565b8160405284359150808211156153ca575f80fd5b6153d636838701614cb7565b8352602085013560208401526040850135604084015260608501359150808211156153ff575f80fd5b5061540c36828601614e85565b60608301525092915050565b5f60208284031215615428575f80fd5b813580151581146103fd575f80fd5b5f815180845260208085019450602084015f5b8381101561509f57815180516001600160a01b03168852830151838801526040909601959082019060010161544a565b5f6001600160a01b03808351168452602083015160a060208601528181511660a08601528160208201511660c08601526040810151915050606060e08501526154c76101008501826149a1565b9050604083015184820360408601526154e08282615437565b915050606083015184820360608601526154fa8282615437565b915050608083015160808501528091505092915050565b5f815180845260208085019450602084015f5b8381101561509f57815187529582019590820190600101615524565b5f6001600160a01b0380871683526020608081850152865160808086015261556c61010086018261547a565b90508188015160a086015260408089015160c08701526060808a0151607f198885030160e08901528381518086528686019150868160051b87010187840193505f5b8281101561560857601f1988830301845284518a815116835289810151878b8501526155dc88850182615511565b91890151848303858b01529190506155f481836149a1565b968b0196958b0195935050506001016155ae565b5080995050505050505050505083604083015282606083015295945050505050565b5f808335601e1984360301811261563f575f80fd5b83018035915067ffffffffffffffff821115615659575f80fd5b60200191503681900382131561312c575f80fd5b5f8235605e1983360301811261531e575f80fd5b5f6102b63683614b7b565b5f6040828403121561569c575f80fd5b6103fd8383614c09565b6001600160a01b0384168152826020820152606060408201525f6131ad606083018461547a565b6001600160a01b0385168152836020820152606060408201525f6156f5606083018486614f68565b9695505050505050565b5f6103fd368484614d61565b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f6101206001600160a01b03871683528060208401526157508184018761547a565b90508281036040840152615764818661547a565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b602081525f6103fd602083018461547a565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561580757601f198684030189526157f5838351615511565b988401989250908301906001016157d9565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261584d6101008401826149a1565b9050606084015160808401526080840151601f19808584030160a086015261587583836157bc565b925060a08601519150808584030160c08601526158928383615511565b925060c08601519150808584030160e0860152506131ad8282615511565b5f82601f8301126158bf575f80fd5b815160206158cf614c6183614be6565b8083825260208201915060208460051b8701019350868411156158f0575f80fd5b602086015b84811015614cac57805183529183019183016158f5565b5f806040838503121561591d575f80fd5b825167ffffffffffffffff80821115615934575f80fd5b818501915085601f830112615947575f80fd5b81516020615957614c6183614be6565b82815260059290921b84018101918181019089841115615975575f80fd5b948201945b838610156159935785518252948201949082019061597a565b918801519196509093505050808211156159ab575f80fd5b506159b8858286016158b0565b9150509250929050565b828152604060208201525f6105566040830184615511565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160048310615a1a57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60018201615a3857615a38615289565b5060010190565b6001600160a01b0383168152604060208201525f61055660408301846157bc565b602081525f6103fd60208301846149a1565b634e487b7160e01b5f52601260045260245ffd5b5f8060408385031215615a97575f80fd5b825160048110615aa5575f80fd5b602084015190925060ff81168114615abb575f80fd5b809150509250929050565b8082018281125f83128015821682158216171561136457611364615289565b600181815b80851115615b1f57815f1904821115615b0557615b05615289565b80851615615b1257918102915b93841c9390800290615aea565b509250929050565b5f82615b35575060016102b6565b81615b4157505f6102b6565b8160018114615b575760028114615b6157615b7d565b60019150506102b6565b60ff841115615b7257615b72615289565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715615ba0575081810a6102b6565b615baa8383615ae5565b805f1904821115615bbd57615bbd615289565b029392505050565b5f6103fd8383615b27565b5f82615bea57634e487b7160e01b5f52601260045260245ffd5b500490565b5f600160ff1b8201613f8157613f8161528956fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00","sourceMap":"7948:40830:377:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1528:207:372;;;;;;:::i;:::-;;:::i;:::-;;;470:14:543;;463:22;445:41;;433:2;418:18;1528:207:372;;;;;;;;15877:721:377;;;;;;:::i;:::-;;:::i;10805:134::-;;;;;;:::i;:::-;10877:4;10900:18;;;;;;;;;;;4724:1;10900:32;;10805:134;11136:1307;;;;;;:::i;:::-;;:::i;:::-;;9434:169;;;;;;:::i;:::-;;:::i;:::-;;;3555:25:543;;;3543:2;3528:18;9434:169:377;3382:204:543;1781:1572:372;;;;;;:::i;:::-;;:::i;12480:1456:377:-;;;;;;:::i;:::-;;:::i;3685:140:372:-;;;;;;:::i;:::-;;:::i;17937:7866:377:-;;;;;;:::i;:::-;;:::i;:::-;;;;5781:25:543;;;5837:2;5822:18;;5815:34;;;;5754:18;17937:7866:377;5553:302:543;13973:1867:377;;;;;;:::i;:::-;;:::i;17005:707::-;;;;;;:::i;:::-;;:::i;:::-;;;;7285:14:543;;7278:22;7260:41;;7332:2;7317:18;;7310:34;;;;7360:18;;;7353:34;7248:2;7233:18;17005:707:377;7010:383:543;1224:482:17;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10976:123:377:-;;;;;;:::i;:::-;;:::i;3399:110:372:-;;;;;;:::i;:::-;3467:7;3399:110;;;;;25840:4078:377;;;;;;:::i;:::-;;:::i;1528:207:372:-;1613:4;-1:-1:-1;;;;;;1636:52:372;;-1:-1:-1;;;1636:52:372;;:92;;-1:-1:-1;;;;;;;;;;829:40:25;;;1692:36:372;1629:99;1528:207;-1:-1:-1;;1528:207:372:o;15877:721:377:-;16002:17;3023:21:19;:19;:21::i;:::-;16053:11:377::1;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;-1:-1:-1::0;;;;;16039:25:377::1;:10;-1:-1:-1::0;;;;;16039:25:377::1;;16035:89;;16101:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;16087:26;::::0;-1:-1:-1;;;16087:26:377;;-1:-1:-1;;;;;18041:55:543;;;16087:26:377::1;::::0;::::1;18023:74:543::0;17996:18;;16087:26:377::1;;;;;;;;16035:89;16133:17;16153:12;:10;:5:::0;:10:::1;:::i;:::-;;:12::i;:::-;16179:7;:18:::0;;;::::1;::::0;;;;;;;16133:32;;-1:-1:-1;;;16179:32:377;16175:417:::1;;4928:1;16260:18:::0;;;::::1;::::0;;;;;;;:31;;;;16310:43;16242:4:::1;::::0;-1:-1:-1;16310:43:377::1;::::0;::::1;::::0;16324:10:::1;::::0;16268:9;;16347:5;;16310:43:::1;:::i;:::-;;;;;;;;3152:4:114::0;3146:11;;3184:1;3170:16;;3217:4;3206:16;;3199:27;;;16513:10:377::1;3246:16:114::0;;;3239:27;3064:22;3292:16;;3279:30;;;16368:213:377::1;::::0;16403:142:::1;::::0;16452:75:::1;2770:4:115::0;2764:11;;2803:1;2788:17;;2837:4;2825:17;;2818:28;;;;2872:17;;;2859:31;;2764:11;2615:291;16403:142:377::1;16368:213;16563:4:::0;;16368:213:::1;:::i;:::-;:17;:213::i;:::-;16025:573;3065:20:19::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;15877:721:377;;;;;:::o;11136:1307::-;3023:21:19;:19;:21::i;:::-;11292:10:377::1;11304:5;11311:7;48715:43;48731:10;48743:5;48750:7;48715:15;:43::i;:::-;11339:31:::2;:13:::0;11367:1:::2;11339:16;:31::i;:::-;11334:115;;11393:45;::::0;-1:-1:-1;;;11393:45:377;;11411:10:::2;11393:45;::::0;::::2;23981:34:543::0;-1:-1:-1;;;;;24051:15:543;;24031:18;;;24024:43;24083:18;;;24076:34;;;23893:18;;11393:45:377::2;23718:398:543::0;11334:115:377::2;11460:28;11490:14:::0;11508:44:::2;11519:10;11531:5;11538:13;11508:10;:44::i;:::-;11760:59;::::0;;11770:10:::2;24413:34:543::0;;-1:-1:-1;;;;;24483:15:543;;24478:2;24463:18;;24456:43;24515:18;;;24508:34;;;24573:2;24558:18;;24551:34;;;11459:93:377;;-1:-1:-1;11459:93:377;-1:-1:-1;11760:59:377::2;::::0;24339:3:543;24324:19;11760:59:377::2;;;;;;;11831:19;11852:18:::0;11874:63:::2;11895:10;11907:5;11914:7;11923:13;11874:20;:63::i;:::-;11830:107:::0;;-1:-1:-1;11830:107:377;-1:-1:-1;11952:16:377;;11948:489:::2;;5849:4:114::0;5843:11;;5881:1;5867:16;;-1:-1:-1;;;;;12127:23:377;::::2;5914:4:114::0;5903:16;;5896:27;5943:16;;;5936:27;;;5757:22;5983:16;;5976:27;;;6034:4;6023:16;;6016:27;;;12332:17:377::2;::::0;::::2;6074:4:114::0;6063:16;;6056:27;6120:4;6109:16;;6096:30;;;11984:442:377::2;::::0;12019:371:::2;::::0;12068:304:::2;5636:506:114::0;12019:371:377::2;11984:442;12408:4:::0;;11984:442:::2;:::i;:::-;11324:1119;;;;3054:1:19::1;;;3065:20:::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;11136:1307:377;;;;;:::o;9434:169::-;9536:5;9560:36;9574:5;9581;9588:7;9560:13;:36::i;:::-;9553:43;9434:169;-1:-1:-1;;;;9434:169:377:o;1781:1572:372:-;1935:4;1955:53;-1:-1:-1;;;;;1955:26:372;;1990:8;2001:6;1955:26;:53::i;:::-;2036:64;;-1:-1:-1;;;2036:64:372;;2019:14;;-1:-1:-1;;;;;2036:20:372;;;;;:64;;2057:10;;2069:5;;2076:6;;2019:14;;2095:4;;;;2036:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2019:81;;453:45:135;2114:6:372;:40;2110:111;;2177:33;;-1:-1:-1;;;2177:33:372;;;;;3555:25:543;;;3528:18;;2177:33:372;3382:204:543;2110:111:372;3240:84;3279:8;3298:4;3305:18;1138:1;3305:6;:18;:::i;:::-;-1:-1:-1;;;;;3240:30:372;;;:84;;:30;:84::i;:::-;-1:-1:-1;3342:4:372;;1781:1572;-1:-1:-1;;;;;;1781:1572:372:o;12480:1456:377:-;3023:21:19;:19;:21::i;:::-;12636:10:377::1;12648:5;12655:7;48715:43;48731:10;48743:5;48750:7;48715:15;:43::i;:::-;12678:20:::2;::::0;;;12808:30:::2;:12:::0;12678:20;12808:15:::2;:30::i;:::-;12803:129;;12865:52;::::0;-1:-1:-1;;;12865:52:377;;12890:10:::2;12865:52;::::0;::::2;23981:34:543::0;-1:-1:-1;;;;;24051:15:543;;24031:18;;;24024:43;24083:18;;;24076:34;;;23893:18;;12865:52:377::2;23718:398:543::0;12803:129:377::2;12945:25;12973:41;12987:10;12999:5;13006:7;12973:13;:41::i;:::-;12945:69:::0;-1:-1:-1;13045:37:377::2;:12:::0;12945:69;13045:16:::2;:37::i;:::-;13028:54;;13128:64;13149:10;13161:5;13168:7;13177:14;13128:20;:64::i;:::-;13096:96:::0;;-1:-1:-1;13096:96:377;-1:-1:-1;13207:29:377::2;13286:45;13297:10;13309:5:::0;13316:14;13286:10:::2;:45::i;:::-;13250:81;;;;;;;;13350:91;13361:10;13373:5;13380:7;13389:12;13403:14;13419:21;13350:91;;;;;;;;;;-1:-1:-1::0;;;;;26264:15:543;;;26246:34;;26316:15;;;;26311:2;26296:18;;26289:43;26363:2;26348:18;;26341:34;;;;26406:2;26391:18;;26384:34;26449:3;26434:19;;26427:35;26493:3;26478:19;;26471:35;;;;26172:3;26157:19;;25844:668;13350:91:377::2;;;;;;;;-1:-1:-1::0;;7001:4:114;6995:11;;7033:1;7019:16;;-1:-1:-1;;;;;13542:23:377;::::2;7066:4:114::0;7055:16;;7048:27;7095:16;;;7088:27;;;6909:22;7135:16;;7128:27;;;7186:4;7175:16;;7168:27;;;7226:4;7215:16;;7208:27;;;13730:17:377::2;::::0;::::2;7266:4:114::0;7255:16;;7248:27;2803:1:115;7312:4:114;7301:16;;2788:17:115;;;2825;;;2818:28;;;2872:17;;;2859:31;;;6995:11:114;13855:16:377;;13851:79:::2;;13887:32;13905:7:::0;13887:32:::2;13914:4:::0;;13887:32:::2;:::i;:::-;12668:1268;;;;;;3054:1:19::1;;;3065:20:::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3685:140:372;3780:38;;-1:-1:-1;;;3780:38:372;;3812:4;3780:38;;;18023:74:543;3754:7:372;;-1:-1:-1;;;;;3780:23:372;;;;;17996:18:543;;3780:38:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17937:7866:377:-;18049:21;18072:22;3023:21:19;:19;:21::i;:::-;18114:13:377::1;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;:20;;18138:1;18114:25:::0;18110:73:::1;;18162:10;;-1:-1:-1::0;;;18162:10:377::1;;;;;;;;;;;18110:73;18193:40;;:::i;:::-;18243:20;;:::i;:::-;18273:23;18299:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;18313:1;18299:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:22;::::0;;::::1;:::i;:::-;:34;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;18334:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;18348:1;18334:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:29;;;18299:65;;;;;;;:::i;:::-;:71;::::0;::::1;:65;::::0;;::::1;;:71:::0;;::::1;::::0;-1:-1:-1;18299:71:377::1;:::i;:::-;18273:97:::0;-1:-1:-1;18380:24:377::1;18407:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;18421:1;18407:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:22;::::0;;::::1;:::i;:::-;:35;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;18443:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;18457:1;18443:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:30;;;18407:67;;;;;;;:::i;:::-;:73;::::0;::::1;:67;::::0;;::::1;;:73:::0;;::::1;::::0;-1:-1:-1;18407:73:377::1;:::i;:::-;18380:100:::0;-1:-1:-1;18908:57:377::1;18989:14;19006:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;19100:4;19094:11:::0;;19215:4:::1;19211:1;19199:14:::0;;;::::1;19195:25:::0;::::1;19186:35:::0;::::1;19173:49:::0;;;19094:11;-1:-1:-1;19295:16:377;::::1;;::::0;-1:-1:-1;19330:34:377::1;::::0;-1:-1:-1;19295:16:377;-1:-1:-1;19330:19:377::1;:34::i;:::-;19325:96;;19391:15;;-1:-1:-1::0;;;19391:15:377::1;;;;;;;;;;;19325:96;19435:9;19462:4856;19473:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;:20;;19469:1;:24;:62;;;;-1:-1:-1::0;19497:34:377::1;:16:::0;19528:1:::1;19497:19;:34::i;:::-;19462:4856;;;19569:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;19583:1;19569:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;19551:34;;;:::i;:::-;;;19611:15;:21;;;19603:29;;19852:15;-1:-1:-1::0;;;;;19795:72:377::1;:5;:17;;;19813:15;:28;;;19795:47;;;;;;;;:::i;:::-;;;;;;;:53;;;-1:-1:-1::0;;;;;19795:72:377::1;;;19794:179;;;;19956:16;-1:-1:-1::0;;;;;19897:75:377::1;:5;:18;;;19916:15;:29;;;19897:49;;;;;;;;:::i;:::-;;;;;;;:55;;;-1:-1:-1::0;;;;;19897:75:377::1;;;19794:179;19769:286;;;20021:15;;-1:-1:-1::0;;;20021:15:377::1;;;;;;;;;;;19769:286;20073:87;20093:5;20100:15;:28;;;20130:15;:29;;;20073:19;:87::i;:::-;20179:17;20199:12;:5;:10;:12::i;:::-;4928:1;20233:18:::0;;;::::1;::::0;;;;;;;20179:32;;-1:-1:-1;20229:4003:377::1;;20320:11:::0;;20294:49:::1;::::0;;20308:10:::1;23981:34:543::0;;-1:-1:-1;;;;;24051:15:543;;;24046:2;24031:18;;24024:43;24083:18;;24076:34;;;20294:49:377::1;::::0;23908:2:543;23893:18;20294:49:377::1;;;;;;;20229:4003;;;20390:46;20439:269;20481:5;20512:15;:28;;;20566:15;:29;;;20621:10;20657:15;:29;;;20439:16;:269::i;:::-;21078:26;::::0;::::1;::::0;20390:318;;-1:-1:-1;21078:52:377::1;::::0;21108:21:::1;::::0;::::1;;21078:29;:52::i;:::-;21074:3140;;;21196:11:::0;;21163:56:::1;::::0;;21184:10:::1;23981:34:543::0;;-1:-1:-1;;;;;24051:15:543;;;24046:2;24031:18;;24024:43;24083:18;;24076:34;;;21163:56:377::1;::::0;23908:2:543;23893:18;21163:56:377::1;;;;;;;;21074:3140;;;21252:28;::::0;::::1;::::0;-1:-1:-1;;;;;42905:12:91;21248:2966:377::1;;21350:11:::0;;21322:51:::1;::::0;;21338:10:::1;23981:34:543::0;;-1:-1:-1;;;;;24051:15:543;;;24046:2;24031:18;;24024:43;24083:18;;24076:34;;;21322:51:377::1;::::0;23908:2:543;23893:18;21322:51:377::1;23718:398:543::0;21248:2966:377::1;21428:16;21470:17:::0;21517:6:::1;:16;;;;;;;;;;:::i;:::-;21513:1547;;;21732:28;::::0;::::1;::::0;:50:::1;::::0;21765:16;21732:32:::1;:50::i;:::-;22354:26;::::0;::::1;::::0;21719:63;;-1:-1:-1;22354:42:377::1;::::0;21719:63;22354:30:::1;:42::i;:::-;22340:56:::0;-1:-1:-1;22446:32:377::1;:16:::0;22467:10;22446:20:::1;:32::i;:::-;22427:51;;21513:1547;;;22626:19;22648:60;22679:18;:28;;;22648:18;:26;;;:30;;:60;;;;:::i;:::-;22626:82:::0;-1:-1:-1;22752:35:377::1;22626:82:::0;22770:16;22752:17:::1;:35::i;:::-;22738:49;;22907:43;22923:18;:26;;;22907:11;:15;;:43;;;;:::i;:::-;22894:56:::0;-1:-1:-1;23000:33:377::1;:16:::0;23021:11;23000:20:::1;:33::i;:::-;22981:52;;22511:549;21513:1547;23105:33;:16:::0;23126:11;23105:20:::1;:33::i;:::-;23086:52:::0;-1:-1:-1;23182:31:377::1;:15:::0;23202:10;23182:19:::1;:31::i;:::-;23164:49;;23240:58;23254:11;23267:10;23279:18;23240:13;:58::i;:::-;23329:65;23341:10;23353:15;23370:10;23382:11;23329:65;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;23864:34:377;;23900:1:::1;23860:42;23931:46:::0;;;24139:4:::1;24124:20;24091:54:::0;::::1;24084:82:::0;;;21248:2966:::1;20368:3864;20229:4003;-1:-1:-1::0;24282:3:377::1;;19462:4856;;;-1:-1:-1::0;24352:27:377::1;::::0;-1:-1:-1;24382:16:377::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:53;;24419:16;24382:53;;;24401:15;24382:53;24352:83:::0;-1:-1:-1;24453:42:377::1;24352:83:::0;24478:16;::::1;24453:24;:42::i;:::-;24449:138;;;24522:50;::::0;-1:-1:-1;;;24522:50:377;;24532:16;::::1;24522:50;::::0;::::1;5781:25:543::0;5822:18;;;5815:34;;;5754:18;;24522:50:377::1;5553:302:543::0;24449:138:377::1;24338:259;25280:57;25291:10;25303:16;25321:15;25280:10;:57::i;:::-;-1:-1:-1::0;25373:1:377::1;::::0;-1:-1:-1;25352:11:377::1;;::::0;::::1;:6:::0;:11:::1;:::i;:::-;:18;;:22;25348:199;;;25411:10;25390:63;25454:16:::0;25472:15;25489;25506:16;25524:11:::1;;::::0;::::1;:6:::0;:11:::1;:::i;:::-;25390:146;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25348:199;25557:57;25568:10;25580:15;25597:16;25557:10;:57::i;:::-;;;25654:9;25649:138;25673:27;:34;25669:1;:38;25649:138;;;25732:40;25741:27;25769:1;25741:30;;;;;;;;:::i;:::-;;;;;;;25732:8;:40::i;:::-;25709:3;;25649:138;;;;18100:7703;;;;;3065:20:19::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;17937:7866:377;;;:::o;13973:1867::-;14107:4;3023:21:19;:19;:21::i;:::-;14131:23:377::1;;::::0;::::1;:11:::0;:23:::1;:::i;:::-;:30;;14165:1;14131:35:::0;14127:88:::1;;14189:15;;-1:-1:-1::0;;;14189:15:377::1;;;;;;;;;;;14127:88;14228:24;;::::0;::::1;:11:::0;:24:::1;:::i;:::-;:31;;14263:1;14228:36:::0;14224:90:::1;;14287:16;;-1:-1:-1::0;;;14287:16:377::1;;;;;;;;;;;14224:90;14524:134;::::0;;::::1;::::0;::::1;::::0;;;14545:10:::1;14524:134:::0;;14501:20:::1;::::0;14524:134:::1;::::0;::::1;14557:21;:11:::0;;:21:::1;:::i;:::-;14524:134;;;:::i;:::-;;;;;14580:11;:23;;;;;;;;:::i;:::-;14524:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;-1:-1:-1::0;;;14524:134:377;;;-1:-1:-1;;14524:134:377::1;;14605:24;;::::0;::::1;:11:::0;:24:::1;:::i;:::-;14524:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14631:11;:17;;;14524:134;;::::0;14501:157:::1;;14668:17;14688:12;:5;:10;:12::i;:::-;14711:16;14730:18:::0;;;::::1;::::0;;;;;;;14668:32;;-1:-1:-1;14730:32:377;14848:957;::::1;;;15125:7;:18:::0;;;::::1;::::0;;;;;;;;4724:1:::1;15125:31:::0;;15186:11;;15175:41;;::::1;::::0;::::1;::::0;15133:9;;15186:5;;15175:41:::1;:::i;:::-;;;;;;;;15413:1;15387:16;;::::0;::::1;:11:::0;:16:::1;:::i;:::-;:23;;:27;15383:184;;;15434:45;15462:16;;::::0;::::1;:11:::0;:16:::1;:::i;:::-;15434:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;15434:27:377::1;::::0;-1:-1:-1;;;15434:45:377:i:1;:::-;15511:11:::0;;15502:50:::1;::::0;15524:9;15535:16:::1;;::::0;::::1;:11:::0;:16:::1;:::i;:::-;15502:50;;;;;;;;;:::i;:::-;;;;;;;;15383:184;3152:4:114::0;3146:11;;3184:1;3170:16;;3217:4;3206:16;;3199:27;;;15726:10:377::1;3246:16:114::0;;;3239:27;3064:22;3292:16;;3279:30;;;15581:213:377::1;::::0;15616:142:::1;::::0;15665:75:::1;3000:325:114::0;15616:142:377::1;15581:213;15776:4:::0;;15581:213:::1;:::i;:::-;15822:11:::0;-1:-1:-1;;;3065:20:19;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;17005:707:377;17074:4;;;;17124:24;:17;:11;;:17;:::i;:::-;:22;;;:::i;:24::-;17163:7;:18;;;;;;;;;;;17104:44;;-1:-1:-1;4724:1:377;17163:32;17159:107;;-1:-1:-1;17219:5:377;;-1:-1:-1;17219:5:377;;-1:-1:-1;17219:5:377;;-1:-1:-1;17211:44:377;;17159:107;17276:91;17296:17;:11;;:17;:::i;:::-;17276:91;;;:::i;:::-;17315:11;:24;;;17341:11;:25;;;17276:19;:91::i;:::-;17378:46;17427:197;17457:17;:11;;:17;:::i;:::-;17427:197;;;:::i;:::-;17488:24;;;;17526:25;;;;17565:10;17589:25;;;;17488:11;17589:25;:::i;:::-;17427:197;;;:::i;:::-;:16;:197::i;:::-;17378:246;;17642:4;17648:18;:28;;;17678:18;:26;;;17634:71;;;;;;;;17005:707;;;;;;:::o;1224:482:17:-;1388:12;;;1324:20;1388:12;;;;;;;;1290:22;;1499:4;1487:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:34;;1526:9;1521:155;1541:15;;;1521:155;;;1590:75;1627:4;1647;;1652:1;1647:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1656;1634:30;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1590:28;:75::i;:::-;1577:7;1585:1;1577:10;;;;;;;;:::i;:::-;;;;;;;;;;:88;1558:3;;1521:155;;;;1685:14;1224:482;;;;:::o;10976:123:377:-;3023:21:19;:19;:21::i;:::-;11067:18:377::1;::::0;;11083:1:::1;11067:18:::0;;;::::1;::::0;::::1;::::0;;;11049:43:::1;::::0;11067:18:::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;11049:43:377::1;11087:4:::0;;11049:43:::1;:::i;:::-;3065:20:19::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;10976:123:377;;:::o;25840:4078::-;3023:21:19;:19;:21::i;:::-;26148:14:377;;26128:16;;-1:-1:-1;;;;;26128:34:377;;::::1;::::0;::::1;::::0;26124:91:::1;;26189:11;;-1:-1:-1::0;;;26189:11:377::1;;;;;;;;;;;26124:91;26343:8;:20;;;26364:11;:27;;;26343:49;;;;;;;;:::i;:::-;;;;;;;:55;;;-1:-1:-1::0;;;;;26250:148:377::1;:10;:23;;;26274:11;:30;;;26250:55;;;;;;;;:::i;:::-;;;;;;;:61;;;-1:-1:-1::0;;;;;26250:148:377::1;;;26249:324;;;-1:-1:-1::0;26513:22:377::1;::::0;::::1;::::0;:53;;26536:29;::::1;::::0;26513:53;::::1;;;;;:::i;:::-;;;;;;;:59;;;-1:-1:-1::0;;;;;26424:148:377::1;:8;:21;;;26446:11;:28;;;26424:51;;;;;;;;:::i;:::-;;;;;;;:57;;;-1:-1:-1::0;;;;;26424:148:377::1;;;26249:324;26228:415;;;26613:15;;-1:-1:-1::0;;;26613:15:377::1;;;;;;;;;;;26228:415;26761:10;:23;;;26785:11;:30;;;26761:55;;;;;;;;:::i;:::-;;;;;;;:61;;;-1:-1:-1::0;;;;;26678:144:377::1;:10;:22;;;26701:11;:29;;;26678:53;;;;;;;;:::i;:::-;;;;;;;:59;;;-1:-1:-1::0;;;;;26678:144:377::1;::::0;26657:236:::1;;26862:16;;-1:-1:-1::0;;;26862:16:377::1;;;;;;;;;;;26657:236;4928:1;27118:7:::0;:26:::1;27126:17;:10;:15;:17::i;:::-;27118:26;;;;;;;;;;;;:40:::0;27114:170:::1;;27183:62;27197:10;27209;:16;;;27227:17;:10;:15;:17::i;:::-;27183:62;::::0;;-1:-1:-1;;;;;23999:15:543;;;23981:34;;24051:15;;;;24046:2;24031:18;;24024:43;24083:18;;;24076:34;23908:2;23893:18;27183:62:377::1;;;;;;;27263:7;;27114:170;4928:1;27301:7:::0;:24:::1;27309:15;:8;:13;:15::i;:::-;27301:24;;;;;;;;;;;;:38:::0;27297:164:::1;;27364:58;27378:10;27390:8;:14;;;27406:15;:8;:13;:15::i;27297:164::-;27532:54;27540:10;27552;27564:8;27574:11;27532:54;;;;;;;;;:::i;:::-;;;;;;;;27606:51;27660:147;27690:10;27702:11;:29;;;27733:11;:30;;;27765:8;:14;;;27781:16;27660;:147::i;:::-;27606:201;;27817:49;27869:145;27899:8;27909:11;:27;;;27938:11;:28;;;27968:10;:16;;;27986:18;27869:16;:145::i;:::-;27817:197;;28025:42;28082:73;28108:23;28133:21;28082:25;:73::i;:::-;28025:130;;28166:97;28180:16;:27;;;28209:16;:28;;;28239:23;28166:13;:97::i;:::-;28273:91;28287:16;:25;;;28314:16;:26;;;28342:21;28273:13;:91::i;:::-;28442:25;::::0;::::1;::::0;28409:28;;28389:17:::1;::::0;28409:59:::1;::::0;:28;:32:::1;:59::i;:::-;28389:79;;28482:15;28500:59;28531:16;:27;;;28500:16;:26;;;:30;;:59;;;;:::i;:::-;28482:77:::0;-1:-1:-1;28766:29:377::1;:11:::0;28792:1:::1;28766:14;:29::i;:::-;:60;;;-1:-1:-1::0;28799:27:377::1;:9:::0;28823:1:::1;28799:12;:27::i;:::-;28762:122;;;28853:16;;-1:-1:-1::0;;;28853:16:377::1;;;;;;;;;;;28762:122;28898:218;28936:10;28964;:23;;;28988:11;:30;;;28964:55;;;;;;;;:::i;:::-;;;;;;;:61;;;29043:11;:30;;;29091:11;28898:20;:218::i;:::-;;;29130:210;29168:10;29196:8;:21;;;29218:11;:28;;;29196:51;;;;;;;;:::i;:::-;;;;;;;:57;;;29271:11;:28;;;29317:9;29130:20;:210::i;:::-;-1:-1:-1::0;;29366:42:377::1;::::0;;29379:10:::1;39957:74:543::0;;40067:13;;40062:2;40047:18;;;40040:41;;;;40123:15;;40117:22;40097:18;;;40090:50;40182:15;;;40176:22;40171:2;40156:18;;;40149:50;;;;40242:15;;40236:22;40230:3;40215:19;;40208:51;29366:42:377::1;::::0;-1:-1:-1;39944:3:543;39929:19;;-1:-1:-1;29366:42:377::1;;;;;;;29419:33;29428:23;29419:8;:33::i;:::-;29462:31;29471:21;29462:8;:31::i;:::-;29785:28:::0;;-1:-1:-1;;;;;42905:12:91;42898:20;29785:76:377::1;;;;-1:-1:-1::0;29826:26:377::1;::::0;::::1;::::0;-1:-1:-1;;;;;42905:12:91;42898:20;29826:35:377::1;29781:131;;;29884:17;;-1:-1:-1::0;;;29884:17:377::1;;;;;;;;;;;29781:131;26100:3818;;;3054:1:19;3065:20:::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;;3872:25;:23;:25::i;:::-;2407:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292::o;661:120:386:-;720:7;767:5;756:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;746:28;;;;;;739:35;;661:120;;;:::o;5461:1388:387:-;5609:10;5546:24;1478:25:79;;;5726:4:387;1523::79;1516:20;;;1584:4;1571:18;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5802:18:387;;;;;;;;5867:16;;;;;;;;;1571:18:79;;-1:-1:-1;;5802:18:387;;5893:950;5917:4;:11;5913:1;:15;5893:950;;;5956:4;5961:1;5956:7;;;;;;;;:::i;:::-;;;;;;;5949:14;;6014:1;5981:4;:14;;;:23;;;:30;:34;5977:856;;;6096:23;6123:4;:14;;;:26;;;-1:-1:-1;;;;;6123:53:387;;6202:470;;;;;;;;6246:4;:14;;;:20;;;-1:-1:-1;;;;;6202:470:387;;;;;6307:18;6202:470;;;;6365:4;:14;;;:23;;;6202:470;;;;6450:1;6202:470;;;;6491:45;6508:7;6517:4;:18;;;6491:16;:45::i;:::-;6202:470;;;;6574:10;6202:470;;;;6628:17;6202:470;;;6123:571;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6123:571:387;;;;;;;;;;;;:::i;:::-;6093:601;;;6732:1;6716:6;:13;:17;6712:107;;;6757:14;;:20;;;:43;;-1:-1:-1;;;6757:43:387;;-1:-1:-1;;;;;6757:24:387;;;;;;:43;;6782:9;;6793:6;;6757:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6712:107;6017:816;5977:856;5930:3;;5893:950;;;;5536:1313;;;;;5461:1388;;:::o;48427:196:377:-;48532:7;48528:89;;48576:30;;-1:-1:-1;;;48576:30:377;;-1:-1:-1;;;;;44836:15:543;;;48576:30:377;;;44818:34:543;44888:15;;44868:18;;;44861:43;44730:18;;48576:30:377;44583:327:543;48528:89:377;48427:196;;;:::o;30119:429:91:-;30172:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;30379:106;21018:32;21075:16;21018:32;21075:16;30379:44;:106::i;:::-;-1:-1:-1;;30119:429:91;-1:-1:-1;;;;;;;30119:429:91:o;46478:966:377:-;46562:7;46571:5;46589:23;46614:14;46632:44;46670:5;46632:37;:44::i;:::-;46588:88;;-1:-1:-1;46588:88:377;-1:-1:-1;46705:22:377;46690:11;:37;;;;;;;;:::i;:::-;;;:75;;;;-1:-1:-1;46746:19:377;46731:11;:34;;;;;;;;:::i;:::-;;;46690:75;46686:176;;;46832:5;46839:11;46788:63;;-1:-1:-1;;;46788:63:377;;;;;;;;;:::i;46686:176::-;46875:24;:6;46896:1;46875:9;:24::i;:::-;46871:76;;;46922:14;;-1:-1:-1;;;46922:14:377;;;;;;;;;;;46871:76;46958:16;46976:13;46993:53;47029:6;47037:8;46993:35;:53::i;:::-;46957:89;;;;47106:8;47101:184;;47264:10;;;:::i;:::-;;;47101:184;47298:12;;47294:107;;47326:64;-1:-1:-1;;;;;47326:30:377;;47357:7;47374:4;47381:8;47326:30;:64::i;:::-;-1:-1:-1;47418:8:377;-1:-1:-1;47428:8:377;-1:-1:-1;;46478:966:377;;;;;;;:::o;36774:1279::-;36899:5;;36931:24;:6;36899:5;36931:9;:24::i;:::-;36927:96;;;36978:34;;-1:-1:-1;;;36978:34:377;;;;;3555:25:543;;;3528:18;;36978:34:377;3382:204:543;36927:96:377;37234:7;37230:817;;37271:32;37282:5;37289;37296:6;37271:10;:32::i;:::-;-1:-1:-1;37478:1:377;;-1:-1:-1;37478:1:377;;-1:-1:-1;37459:37:377;;-1:-1:-1;37459:37:377;37230:817;-1:-1:-1;;;;;37546:21:377;;;37527:16;37546:21;;;:14;:21;;;;;;;;:28;;;;;;;;;;;:37;;;;;;;;;;37616:22;37546:37;37631:6;37616:14;:22::i;:::-;37597:41;-1:-1:-1;37825:28:377;37597:41;37850:1;37825:13;:28::i;:::-;37821:106;;;37880:32;;-1:-1:-1;;;37880:32:377;;;;;3555:25:543;;;3528:18;;37880:32:377;3382:204:543;37821:106:377;-1:-1:-1;;;;;37940:21:377;;;;;;;:14;:21;;;;;;;;:28;;;;;;;;;;;:37;;;;;;:50;;;38013:10;;-1:-1:-1;37980:10:377;-1:-1:-1;37230:817:377;36774:1279;;;;;;;:::o;9812:956::-;9905:5;9926:21;;9922:840;;-1:-1:-1;;;;;;9970:21:377;;;;;;;:14;:21;;;;;;;;:28;;;;;;;;;;;:37;;;;;;;9963:44;;9922:840;10039:23;10064:14;10082:52;10128:5;10082:45;:52::i;:::-;10038:96;;-1:-1:-1;10038:96:377;-1:-1:-1;10167:22:377;10152:11;:37;;;;;;;;:::i;:::-;;;:75;;;;-1:-1:-1;10208:19:377;10193:11;:34;;;;;;;;:::i;:::-;;;10152:75;10148:184;;;10298:5;10305:11;10254:63;;-1:-1:-1;;;10254:63:377;;;;;;;;;:::i;10148:184::-;10434:30;;-1:-1:-1;;;10434:30:377;;-1:-1:-1;;;;;18041:55:543;;;10434:30:377;;;18023:74:543;10345:23:377;;10387:88;;10434:23;;;;;17996:18:543;;10434:30:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10466:8;10387:46;:88::i;:::-;10633:45;;-1:-1:-1;;;10633:45:377;;-1:-1:-1;;;;;44836:15:543;;;10633:45:377;;;44818:34:543;10672:4:377;44868:18:543;;;44861:43;10345:130:377;;-1:-1:-1;10544:24:377;;10589:100;;10633:23;;;;;;44730:18:543;;10633:45:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10680:8;10589:43;:100::i;:::-;-1:-1:-1;10543:146:377;-1:-1:-1;10710:41:377;:17;10543:146;10710:21;:41::i;:::-;10703:48;;;;;;;;1219:204:10;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1366:40;;-1:-1:-1;;;1366:40:10;;-1:-1:-1;;;;;18041:55:543;;1366:40:10;;;18023:74:543;17996:18;;1366:40:10;17877:226:543;1662:232:10;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:10;;-1:-1:-1;;;;;18041:55:543;;1837:40:10;;;18023:74:543;17996:18;;1837:40:10;17877:226:543;1762:126:10;1662:232;;;;:::o;41961:101:91:-;42015:5;42039:8;42042:1;42045;42039:2;:8::i;:::-;:16;;42054:1;42039:16;;;-1:-1:-1;42050:1:91;;42032:23;-1:-1:-1;41961:101:91:o;38215:1333:377:-;38340:5;;38372:24;:6;38340:5;38372:9;:24::i;:::-;38368:96;;;38419:34;;-1:-1:-1;;;38419:34:377;;;;;3555:25:543;;;3528:18;;38419:34:377;3382:204:543;38368:96:377;38656:7;38652:890;;38693:32;38704:5;38711;38718:6;38693:10;:32::i;38652:890::-;-1:-1:-1;;;;;38970:21:377;;;38951:16;38970:21;;;:14;:21;;;;;;;;:28;;;;;;;;;;;:37;;;;;;;;;;39040:22;38970:37;39055:6;39040:14;:22::i;47605:754::-;47694:7;47703:5;47721:23;47746:14;47764:44;47802:5;47764:37;:44::i;:::-;47720:88;;-1:-1:-1;47720:88:377;-1:-1:-1;47837:22:377;47822:11;:37;;;;;;;;:::i;:::-;;;:75;;;;-1:-1:-1;47878:19:377;47863:11;:34;;;;;;;;:::i;:::-;;;47822:75;47818:176;;;47964:5;47971:11;47920:63;;-1:-1:-1;;;47920:63:377;;;;;;;;;:::i;47818:176::-;48008:29;:11;48034:1;48008:14;:29::i;:::-;48004:81;;;48060:14;;-1:-1:-1;;;48060:14:377;;;;;;;;;;;48004:81;48146:14;48165:58;48201:11;48214:8;48165:35;:58::i;:::-;-1:-1:-1;48145:78:377;-1:-1:-1;48237:10:377;;48233:84;;48263:43;-1:-1:-1;;;;;48263:26:377;;48290:7;48299:6;48263:26;:43::i;:::-;48335:6;48343:8;;-1:-1:-1;47605:754:377;-1:-1:-1;;;;;47605:754:377:o;16708:260::-;16873:5;:18;;;16892:13;16873:33;;;;;;;;:::i;:::-;;;;;;;:39;;;-1:-1:-1;;;;;16832:80:377;:5;:17;;;16850:12;16832:31;;;;;;;;:::i;:::-;;;;;;;:37;;;-1:-1:-1;;;;;16832:80:377;;16828:134;;16935:16;;-1:-1:-1;;;16935:16:377;;;;;;;;;;;30597:6016;30821:27;;:::i;:::-;30884:17;30904:12;:5;:10;:12::i;:::-;31025:40;;;1159:1:387;31025:40:377;;;;;;;;;30884:32;;-1:-1:-1;30931:26:377;;30989:33;;31025:40;;;;;;;;;;;;;;;;;;;-1:-1:-1;31218:11:377;;3924:4:114;3918:11;;3956:1;3942:16;;3989:4;3978:16;;3971:27;;;-1:-1:-1;;;;;31202:29:377;;;4018:16:114;;;4011:27;31242:30:377;;;3836:22:114;4058:16;;4051:27;4115:4;4104:16;;4091:30;;30989:76:377;;-1:-1:-1;31083:14:377;31131:1;1806::387;31098:34:377;31083:50;;;;;;;;:::i;:::-;;;;;;:208;;;;31333:24;31359:19;31406:84;31452:5;:17;;;31470:12;31452:31;;;;;;;;:::i;:::-;;;;;;;:37;;;31406:45;:84::i;:::-;31332:158;;-1:-1:-1;31332:158:377;-1:-1:-1;31532:22:377;31516:12;:38;;;;;;;;:::i;:::-;;;:77;;;;-1:-1:-1;31574:19:377;31558:12;:35;;;;;;;;:::i;:::-;;;31516:77;31512:289;;;31701:5;:17;;;31719:12;31701:31;;;;;;;;:::i;:::-;;;;;;;:37;;;31740:12;31628:150;;-1:-1:-1;;;31628:150:377;;;;;;;;;:::i;31512:289::-;31823:28;31854:152;31893:5;:11;;;31906:5;:17;;;31924:12;31906:31;;;;;;;;:::i;:::-;;;;;;;:37;;;31945:5;:17;;;31963:12;31945:31;;;;;;;;:::i;:::-;;;;;;;:39;;;31854:13;:152::i;:::-;31823:183;;32078:408;32153:5;:17;;;32171:12;32153:31;;;;;;;;:::i;:::-;;;;;;;:37;;;-1:-1:-1;;;;;32137:55:377;32129:64;;32235:13;32227:22;;32219:31;;32276:5;:17;;;32294:12;32276:31;;;;;;;;:::i;:::-;;;;;;;:39;;;32354:22;32463:1;32078:408;;5849:4:114;5843:11;;5881:1;5867:16;;5914:4;5903:16;;5896:27;;;;5943:16;;;5936:27;;;;5757:22;5983:16;;5976:27;;;;6034:4;6023:16;;6016:27;6074:4;6063:16;;6056:27;6120:4;6109:16;;6096:30;;5843:11;5636:506;32078:408:377;32028:14;32073:1;3605::387;32043:31:377;32028:47;;;;;;;;:::i;:::-;;;;;;:458;;;;31310:1195;;;32546:25;32573:20;32621:86;32667:5;:18;;;32686:13;32667:33;;;;;;;;:::i;32621:86::-;32545:162;;-1:-1:-1;32545:162:377;-1:-1:-1;32750:22:377;32733:13;:39;;;;;;;;:::i;:::-;;;:79;;;;-1:-1:-1;32793:19:377;32776:13;:36;;;;;;;;:::i;:::-;;;32733:79;32729:294;;;32920:5;:18;;;32939:13;32920:33;;;;;;;;:::i;32729:294::-;33045:29;33077:156;33116:5;:11;;;33129:5;:18;;;33148:13;33129:33;;;;;;;;:::i;:::-;;;;;;;:39;;;33170:5;:18;;;33189:13;33170:33;;;;;;;;:::i;33077:156::-;33045:188;;33306:414;33381:5;:18;;;33400:13;33381:33;;;;;;;;:::i;:::-;;;;;;;:39;;;-1:-1:-1;;;;;33365:57:377;33357:66;;33465:14;33457:23;;33449:32;;33507:5;:18;;;33526:13;33507:33;;;;;;;;:::i;33306:414::-;33255:14;33301:1;3772::387;33270:32:377;33255:48;;;;;;;;:::i;:::-;;;;;;:465;;;;32523:1216;;;33767:47;33784:14;33800:13;33767:16;:47::i;:::-;33757:57;;30971:2858;34005:24;34068:5;:11;;;-1:-1:-1;;;;;34052:29:377;34005:77;;34424:38;34464:34;34502:5;:15;;;:27;;;-1:-1:-1;;;;;34502:50:377;;34574:451;;;;;;;;34614:5;:15;;;:21;;;-1:-1:-1;;;;;34574:451:377;;;;;34672:55;34702:9;34721:4;1381:42:79;1478:25;;;1523:4;1516:20;1584:4;1571:18;;;1261:344;34672:55:377;34574:451;;;;34763:5;:15;;;:24;;;34574:451;;;;5072:1;34574:451;;;;34887:7;34574:451;;;;34944:1;34928:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34928:18:377;-1:-1:-1;34574:451:377;;;;35000:1;34986:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34986:16:377;;34574:451;;;34502:541;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34502:541:377;;;;;;;;;;;;:::i;:::-;34423:620;;;;5385:1;35209:19;:26;:56;35205:157;;;35320:19;:26;35292:55;;-1:-1:-1;;;35292:55:377;;;;;;3555:25:543;;3543:2;3528:18;;3382:204;35205:157:377;35532:4;35507:30;;35501:37;35604:4;35579:30;;35573:37;35813:18;;;;:33;;35376:18;;35813;35832:13;;35813:33;;;;;;:::i;:::-;;;;;;;35792:54;;35864:23;35890:56;35904:5;:11;;;35917:6;:12;;;35931:6;:14;;;35890:13;:56::i;:::-;35864:82;-1:-1:-1;35981:37:377;:14;35864:82;35981:18;:37::i;:::-;3152:4:114;3146:11;;3184:1;3170:16;;3217:4;3206:16;;3199:27;;;3246:16;;;3239:27;;;3064:22;3292:16;;3279:30;;;35964:54:377;;-1:-1:-1;3146:11:114;-1:-1:-1;36185:83:377;;-1:-1:-1;3000:325:114;36185:83:377;36130:7;3101:1:387;36130:36:377;;;;;;;;:::i;:::-;;;;;;:138;;;;36290:306;;;;;;;;36336:5;36290:306;;;;36374:13;36290:306;;;;36416:14;36290:306;;;;36457:12;36290:306;;;;36496:7;36290:306;;;;36532:9;36290:306;;;;36564:17;36290:306;;;36283:313;;;;;;;;;30597:6016;;;;;;;:::o;26050:535:91:-;26104:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;26104:5;;26315:95;21018:32;21075:16;21018:32;21075:16;26315:33;:95::i;:::-;26257:153;;;;26501:7;26511:49;26532:17;26551:8;26511:20;:49::i;:::-;26501:59;26050:535;-1:-1:-1;;;;;;;;;;26050:535:91:o;22427:496::-;22481:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;22481:5;;22694:95;21018:32;21075:16;21018:32;21075:16;22694:33;:95::i;27084:573::-;27138:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;27138:5;;27349:95;21018:32;21075:16;21018:32;21075:16;27349:33;:95::i;21591:489::-;21645:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;21645:5;;21856:95;21018:32;21075:16;21018:32;21075:16;21856:33;:95::i;40212:1325:377:-;40431:5;40329:18;:26;;;3605:1:387;40329:55:377;;;;;;;;:::i;:::-;;;;;;;4590:1:387;40329:86:377;;;;;;;;:::i;:::-;;;;;;:108;;;;;40550:6;40447:18;:26;;;3772:1:387;40447:56:377;;;;;;;;:::i;:::-;;;;;;;4590:1:387;40447:87:377;;;;;;;;:::i;:::-;;;;;;:110;;;;;40568:309;40602:18;:24;;;:30;;;40670:18;:26;;;3605:1:387;40670:55:377;;;;;;;;:::i;:::-;;;;;;;3890:1:387;40670:79:377;;;;;;;;:::i;:::-;;;;;;;40662:88;;40766:18;:26;;;3605:1:387;40766:55:377;;;;;;;;:::i;:::-;;;;;;;4132:1:387;40766:82:377;;;;;;;;:::i;:::-;;;;;;;40862:5;40568:20;:309::i;:::-;;;41002:312;41036:18;:24;;;:30;;;41104:18;:26;;;3772:1:387;41104:56:377;;;;;;;;:::i;:::-;;;;;;;3890:1:387;41104:80:377;;;;;;;;:::i;:::-;;;;;;;41096:89;;41201:18;:26;;;3772:1:387;41201:56:377;;;;;;;;:::i;:::-;;;;;;;4132:1:387;41201:83:377;;;;;;;;:::i;:::-;;;;;;;41298:6;41002:20;:312::i;:::-;;;41481:49;41491:10;41503:18;:26;;;41481:49;;;;;;;:::i;:::-;;;;;;;;40212:1325;;;:::o;29343:430:91:-;29396:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;29603:106;21018:32;21075:16;21018:32;21075:16;29603:44;:106::i;:::-;-1:-1:-1;;29343:430:91;-1:-1:-1;;;;;;;29343:430:91:o;41667:2431:377:-;41972:22;;;;:29;:33;41968:489;;42348:24;;:34;;;;;:40;;42393:28;;;;42423:22;;;;42348:98;;-1:-1:-1;;;42348:98:377;;-1:-1:-1;;;;;42348:44:377;;;;;;:98;;42393:28;;42348:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41968:489;42899:28;42931:18;:24;;;:34;;;:46;;;-1:-1:-1;;;;;42931:65:377;;43014:489;;;;;;;;43050:18;:24;;;:34;;;:40;;;-1:-1:-1;;;;;43014:489:377;;;;;43123:74;43153:18;:28;;;43191:4;1381:42:79;1478:25;;;1523:4;1516:20;1584:4;1571:18;;;1261:344;43123:74:377;43014:489;;;;43229:18;:24;;;:34;;;:43;;;43014:489;;;;5262:1;43014:489;;;;43358:18;:26;;;43014:489;;;;43430:1;43414:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43414:18:377;-1:-1:-1;43014:489:377;;;;43482:1;43468:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43468:16:377;;43014:489;;;42931:586;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;42931:586:377;;;;;;;;;;;;:::i;:::-;42896:621;;;43650:1;43629:11;:18;:22;43625:467;;;43994:24;;:34;;;;;:40;;44039:28;;;;43994:87;;-1:-1:-1;;;43994:87:377;;-1:-1:-1;;;;;43994:44:377;;;;;;:87;;44069:11;;43994:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41742:2356;41667:2431;:::o;1297:154:102:-;1374:18;1387:4;1374:12;:18::i;:::-;1369:76;;1429:4;1415:19;;-1:-1:-1;;;1415:19:102;;;;;;;;:::i;1369:76::-;1297:154;:::o;4691:549:12:-;4774:12;4798;4813:47;4847:6;4855:4;4813:33;:47::i;:::-;4798:62;;4874:7;:72;;;;-1:-1:-1;4918:1:12;4625:16:16;4886:33:12;:59;;;;4944:1;4923:6;-1:-1:-1;;;;;4923:18:12;;:22;4886:59;4870:364;;;4969:25;:23;:25::i;:::-;4962:32;;;;;4870:364;5015:7;5011:223;;;5045:24;;-1:-1:-1;;;5045:24:12;;-1:-1:-1;;;;;18041:55:543;;5045:24:12;;;18023:74:543;17996:18;;5045:24:12;17877:226:543;5011:223:12;4625:16:16;5090:33:12;5086:148;;5139:27;:25;:27::i;:::-;5086:148;;;5204:19;;-1:-1:-1;;;5204:19:12;;;;;;;;;;;5086:148;4788:452;4691:549;;;;:::o;44642:656:377:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45009:72:377;45034:23;45059:21;45009:24;:72::i;:::-;44935:146;;44936:27;;;44935:146;45219:72;45244:21;45267:23;45219:24;:72::i;:::-;45177:26;;;45149:142;45150:25;;;45149:142;45150:16;44642:656;-1:-1:-1;;44642:656:377:o;3586:157:19:-;-1:-1:-1;;;;;;;;;;;4560:52:19;2407:1;4560:63;3644:93;;3696:30;;-1:-1:-1;;;3696:30:19;;;;;;;;;;;3644:93;3586:157::o;8713:2372:77:-;8848:18;8906:24;8947:14;:21;8933:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8933:36:77;;8906:63;;9118:21;9192:1;9168:14;:21;:25;:57;;9224:1;9168:57;;;9196:14;:21;9220:1;9196:25;9168:57;9146:11;:18;9142:1;:22;:84;9118:108;;9241:26;9286:13;9270:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9241:59;;9314:14;9364:17;3323:4;3317:11;;3359:1;3341:20;;3403:8;3396:4;3381:20;;3374:38;3454:9;3432:20;;;3425:39;3227:26;3490:20;;3477:34;;;3317:11;3188:339;9364:17;9346:7;9354:6;9346:15;;;;;;;;:::i;:::-;;;;;;:35;;;;9401:9;9396:140;9420:11;:18;9416:1;:22;9396:140;;;9463:8;;;;;;;9507:11;9519:1;9507:14;;;;;;;;:::i;:::-;;;;;;;9489:7;9497:6;9489:15;;;;;;;;:::i;:::-;;;;;;;;;;:32;9440:3;;9396:140;;;-1:-1:-1;9554:21:77;;:25;9550:1490;;9599:8;;;;;;;9643:7;9625;9633:6;9625:15;;;;;;;;:::i;:::-;;;;;;:25;;;;9674:9;9669:1357;9693:14;:21;9689:1;:25;9669:1357;;;10371:357;10437:14;10452:1;10437:17;;;;;;;;:::i;:::-;;;;;;;:24;;;10491:154;10564:51;10589:14;10604:1;10589:17;;;;;;;;:::i;:::-;;;;;;;:25;;;4322:12:82;;4336:4;4318:23;;;4300:16;;4290:52;;4153:205;10564:51:77;1445:34:23;1367:14;1432:48;;;1541:4;1534:25;;;;1639:4;1623:21;;;1291:433;10491:154:77;10675:14;10690:1;10675:17;;;;;;;;:::i;:::-;;;;;;;:27;;;10371:36;:357::i;:::-;9743:1083;;10784:19;;-1:-1:-1;;;10784:19:77;;;;;3555:25:543;;;3528:18;;10784:19:77;3382:204:543;9743:1083:77;10885:14;10900:1;10885:17;;;;;;;;:::i;:::-;;;;;;;:24;;;-1:-1:-1;;;;;10869:42:77;10861:51;;10848:7;10856:1;10848:10;;;;;;;;:::i;:::-;;;;;;:64;;;;;10934:8;;;;;;;10982:14;10997:1;10982:17;;;;;;;;:::i;:::-;;;;;;;:25;;;10964:7;10972:6;10964:15;;;;;;;;:::i;:::-;;;;;;;;;;:43;9716:3;;9669:1357;;;;9550:1490;-1:-1:-1;11061:7:77;8713:2372;-1:-1:-1;;;;;8713:2372:77:o;50744:2689:94:-;50905:6;;51455:26;;51483;;51452:58;51601:26;;;51629;;;51597:59;51374:308;51761:24;;;51346:461;51842:105;;;;51889:18;51909;51881:47;;;;;;;51842:105;51232:729;51975:12;52025:9;52013;:21;52009:329;;;-1:-1:-1;52124:18:94;;52248:9;;52067:18;;52319:4;52009:329;52374:21;;;52352:19;52500:20;;52540:2;52522:21;;52497:47;52571:210;;;;52610:7;52606:161;;;52649:1;52652:18;52641:30;;;;;;;;;52606:161;52726:18;52746:1;52718:30;;;;;;;;;52606:161;52914:2;:27;;;52974:26;;;:18;52914:27;52974:26;52914:27;53019:16;;;;:::i;:::-;;:38;53015:402;;53081:7;53077:161;;;53120:1;53123:18;53112:30;;;;;;;;;;;53077:161;53197:18;53217:1;53189:30;;;;;;;;;;;53015:402;53262:7;53258:159;;;53297:18;;-1:-1:-1;53317:8:94;-1:-1:-1;53289:37:94;;-1:-1:-1;;;;53289:37:94;53258:159;53373:8;-1:-1:-1;53383:18:94;;-1:-1:-1;53365:37:94;;-1:-1:-1;;;;53365:37:94;6577:266:126;6636:11;6649:5;6666:16;:14;:16::i;:::-;6788:48;;-1:-1:-1;;;6788:48:126;;-1:-1:-1;;;;;18041:55:543;;6788:48:126;;;18023:74:543;1737:42:126;;6788:41;;17996:18:543;;6788:48:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6781:55;;;;6577:266;;;:::o;14263:248:91:-;14344:7;;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;14446:58;21018:32;21075:16;14495:8;14446:19;:58::i;:::-;14439:65;;;;;;14263:248;;;;;;:::o;5877:287:126:-;5949:11;5962:5;5979:16;:14;:16::i;:::-;6101:56;;-1:-1:-1;;;6101:56:126;;-1:-1:-1;;;;;18041:55:543;;6101:56:126;;;18023:74:543;1737:42:126;;6101:49;;17996:18:543;;6101:56:126;;;;;;;;;;;;;;;;;;;;;;8887:263:91;8981:5;8999:24;9025:15;9044:41;9069:5;9076:8;9044:24;:41::i;:::-;8998:87;;;;9102:41;9115:17;9134:8;9102:12;:41::i;:::-;9095:48;8887:263;-1:-1:-1;;;;;8887:263:91:o;7483:353::-;7574:5;7581:4;7598:24;7624:15;7641:13;7658:38;7680:5;7687:8;7658:21;:38::i;:::-;7597:99;;;;;;7707:11;7720:17;7741:38;7751:17;7770:8;7741:9;:38::i;:::-;7706:73;;;;7797:5;7804:8;:24;;;;;7816:12;7804:24;7789:40;;;;;;;;;7483:353;;;;;:::o;8373:1244:10:-;8600:4;8594:11;-1:-1:-1;;;8467:12:10;8618:22;;;-1:-1:-1;;;;;8666:24:10;;8660:4;8653:38;8711:4;8704:19;;;8467:12;8787:4;8467:12;8775:4;8467:12;;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9591:4;9584:17;-1:-1:-1;8373:1244:10;;-1:-1:-1;;;;8373:1244:10:o;10165:1393::-;10460:4;10454:11;-1:-1:-1;;;10323:12:10;10478:22;;;-1:-1:-1;;;;;10526:26:10;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:10;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:10:o;7193:2230:94:-;7343:24;;7473:26;;7501;;7470:58;7547:1870;;;;1408:1;7690:53;;1495:1;7757:34;;7547:1870;;;7833:21;7845:9;7833;:21;:::i;:::-;7822:32;;7989:29;8021:48;8050:18;8021:28;:48::i;:::-;7989:80;;8083:29;8115:48;8144:18;8115:28;:48::i;:::-;8083:80;;8179:13;8197:52;8204:21;8227;8197:6;:52::i;:::-;8178:71;;;8264:22;8344:4;8336:5;:12;8332:114;;;8381:4;8372:13;;;-1:-1:-1;8425:2:94;8407:20;8332:114;8475:4;8467:5;:12;8463:114;;;8512:4;8503:13;;;-1:-1:-1;8556:2:94;8538:20;8463:114;8606:3;8598:5;:11;8594:111;;;8642:3;8633:12;;;-1:-1:-1;8685:1:94;8667:19;8594:111;8734:3;8726:5;:11;8722:111;;;8770:3;8761:12;;;-1:-1:-1;8813:1:94;8795:19;8722:111;8857:9;;8850:108;;8899:2;8890:11;;;-1:-1:-1;8923:16:94;;8850:108;;;9086:34;9105:14;9086:34;;:::i;:::-;;-1:-1:-1;9167:239:94;9211:18;9247;9283:83;9290:21;9313;9336:29;9351:14;9344:2;9336:29;:::i;:::-;9283:6;:83::i;:::-;9384:8;9167:26;:239::i;:::-;9135:271;;-1:-1:-1;9135:271:94;-1:-1:-1;;;;;7547:1870:94;7390:2033;7193:2230;;;;;;;:::o;20082:338:91:-;20178:5;20196:7;20205:13;20222:38;20232:17;20251:8;20222:9;:38::i;:::-;20195:65;;;;20275:8;20274:9;:42;;;;-1:-1:-1;20287:29:91;;20274:42;20270:126;;;20339:46;;-1:-1:-1;;;20339:46:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;20339:46:91;5553:302:543;20270:126:91;-1:-1:-1;20412:1:91;20082:338;-1:-1:-1;;;20082:338:91:o;33785:339:94:-;33935:6;33943;33999:36;34005:18;34025:9;33999:5;:36::i;:::-;33965:70;;-1:-1:-1;33965:70:94;-1:-1:-1;34052:65:94;34056:18;34076:9;33965:70;;34052:3;:65::i;:::-;34045:72;;;;33785:339;;;;;;;:::o;12966:8769::-;13116:6;13124;13150:18;13172:1;13150:23;13146:8583;;13196:45;;-1:-1:-1;;;13196:45:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;13196:45:94;5553:302:543;13146:8583:94;13262:18;13284:1;13262:23;13258:8471;;-1:-1:-1;1408:1:94;;-1:-1:-1;1408:1:94;13301:67;;13258:8471;13399:24;13437:15;13466:10;13490;13697:39;13706:18;13726:9;13697:8;:39::i;:::-;13656:80;;-1:-1:-1;13656:80:94;-1:-1:-1;13656:80:94;-1:-1:-1;13791:39:94;13800:18;13820:9;13791:8;:39::i;:::-;13750:80;;-1:-1:-1;13750:80:94;-1:-1:-1;13750:80:94;-1:-1:-1;13965:29:94;13997:48;14026:18;13997:28;:48::i;:::-;13965:80;;14059:29;14091:48;14120:18;14091:28;:48::i;:::-;14059:80;-1:-1:-1;14170:4:94;14212:2;14663:29;;;14659:4460;;;14716:5;14712:4269;;;-1:-1:-1;;;;14753:4:94;-1:-1:-1;14796:2:94;14712:4269;;;14873:4;14849:21;:28;14845:3675;;;14933:4;14909:21;:28;14905:1781;;;14997:4;14973:21;:28;14969:813;;;15065:3;15041:21;:27;15037:321;;;-1:-1:-1;15116:3:94;;-1:-1:-1;15174:1:94;14845:3675;;15037:321;-1:-1:-1;15262:4:94;;-1:-1:-1;15321:2:94;14845:3675;;14969:813;15456:4;15432:21;:28;15428:324;;;-1:-1:-1;15508:4:94;;-1:-1:-1;15567:2:94;14845:3675;;15428:324;-1:-1:-1;15656:4:94;;-1:-1:-1;15715:2:94;14845:3675;;14905:1781;15872:4;15848:21;:28;15844:816;;;15940:4;15916:21;:28;15912:324;;;-1:-1:-1;15992:4:94;;-1:-1:-1;16051:2:94;14845:3675;;15912:324;-1:-1:-1;16140:4:94;;-1:-1:-1;16199:2:94;14845:3675;;15844:816;16334:4;16310:21;:28;16306:324;;;-1:-1:-1;16386:4:94;;-1:-1:-1;16445:2:94;14845:3675;;16306:324;-1:-1:-1;16534:4:94;;-1:-1:-1;16593:2:94;14845:3675;;;16768:4;16744:21;:28;16740:1758;;;16832:4;16808:21;:28;16804:816;;;16900:4;16876:21;:28;16872:324;;;-1:-1:-1;16952:4:94;;-1:-1:-1;17011:2:94;14845:3675;;16872:324;-1:-1:-1;17100:4:94;;-1:-1:-1;17159:2:94;16740:1758;;16804:816;17294:4;17270:21;:28;17266:324;;;-1:-1:-1;17346:4:94;;-1:-1:-1;17405:2:94;14845:3675;;17266:324;-1:-1:-1;17494:4:94;;-1:-1:-1;17553:2:94;16740:1758;;;17710:4;17686:21;:28;17682:790;;;17778:4;17754:21;:28;17750:324;;;-1:-1:-1;17830:4:94;;-1:-1:-1;17889:2:94;17682:790;;17750:324;-1:-1:-1;17978:4:94;;-1:-1:-1;18037:2:94;17682:790;;;18172:4;18148:21;:28;18144:298;;;-1:-1:-1;18224:4:94;;-1:-1:-1;18283:2:94;18144:298;18641:5;18616:21;:30;18609:214;;18723:2;18714:11;;;-1:-1:-1;;;18755:19:94;18609:214;;;18848:5;18857:1;18848:10;18844:119;;18893:47;;-1:-1:-1;;;18893:47:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;18893:47:94;5553:302:543;18844:119:94;19003:5;18998:107;;19039:47;;-1:-1:-1;;;19039:47:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;19039:47:94;5553:302:543;18998:107:94;19587:14;-1:-1:-1;;;19568:33:94;19555:9;:46;19551:623;;19638:14;19625:27;;;;19551:623;;;-1:-1:-1;;;19729:16:94;19699:46;;;;19839:1;19822:18;;19818:338;;;19904:14;-1:-1:-1;;;;;19885:33:94;19872:9;:46;19868:266;;19950:27;;;;19868:266;;;1408:1;1495;20040:67;;;;;;;;;;;;;;19868:266;20202:26;20352:1;20340:9;:13;:30;;;;;20369:1;20357:9;:13;20340:30;20336:222;;;-1:-1:-1;;;20412:28:94;;20484:20;;;:55;;20537:1;20484:55;;;20519:8;20507:9;:20;20484:55;20462:77;;20372:186;20336:222;20621:9;20599:19;20587:9;:31;:43;20576:54;;20681:235;20729:18;20769;20809:59;20816:21;20839:5;20846:21;20809:6;:59::i;:::-;20890:8;20681:26;:235::i;:::-;20649:267;;-1:-1:-1;20649:267:94;-1:-1:-1;20961:1:94;20939:23;;20935:716;;;21012:2;20990:19;:24;20986:308;;;1408:1;1495;21204:67;;;;;;;;;;;;;;;20986:308;21479:19;21465:2;:34;21437:63;;;;;;:::i;:::-;;;;21526:17;21547:1;21526:22;21522:111;;1495:1;21576:34;;21522:111;-1:-1:-1;21676:17:94;;-1:-1:-1;21695:8:94;;-1:-1:-1;21668:36:94;;-1:-1:-1;;;;;;21668:36:94;29621:3681;29771:6;;30037:26;;30065;;30034:58;30111:217;;;;30145:18;30167:1;30145:23;30141:177;;30196:18;30216:9;30188:38;;;;;;;30141:177;30273:18;30293:9;30265:38;;;;;;;30141:177;30565:43;30578:18;30598:9;30565:12;:43::i;:::-;30531:77;;-1:-1:-1;30531:77:94;-1:-1:-1;30652:43:94;30665:18;30685:9;30652:12;:43::i;:::-;30618:77;;-1:-1:-1;30618:77:94;-1:-1:-1;30816:21:94;;;30812:268;;;30919:18;;31031:9;;30866:18;;30812:268;31764:21;;;824:2;31948:45;;31944:122;;;32021:18;32041:9;32013:38;;;;;;;;31944:122;32285:21;32279:2;:27;32250:57;;;;;;:::i;:::-;;;-1:-1:-1;;32400:39:94;;;32658:26;;;32555:4;32648:37;;;32641:45;32734:18;32561:43;;;32551:54;;;32544:62;32718:35;32826:412;;;;32885:9;-1:-1:-1;;;;;32865:29:94;32861:130;;32925:47;;-1:-1:-1;;;32925:47:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;32925:47:94;5553:302:543;32861:130:94;33031:2;33051:24;;;;33009;;;;33122:40;;;33093:11;;;;;;32826:412;;;33222:1;33201:22;;32826:412;-1:-1:-1;33265:18:94;;33285:9;;-1:-1:-1;;;;;;29621:3681:94:o;782:368:102:-;846:4;880:1;866:4;:11;:15;862:33;;;-1:-1:-1;890:5:102;;782:368;-1:-1:-1;782:368:102:o;862:33::-;-1:-1:-1;1072:1:102;1062:12;1056:19;920:16;1052:30;758:18:98;1108:35:102;;782:368::o;3419:242:16:-;3502:12;3640:4;3634;3627;3621:11;3614:4;3608;3604:15;3596:6;3589:5;3576:69;3565:80;3419:242;-1:-1:-1;;;3419:242:16:o;4740:334::-;4871:4;4865:11;4904:16;4889:32;;4974:16;4968:4;4961;4949:17;;4934:57;5039:16;5033:4;5029:27;5021:6;5017:40;5011:4;5004:54;4740:334;:::o;5141:223::-;5245:4;5239:11;5289:16;5283:4;5278:3;5263:43;5331:16;5326:3;5319:29;45490:827:377;45673:16;45691:17;45788:70;45826:23;:31;;;45788:23;:33;;;:37;;:70;;;;:::i;:::-;45775:83;;45883:23;:33;;;45869:47;;46049:46;46063:21;:31;;;46049:10;:13;;:46;;;;:::i;:::-;46045:266;;;46124:21;:31;;;46111:44;;46253:47;46268:23;:31;;;46253:10;:14;;:47;;;;:::i;:::-;46239:61;;45490:827;;;;;:::o;1485:429:24:-;1591:4;1611:6;-1:-1:-1;;;;;1611:18:24;;1633:1;1611:23;1607:301;;1651:17;1670:22;1698:33;1715:4;1721:9;1698:16;:33::i;:::-;-1:-1:-1;1650:81:24;;-1:-1:-1;1650:81:24;-1:-1:-1;1759:26:24;1752:3;:33;;;;;;;;:::i;:::-;;:56;;;;;1802:6;-1:-1:-1;;;;;1789:19:24;:9;-1:-1:-1;;;;;1789:19:24;;1752:56;1745:63;;;;;;1607:301;1846:51;1873:6;1881:4;1887:9;1846:26;:51::i;:::-;1839:58;;;;5129:327:126;1737:42;5196:45;:50;;:148;;-1:-1:-1;1737:42:126;5266;2135:66;5266:78;;5196:148;5179:271;;;5376:63;;-1:-1:-1;;;5376:63:126;;1737:42;5376:63;;;18023:74:543;17996:18;;5376:63:126;17877:226:543;9995:3701:91;10130:7;10139:4;10262:1;10242:17;:21;10238:3452;;;10286:59;;-1:-1:-1;;;10286:59:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;10286:59:91;5553:302:543;10238:3452:91;10444:17;10465:1;10444:22;10440:3250;;-1:-1:-1;10490:1:91;;-1:-1:-1;10493:4:91;10482:16;;10440:3250;10708:17;10989;;;10971:36;;11029:24;;;11025:123;;;11084:45;;-1:-1:-1;;;11084:45:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;11084:45:91;5553:302:543;11025:123:91;11176:13;11203:20;11257:1;11241:13;:17;11237:2443;;;-1:-1:-1;;11519:13:91;:19;11515:91;;;11574:1;11577:5;11566:17;;;;;;;;;;11515:91;11966:13;11965:14;;11951:2;:29;11943:37;;12039:5;12017:19;:27;;;;;:::i;:::-;;;-1:-1:-1;;12302:20:91;;:43;;;;-1:-1:-1;12280:66:91;;-1:-1:-1;12280:66:91;11237:2443;12405:1;12389:13;:17;12385:1295;;;12684:2;12668:13;:18;12664:139;;;12721:59;;-1:-1:-1;;;12721:59:91;;;;;48929:25:543;;;48970:18;;;48963:34;;;49045:4;49033:17;;49013:18;;;49006:45;48902:18;;12721:59:91;48735:322:543;12664:139:91;13030:13;13016:2;:28;13008:36;;13340:5;-1:-1:-1;;13320:25:91;;;;;:::i;:::-;;13298:19;:47;13294:168;;;13380:59;;-1:-1:-1;;;13380:59:91;;;;;48929:25:543;;;48970:18;;;48963:34;;;49045:4;49033:17;;49013:18;;;49006:45;48902:18;;13380:59:91;48735:322:543;13294:168:91;-1:-1:-1;13498:27:91;;;;;-1:-1:-1;13569:4:91;;-1:-1:-1;13547:27:91;;-1:-1:-1;13547:27:91;12385:1295;13639:19;13660:4;13631:34;;;;;;;;;;8180:373;8268:6;8276;8295:24;8321:15;8338:13;8355:38;8377:5;8384:8;8355:21;:38::i;:::-;8294:99;;;;;;8408:8;8403:98;;8439:51;;-1:-1:-1;;;8439:51:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;8439:51:91;5553:302:543;8403:98:91;-1:-1:-1;8518:17:91;;;;-1:-1:-1;8180:373:91;-1:-1:-1;;;8180:373:91:o;19156:299::-;19244:5;19262:7;19271:13;19288:38;19298:17;19317:8;19288:9;:38::i;:::-;19261:65;;;;19341:8;19336:95;;19372:48;;-1:-1:-1;;;19372:48:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;19372:48:91;5553:302:543;6103:800:91;6188:6;;;6270:17;;;6262:26;;-1:-1:-1;;;;;6419:33:91;;6415:472;;;6632:2;6624:5;:10;6648:1;6637:12;;6659:2;6651:5;:10;6665:1;6651:15;6609:58;;;;;;;;;6415:472;6849:5;;-1:-1:-1;6857:8:91;-1:-1:-1;6867:4:91;;-1:-1:-1;6103:800:91;;;;;;:::o;16515:2402::-;16600:11;17032:46;;;;;;16696:17;16752:8;17032:46;17356:668;;17413:4;17393:17;:24;:29;17389:135;;17467:3;17446:24;;;;17504:1;17492:13;;;;17389:135;17763:17;17741;17734:46;;;17727:151;;17825:2;17804:23;;;;17849:10;;;;;17727:151;;;17356:668;;;17920:17;17941:1;17920:22;17916:94;;-1:-1:-1;3702:1:91;;-1:-1:-1;17986:4:91;;-1:-1:-1;17966:25:91;;-1:-1:-1;17966:25:91;17916:94;18234:8;18221;18215:27;;;18211:393;;18436:1;18425:8;:12;18421:85;;;-1:-1:-1;3702:1:91;;-1:-1:-1;3702:1:91;;-1:-1:-1;18461:26:91;;-1:-1:-1;18461:26:91;18421:85;18530:59;;-1:-1:-1;;;18530:59:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;18530:59:91;5553:302:543;18211:393:91;-1:-1:-1;;;;;;;18837:28:91;;18871:4;18867:19;;;18834:53;;-1:-1:-1;16515:2402:91;;;;;:::o;3731:701:94:-;3818:7;3885:1;3865:17;:21;3861:555;;;-1:-1:-1;;;3910:17:94;:37;3906:316;;-1:-1:-1;;;;3978:29:94;3731:701;-1:-1:-1;3731:701:94:o;3906:316::-;-1:-1:-1;4184:18:94;;;3731:701::o;3861:555::-;-1:-1:-1;4383:17:94;3731:701::o;3861:555::-;3731:701;;;:::o;21872:550::-;21933:12;;-1:-1:-1;;22316:1:94;22313;22306:20;22346:9;;;;22394:11;;;22380:12;;;;22376:30;;;;;21872:550;-1:-1:-1;;21872:550:94:o;22585:4048::-;22667:14;22694:13;22709;22726:12;22733:1;22736;22726:6;:12::i;:::-;22693:45;;;;22812:5;22821:1;22812:10;22808:109;;22881:11;22873:5;:19;;;;;:::i;:::-;;22866:26;;;;;;22808:109;23024:11;23015:5;:20;23011:91;;23058:33;;-1:-1:-1;;;23058:33:94;;;;;49264:25:543;;;49305:18;;;49298:34;;;49348:18;;;49341:34;;;49237:18;;23058:33:94;49062:319:543;23011:91:94;23394:17;23553:11;23550:1;23547;23540:25;24154:1;24139:12;;:16;;24124:32;;24393:25;;;;;25554:1;25535;:15;;25534:21;;25787;;;25783:25;;25772:36;25856:21;;;25852:25;;25841:36;25926:21;;;25922:25;;25911:36;25996:21;;;25992:25;;25981:36;26066:21;;;26062:25;;26051:36;26137:21;;;26133:25;;;26122:36;24106:15;25003;;;24999:29;;;24995:37;;;23659:20;;;23648:32;;;25121:22;;;;23702:21;;;;24565:19;;;;25112:31;;;;26601:15;;-1:-1:-1;;22585:4048:94;;;;;:::o;5040:1698::-;5190:6;5198;5312:1;5307;5303;:5;5302:11;5298:1434;;;-1:-1:-1;;;;;5333:20:94;:48;5329:830;;;5429:29;-1:-1:-1;;;;;5457:1:94;5429:29;:::i;:::-;5405:20;:53;5401:529;;-1:-1:-1;;;;5600:16:94;-1:-1:-1;5618:8:94;5592:35;;5401:529;5870:25;5893:2;5870:20;:25;:::i;:::-;5862:34;;;:::i;:::-;5898:12;:8;5909:1;5898:12;:::i;:::-;5854:57;;;;;;5329:830;6104:29;6112:20;6104:29;:::i;:::-;6135:8;6096:48;;;;;;5298:1434;-1:-1:-1;;;;;6193:20:94;:48;6189:533;;;6444:25;6467:2;6444:20;:25;:::i;6189:533::-;-1:-1:-1;6675:20:94;;-1:-1:-1;6698:8:94;6660:47;;2977:541;3058:6;3066;-1:-1:-1;;;3184:17:94;:37;3180:271;;-1:-1:-1;;;;;3245:8:94;:28;3241:127;;3304:45;;-1:-1:-1;;;3304:45:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;3304:45:94;5553:302:543;3241:127:94;3406:2;3385:23;;;;3426:10;;;;;3180:271;-1:-1:-1;;3472:18:94;;;;;;2977:541::o;45918:1994::-;46002:6;46010;46018:4;46062:17;46083:1;46062:22;46058:134;;-1:-1:-1;1408:1:94;;-1:-1:-1;1408:1:94;;-1:-1:-1;46172:4:94;46104:73;;46058:134;-1:-1:-1;;;46311:17:94;:24;46339:1;46311:29;46307:1005;;46384:4;46364:17;:24;:29;:66;;;;-1:-1:-1;46409:21:94;46397:33;;;46364:66;46360:174;;;46475:4;46454:25;;;;46513:2;46501:14;;;;46360:174;46576:4;46556:17;:24;:29;:66;;;;-1:-1:-1;46601:21:94;46589:33;;;46556:66;46552:174;;;46667:4;46646:25;;;;46705:2;46693:14;;;;46552:174;46768:4;46748:17;:24;:29;:66;;;;-1:-1:-1;46793:21:94;46781:33;;;46748:66;46744:174;;;46859:4;46838:25;;;;46897:2;46885:14;;;;46744:174;46963:4;46943:17;:24;:29;:65;;;;-1:-1:-1;46988:20:94;46976:32;;;46943:65;46936:174;;;47053:3;47032:24;;;;47090:1;47078:13;;;;46936:174;;;-1:-1:-1;;;47132:17:94;:24;:29;:65;;;;-1:-1:-1;;;;;;47165:32:94;;;47132:65;47128:170;;;47242:2;47221:23;;;;47278:1;47266:13;;;;47128:170;47606:2;47586:22;;;;;47647:25;47626:17;:46;:82;;;;-1:-1:-1;;;;;;47676:32:94;;;47626:82;47622:192;;;47748:20;47728:40;;47798:1;47786:13;;;;47622:192;-1:-1:-1;47836:17:94;;47855:8;;-1:-1:-1;;;;;;47865:24:94;;:29;;;45918:1994::o;48286:370::-;48374:6;48382;48401:27;48430:18;48450:9;48463:37;48472:17;48491:8;48463;:37::i;:::-;48400:100;;;;;;48515:4;48510:88;;48542:45;;-1:-1:-1;;;48542:45:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;48542:45:94;5553:302:543;2419:778:22;2522:17;2541:16;2559:14;2589:9;:16;2609:2;2589:22;2585:606;;2894:4;2879:20;;2873:27;2943:4;2928:20;;2922:27;3000:4;2985:20;;2979:27;2627:9;2971:36;3041:25;3052:4;2971:36;2873:27;2922;3041:10;:25::i;:::-;3034:32;;;;;;;;;;;2585:606;-1:-1:-1;;3162:16:22;;3113:1;;-1:-1:-1;3117:35:22;;3097:83;;2908:986:24;3153:16;;3508:4;3502:11;;-1:-1:-1;;;3526:21:24;;;3576:4;3567:14;;3560:28;;;3617:4;3608:14;;3601:28;;;;3051:11;;3153:16;3687:4;3675:17;;3153:9;3657:4;3648:14;;3642:51;3778:4;3772;3765;3757:6;3753:17;3748:3;3740:6;3733:5;3722:61;3707:76;;3867:8;3860:4;3854:11;3851:25;3844:4;3826:16;3823:26;3819:58;3810:7;3806:72;3796:82;;;3205:683;;2908:986;;;;;:::o;7129:1551:22:-;7255:17;;;8209:66;8196:79;;8192:164;;;-1:-1:-1;8307:1:22;;-1:-1:-1;8311:30:22;;-1:-1:-1;8343:1:22;8291:54;;8192:164;8467:24;;;8450:14;8467:24;;;;;;;;;49976:25:543;;;50049:4;50037:17;;50017:18;;;50010:45;;;;50071:18;;;50064:34;;;50114:18;;;50107:34;;;8467:24:22;;49948:19:543;;8467:24:22;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8467:24:22;;-1:-1:-1;;8467:24:22;;;-1:-1:-1;;;;;;;8505:20:22;;8501:113;;-1:-1:-1;8557:1:22;;-1:-1:-1;8561:29:22;;-1:-1:-1;8557:1:22;;-1:-1:-1;8541:62:22;;8501:113;8632:6;-1:-1:-1;8640:20:22;;-1:-1:-1;8640:20:22;;-1:-1:-1;7129:1551:22;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:543:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:543;;209:43;;199:71;;266:1;263;256:12;497:382;575:8;585:6;639:3;632:4;624:6;620:17;616:27;606:55;;657:1;654;647:12;606:55;-1:-1:-1;680:20:543;;723:18;712:30;;709:50;;;755:1;752;745:12;709:50;792:4;784:6;780:17;768:29;;852:3;845:4;835:6;832:1;828:14;820:6;816:27;812:38;809:47;806:67;;;869:1;866;859:12;884:766;1034:6;1042;1050;1103:2;1091:9;1082:7;1078:23;1074:32;1071:52;;;1119:1;1116;1109:12;1071:52;1159:9;1146:23;1188:18;1229:2;1221:6;1218:14;1215:34;;;1245:1;1242;1235:12;1215:34;1268:22;;;;1324:3;1306:16;;;1302:26;1299:46;;;1341:1;1338;1331:12;1299:46;1364:2;;-1:-1:-1;1419:2:543;1404:18;;1391:32;;1435:16;;;1432:36;;;1464:1;1461;1454:12;1432:36;;1503:87;1582:7;1571:8;1560:9;1556:24;1503:87;:::i;:::-;884:766;;1609:8;;-1:-1:-1;1477:113:543;;-1:-1:-1;;;;884:766:543:o;1655:180::-;1714:6;1767:2;1755:9;1746:7;1742:23;1738:32;1735:52;;;1783:1;1780;1773:12;1735:52;-1:-1:-1;1806:23:543;;1655:180;-1:-1:-1;1655:180:543:o;1840:154::-;-1:-1:-1;;;;;1919:5:543;1915:54;1908:5;1905:65;1895:93;;1984:1;1981;1974:12;1999:134;2067:20;;2096:31;2067:20;2096:31;:::i;2138:778::-;2305:6;2313;2321;2329;2337;2390:3;2378:9;2369:7;2365:23;2361:33;2358:53;;;2407:1;2404;2397:12;2358:53;2446:9;2433:23;2465:31;2490:5;2465:31;:::i;:::-;2515:5;-1:-1:-1;2567:2:543;2552:18;;2539:32;;-1:-1:-1;2618:2:543;2603:18;;2590:32;;-1:-1:-1;2673:2:543;2658:18;;2645:32;2700:18;2689:30;;2686:50;;;2732:1;2729;2722:12;2686:50;2771:85;2848:7;2839:6;2828:9;2824:22;2771:85;:::i;:::-;2138:778;;;;-1:-1:-1;2138:778:543;;-1:-1:-1;2875:8:543;;2745:111;2138:778;-1:-1:-1;;;2138:778:543:o;2921:456::-;2998:6;3006;3014;3067:2;3055:9;3046:7;3042:23;3038:32;3035:52;;;3083:1;3080;3073:12;3035:52;3122:9;3109:23;3141:31;3166:5;3141:31;:::i;:::-;3191:5;-1:-1:-1;3248:2:543;3233:18;;3220:32;3261:33;3220:32;3261:33;:::i;:::-;2921:456;;3313:7;;-1:-1:-1;;;3367:2:543;3352:18;;;;3339:32;;2921:456::o;3591:967::-;3719:6;3727;3735;3743;3751;3804:3;3792:9;3783:7;3779:23;3775:33;3772:53;;;3821:1;3818;3811:12;3772:53;3860:9;3847:23;3879:31;3904:5;3879:31;:::i;:::-;3929:5;-1:-1:-1;3986:2:543;3971:18;;3958:32;3999:33;3958:32;3999:33;:::i;:::-;4051:7;-1:-1:-1;4105:2:543;4090:18;;4077:32;;-1:-1:-1;4160:2:543;4145:18;;4132:32;4183:18;4213:14;;;4210:34;;;4240:1;4237;4230:12;4210:34;4278:6;4267:9;4263:22;4253:32;;4323:7;4316:4;4312:2;4308:13;4304:27;4294:55;;4345:1;4342;4335:12;4294:55;4385:2;4372:16;4411:2;4403:6;4400:14;4397:34;;;4427:1;4424;4417:12;4397:34;4472:7;4467:2;4458:6;4454:2;4450:15;4446:24;4443:37;4440:57;;;4493:1;4490;4483:12;4440:57;3591:967;;;;-1:-1:-1;3591:967:543;;-1:-1:-1;4524:2:543;4516:11;;4546:6;3591:967;-1:-1:-1;;;3591:967:543:o;4563:247::-;4622:6;4675:2;4663:9;4654:7;4650:23;4646:32;4643:52;;;4691:1;4688;4681:12;4643:52;4730:9;4717:23;4749:31;4774:5;4749:31;:::i;4997:167::-;5068:5;5113:3;5104:6;5099:3;5095:16;5091:26;5088:46;;;5130:1;5127;5120:12;5088:46;-1:-1:-1;5152:6:543;4997:167;-1:-1:-1;4997:167:543:o;5169:379::-;5267:6;5320:2;5308:9;5299:7;5295:23;5291:32;5288:52;;;5336:1;5333;5326:12;5288:52;5376:9;5363:23;5409:18;5401:6;5398:30;5395:50;;;5441:1;5438;5431:12;5395:50;5464:78;5534:7;5525:6;5514:9;5510:22;5464:78;:::i;5860:752::-;6016:6;6024;6032;6085:2;6073:9;6064:7;6060:23;6056:32;6053:52;;;6101:1;6098;6091:12;6053:52;6141:9;6128:23;6170:18;6211:2;6203:6;6200:14;6197:34;;;6227:1;6224;6217:12;6197:34;6250:78;6320:7;6311:6;6300:9;6296:22;6250:78;:::i;:::-;6240:88;;6381:2;6370:9;6366:18;6353:32;6337:48;;6410:2;6400:8;6397:16;6394:36;;;6426:1;6423;6416:12;6617:388;6704:6;6757:2;6745:9;6736:7;6732:23;6728:32;6725:52;;;6773:1;6770;6763:12;6725:52;6813:9;6800:23;6846:18;6838:6;6835:30;6832:50;;;6878:1;6875;6868:12;6832:50;6901:22;;6957:3;6939:16;;;6935:26;6932:46;;;6974:1;6971;6964:12;7398:463;7495:6;7503;7556:2;7544:9;7535:7;7531:23;7527:32;7524:52;;;7572:1;7569;7562:12;7524:52;7612:9;7599:23;7645:18;7637:6;7634:30;7631:50;;;7677:1;7674;7667:12;7631:50;7716:85;7793:7;7784:6;7773:9;7769:22;7716:85;:::i;:::-;7820:8;;7690:111;;-1:-1:-1;7398:463:543;-1:-1:-1;;;;7398:463:543:o;7866:288::-;7907:3;7945:5;7939:12;7972:6;7967:3;7960:19;8028:6;8021:4;8014:5;8010:16;8003:4;7998:3;7994:14;7988:47;8080:1;8073:4;8064:6;8059:3;8055:16;8051:27;8044:38;8143:4;8136:2;8132:7;8127:2;8119:6;8115:15;8111:29;8106:3;8102:39;8098:50;8091:57;;;7866:288;;;;:::o;8159:800::-;8319:4;8348:2;8388;8377:9;8373:18;8418:2;8407:9;8400:21;8441:6;8476;8470:13;8507:6;8499;8492:22;8545:2;8534:9;8530:18;8523:25;;8607:2;8597:6;8594:1;8590:14;8579:9;8575:30;8571:39;8557:53;;8645:2;8637:6;8633:15;8666:1;8676:254;8690:6;8687:1;8684:13;8676:254;;;8783:2;8779:7;8767:9;8759:6;8755:22;8751:36;8746:3;8739:49;8811:39;8843:6;8834;8828:13;8811:39;:::i;:::-;8801:49;-1:-1:-1;8908:12:543;;;;8873:15;;;;8712:1;8705:9;8676:254;;;-1:-1:-1;8947:6:543;;8159:800;-1:-1:-1;;;;;;;8159:800:543:o;9448:315::-;9516:6;9524;9577:2;9565:9;9556:7;9552:23;9548:32;9545:52;;;9593:1;9590;9583:12;9545:52;9632:9;9619:23;9651:31;9676:5;9651:31;:::i;:::-;9701:5;9753:2;9738:18;;;;9725:32;;-1:-1:-1;;;9448:315:543:o;9768:127::-;9829:10;9824:3;9820:20;9817:1;9810:31;9860:4;9857:1;9850:15;9884:4;9881:1;9874:15;9900:253;9972:2;9966:9;10014:4;10002:17;;10049:18;10034:34;;10070:22;;;10031:62;10028:88;;;10096:18;;:::i;:::-;10132:2;10125:22;9900:253;:::o;10158:257::-;10230:4;10224:11;;;10262:17;;10309:18;10294:34;;10330:22;;;10291:62;10288:88;;;10356:18;;:::i;10420:253::-;10492:2;10486:9;10534:4;10522:17;;10569:18;10554:34;;10590:22;;;10551:62;10548:88;;;10616:18;;:::i;10678:275::-;10749:2;10743:9;10814:2;10795:13;;-1:-1:-1;;10791:27:543;10779:40;;10849:18;10834:34;;10870:22;;;10831:62;10828:88;;;10896:18;;:::i;:::-;10932:2;10925:22;10678:275;;-1:-1:-1;10678:275:543:o;10958:530::-;11000:5;11053:3;11046:4;11038:6;11034:17;11030:27;11020:55;;11071:1;11068;11061:12;11020:55;11107:6;11094:20;11133:18;11129:2;11126:26;11123:52;;;11155:18;;:::i;:::-;11199:55;11242:2;11223:13;;-1:-1:-1;;11219:27:543;11248:4;11215:38;11199:55;:::i;:::-;11279:2;11270:7;11263:19;11325:3;11318:4;11313:2;11305:6;11301:15;11297:26;11294:35;11291:55;;;11342:1;11339;11332:12;11291:55;11407:2;11400:4;11392:6;11388:17;11381:4;11372:7;11368:18;11355:55;11455:1;11430:16;;;11448:4;11426:27;11419:38;;;;11434:7;10958:530;-1:-1:-1;;;10958:530:543:o;11493:624::-;11551:5;11599:4;11587:9;11582:3;11578:19;11574:30;11571:50;;;11617:1;11614;11607:12;11571:50;11639:22;;:::i;:::-;11630:31;;11698:9;11685:23;11717:33;11742:7;11717:33;:::i;:::-;11759:22;;11833:2;11818:18;;11805:32;11846:33;11805:32;11846:33;:::i;:::-;11906:2;11895:14;;11888:31;11970:2;11955:18;;11942:32;11997:18;11986:30;;11983:50;;;12029:1;12026;12019:12;11983:50;12065:45;12106:3;12097:6;12086:9;12082:22;12065:45;:::i;:::-;12060:2;12053:5;12049:14;12042:69;;11493:624;;;;:::o;12122:187::-;12186:4;12219:18;12211:6;12208:30;12205:56;;;12241:18;;:::i;:::-;-1:-1:-1;12286:1:543;12282:14;12298:4;12278:25;;12122:187::o;12314:352::-;12365:5;12413:4;12401:9;12396:3;12392:19;12388:30;12385:50;;;12431:1;12428;12421:12;12385:50;12453:22;;:::i;:::-;12444:31;;12512:9;12499:23;12531:33;12556:7;12531:33;:::i;:::-;12587:7;12580:5;12573:22;;12655:2;12644:9;12640:18;12627:32;12622:2;12615:5;12611:14;12604:56;12314:352;;;;:::o;12671:693::-;12729:5;12782:3;12775:4;12767:6;12763:17;12759:27;12749:55;;12800:1;12797;12790:12;12749:55;12836:6;12823:20;12862:4;12886:64;12902:47;12946:2;12902:47;:::i;:::-;12886:64;:::i;:::-;12972:3;12996:2;12991:3;12984:15;13024:4;13019:3;13015:14;13008:21;;13081:4;13075:2;13072:1;13068:10;13060:6;13056:23;13052:34;13038:48;;13109:3;13101:6;13098:15;13095:35;;;13126:1;13123;13116:12;13095:35;13162:4;13154:6;13150:17;13176:159;13192:6;13187:3;13184:15;13176:159;;;13260:32;13288:3;13283;13260:32;:::i;:::-;13248:45;;13313:12;;;;13218:4;13209:14;13176:159;;;-1:-1:-1;13353:5:543;12671:693;-1:-1:-1;;;;;;12671:693:543:o;13369:912::-;13423:5;13471:4;13459:9;13454:3;13450:19;13446:30;13443:50;;;13489:1;13486;13479:12;13443:50;13511:22;;:::i;:::-;13502:31;;13556:29;13575:9;13556:29;:::i;:::-;13549:5;13542:44;13637:2;13626:9;13622:18;13609:32;13660:18;13701:2;13693:6;13690:14;13687:34;;;13717:1;13714;13707:12;13687:34;13753:58;13807:3;13798:6;13787:9;13783:22;13753:58;:::i;:::-;13748:2;13741:5;13737:14;13730:82;13865:2;13854:9;13850:18;13837:32;13821:48;;13894:2;13884:8;13881:16;13878:36;;;13910:1;13907;13900:12;13878:36;13946:63;14005:3;13994:8;13983:9;13979:24;13946:63;:::i;:::-;13941:2;13934:5;13930:14;13923:87;14063:2;14052:9;14048:18;14035:32;14019:48;;14092:2;14082:8;14079:16;14076:36;;;14108:1;14105;14098:12;14076:36;;14144:63;14203:3;14192:8;14181:9;14177:24;14144:63;:::i;:::-;14139:2;14132:5;14128:14;14121:87;;14269:3;14258:9;14254:19;14241:33;14235:3;14228:5;14224:15;14217:58;13369:912;;;;:::o;14286:2014::-;14380:5;14409:68;14425:51;14469:6;14425:51;:::i;14409:68::-;14511:21;;;14400:77;-1:-1:-1;14551:4:543;14571:14;;;;14604:1;14640:14;;;14628:27;;14667:15;;;14664:35;;;14695:1;14692;14685:12;14664:35;14719:6;14734:1560;14750:6;14745:3;14742:15;14734:1560;;;14836:3;14823:17;14863:18;14913:2;14900:11;14897:19;14894:39;;;14929:1;14926;14919:12;14894:39;14956:24;;;;15014:4;15000:12;;;14996:23;14993:43;;;15032:1;15029;15022:12;14993:43;15062:22;;:::i;:::-;15125:2;15112:16;15141:33;15166:7;15141:33;:::i;:::-;15187:22;;15251:11;;;15238:25;15279:16;;;15276:36;;;15308:1;15305;15298:12;15276:36;15335:17;;15387:4;15379:13;;15375:23;-1:-1:-1;15365:51:543;;15412:1;15409;15402:12;15365:51;15452:2;15439:16;15481:64;15497:47;15541:2;15497:47;:::i;15481:64::-;15589:17;;;15683:11;;;15675:20;;15671:29;;;15628:14;;;;15716:17;;;15713:37;;;15746:1;15743;15736:12;15713:37;15776:11;;;;15800:174;15818:8;15811:5;15808:19;15800:174;;;15900:19;;15886:34;;15839:14;;;;15946;;;;15800:174;;;15994:14;;;15987:29;-1:-1:-1;16039:2:543;;-1:-1:-1;;16083:11:543;;;16070:25;16111:16;;;16108:36;;;16140:1;16137;16130:12;16108:36;16180:40;16216:3;16205:8;16201:2;16197:17;16180:40;:::i;:::-;16164:14;;;16157:64;;;;-1:-1:-1;16234:18:543;;-1:-1:-1;;16272:12:543;;;;14767;;14734:1560;;;14738:3;;;;;14286:2014;;;;;:::o;16305:274::-;16374:5;16427:3;16420:4;16412:6;16408:17;16404:27;16394:55;;16445:1;16442;16435:12;16394:55;16467:106;16569:3;16560:6;16547:20;16540:4;16532:6;16528:17;16467:106;:::i;16584:1288::-;16883:6;16891;16899;16907;16915;16968:3;16956:9;16947:7;16943:23;16939:33;16936:53;;;16985:1;16982;16975:12;16936:53;17025:9;17012:23;17054:18;17095:2;17087:6;17084:14;17081:34;;;17111:1;17108;17101:12;17081:34;17134:58;17184:7;17175:6;17164:9;17160:22;17134:58;:::i;:::-;17124:68;;17245:2;17234:9;17230:18;17217:32;17201:48;;17274:2;17264:8;17261:16;17258:36;;;17290:1;17287;17280:12;17258:36;17313:60;17365:7;17354:8;17343:9;17339:24;17313:60;:::i;:::-;17303:70;;17392:74;17458:7;17453:2;17442:9;17438:18;17392:74;:::i;:::-;17382:84;;17519:3;17508:9;17504:19;17491:33;17475:49;;17549:2;17539:8;17536:16;17533:36;;;17565:1;17562;17555:12;17533:36;17588:78;17658:7;17647:8;17636:9;17632:24;17588:78;:::i;:::-;17578:88;;17719:3;17708:9;17704:19;17691:33;17675:49;;17749:2;17739:8;17736:16;17733:36;;;17765:1;17762;17755:12;17733:36;;17788:78;17858:7;17847:8;17836:9;17832:24;17788:78;:::i;:::-;17778:88;;;16584:1288;;;;;;;;:::o;18108:195::-;18212:9;18249:48;18282:14;18275:5;18249:48;:::i;18308:266::-;18396:6;18391:3;18384:19;18448:6;18441:5;18434:4;18429:3;18425:14;18412:43;-1:-1:-1;18500:1:543;18475:16;;;18493:4;18471:27;;;18464:38;;;;18556:2;18535:15;;;-1:-1:-1;;18531:29:543;18522:39;;;18518:50;;18308:266::o;18579:954::-;18642:3;18688:5;18675:19;18703:33;18728:7;18703:33;:::i;:::-;-1:-1:-1;;;;;18818:16:543;;;18806:29;;18883:4;18872:16;;18859:30;;18898:33;18859:30;18898:33;:::i;:::-;18963:16;18956:4;18947:14;;18940:40;19039:4;19028:16;;19015:30;19096:14;19092:26;;;-1:-1:-1;;19088:40:543;19064:65;;19054:93;;19143:1;19140;19133:12;19054:93;19171:30;;19282:4;19269:18;;;19224:21;19310:18;19299:30;;19296:50;;;19342:1;19339;19332:12;19296:50;19391:6;19375:14;19371:27;19362:7;19358:41;19355:61;;;19412:1;19409;19402:12;19355:61;19448:4;19441;19436:3;19432:14;19425:28;19469:58;19521:4;19516:3;19512:14;19504:6;19495:7;19469:58;:::i;19538:533::-;19621:5;19628:6;19688:3;19675:17;19774:2;19770:7;19759:8;19743:14;19739:29;19735:43;19715:18;19711:68;19701:96;;19793:1;19790;19783:12;19701:96;19821:33;;19925:4;19912:18;;;-1:-1:-1;19873:21:543;;-1:-1:-1;19953:18:543;19942:30;;19939:50;;;19985:1;19982;19975:12;19939:50;20039:6;20036:1;20032:14;20016;20012:35;20005:5;20001:47;19998:67;;;20061:1;20058;20051:12;20076:651;20189:6;20184:3;20177:19;20159:3;20215:4;20244;20239:3;20235:14;20228:21;;20272:5;20295:1;20305:397;20319:6;20316:1;20313:13;20305:397;;;20396:6;20383:20;20416:33;20441:7;20416:33;:::i;:::-;-1:-1:-1;;;;;20474:56:543;20462:69;;20578:15;;;20565:29;20551:12;;;20544:51;20618:4;20642:12;;;;20677:15;;;;20341:1;20334:9;20305:397;;;-1:-1:-1;20718:3:543;;20076:651;-1:-1:-1;;;;;20076:651:543:o;20732:1589::-;20934:4;-1:-1:-1;;;;;21044:2:543;21036:6;21032:15;21021:9;21014:34;21084:6;21079:2;21068:9;21064:18;21057:34;21127:2;21122;21111:9;21107:18;21100:30;21165:6;21152:20;21181:31;21206:5;21181:31;:::i;:::-;21248:14;21243:2;21228:18;;21221:42;21323:2;21311:15;;21298:29;21378:14;21374:27;;;-1:-1:-1;;21370:41:543;21346:66;;21336:94;;21426:1;21423;21416:12;21336:94;21467:4;21461:3;21450:9;21446:19;21439:33;21495:92;21582:3;21571:9;21567:19;21558:6;21538:18;21534:31;21495:92;:::i;:::-;21481:106;;21630:80;21706:2;21698:6;21694:15;21686:6;21630:80;:::i;:::-;21733:2;21729:7;21802:2;21790:9;21782:6;21778:22;21774:31;21767:4;21756:9;21752:20;21745:61;21829:86;21908:6;21894:12;21880;21829:86;:::i;:::-;21815:100;;21962:80;22038:2;22030:6;22026:15;22018:6;21962:80;:::i;:::-;21924:118;;;;22107:2;22095:9;22087:6;22083:22;22079:31;22073:3;22062:9;22058:19;22051:60;;22134:90;22217:6;22201:14;22185;22134:90;:::i;:::-;22120:104;;;;22286:3;22278:6;22274:16;22261:30;22255:3;22244:9;22240:19;22233:59;22309:6;22301:14;;;20732:1589;;;;;;:::o;22326:1387::-;22494:9;22529:68;22545:51;22589:6;22545:51;:::i;22529:68::-;22619:3;22643:6;22638:3;22631:19;22669:4;22698;22693:3;22689:14;22682:21;;22744:6;22741:1;22737:14;22730:5;22726:26;22775:14;22767:6;22764:26;22761:46;;;22803:1;22800;22793:12;22761:46;22827:5;22841:839;22857:6;22852:3;22849:15;22841:839;;;22943:3;22930:17;22970:18;23020:2;23007:11;23004:19;23001:39;;;23036:1;23033;23026:12;23001:39;23074:11;23067:5;23063:23;23053:33;;23131:4;23126:2;23110:14;23106:23;23102:34;23099:54;;;23149:1;23146;23139:12;23099:54;23181:22;;:::i;:::-;23243:2;23230:16;23273:2;23265:6;23262:14;23259:34;;;23289:1;23286;23279:12;23259:34;23322:62;23369:14;23360:6;23356:2;23352:15;23322:62;:::i;:::-;23313:7;23306:79;;23435:2;23431;23427:11;23414:25;23468:2;23458:8;23455:16;23452:36;;;23484:1;23481;23474:12;23452:36;23526:78;23589:14;23578:8;23574:2;23570:17;23526:78;:::i;:::-;23508:16;;;23501:104;-1:-1:-1;23618:20:543;;-1:-1:-1;;23658:12:543;;;;22874;;22841:839;;;-1:-1:-1;23702:5:543;;22326:1387;-1:-1:-1;;;;;;22326:1387:543:o;24596:610::-;24828:4;-1:-1:-1;;;;;24938:2:543;24930:6;24926:15;24915:9;24908:34;24990:2;24982:6;24978:15;24973:2;24962:9;24958:18;24951:43;;25030:6;25025:2;25014:9;25010:18;25003:34;25073:6;25068:2;25057:9;25053:18;25046:34;25117:3;25111;25100:9;25096:19;25089:32;25138:62;25195:3;25184:9;25180:19;25172:6;25164;25138:62;:::i;:::-;25130:70;24596:610;-1:-1:-1;;;;;;;;24596:610:543:o;25211:184::-;25281:6;25334:2;25322:9;25313:7;25309:23;25305:32;25302:52;;;25350:1;25347;25340:12;25302:52;-1:-1:-1;25373:16:543;;25211:184;-1:-1:-1;25211:184:543:o;25582:127::-;25643:10;25638:3;25634:20;25631:1;25624:31;25674:4;25671:1;25664:15;25698:4;25695:1;25688:15;25714:125;25779:9;;;25800:10;;;25797:36;;;25813:18;;:::i;26706:583::-;26837:4;26843:6;26903:11;26890:25;26997:2;26993:7;26982:8;26966:14;26962:29;26958:43;26938:18;26934:68;26924:96;;27016:1;27013;27006:12;26924:96;27043:33;;27095:20;;;-1:-1:-1;27138:18:543;27127:30;;27124:50;;;27170:1;27167;27160:12;27124:50;27203:4;27191:17;;-1:-1:-1;27254:1:543;27250:14;;;27234;27230:35;27220:46;;27217:66;;;27279:1;27276;27269:12;27294:127;27355:10;27350:3;27346:20;27343:1;27336:31;27386:4;27383:1;27376:15;27410:4;27407:1;27400:15;27426:336;27530:4;27588:11;27575:25;27682:3;27678:8;27667;27651:14;27647:29;27643:44;27623:18;27619:69;27609:97;;27702:1;27699;27692:12;27609:97;27723:33;;;;;27426:336;-1:-1:-1;;27426:336:543:o;27767:326::-;27861:4;27919:11;27906:25;28013:3;28009:8;27998;27982:14;27978:29;27974:44;27954:18;27950:69;27940:97;;28033:1;28030;28023:12;28098:570;28216:4;28222:6;28282:11;28269:25;28376:2;28372:7;28361:8;28345:14;28341:29;28337:43;28317:18;28313:68;28303:96;;28395:1;28392;28385:12;28303:96;28422:33;;28474:20;;;-1:-1:-1;28517:18:543;28506:30;;28503:50;;;28549:1;28546;28539:12;28503:50;28582:4;28570:17;;-1:-1:-1;28633:1:543;28629:14;;;28613;28609:35;28599:46;;28596:66;;;28658:1;28655;28648:12;28673:972;28797:9;28856:4;28848:5;28832:14;28828:26;28824:37;28821:57;;;28874:1;28871;28864:12;28821:57;28907:2;28901:9;28949:4;28941:6;28937:17;28973:18;29041:6;29029:10;29026:22;29021:2;29009:10;29006:18;29003:46;29000:72;;;29052:18;;:::i;:::-;29092:10;29088:2;29081:22;29139:5;29126:19;29112:33;;29168:2;29160:6;29157:14;29154:34;;;29184:1;29181;29174:12;29154:34;29212:61;29258:14;29249:6;29242:5;29238:18;29212:61;:::i;:::-;29204:6;29197:77;29331:2;29324:5;29320:14;29307:28;29302:2;29294:6;29290:15;29283:53;29393:2;29386:5;29382:14;29369:28;29364:2;29356:6;29352:15;29345:53;29447:2;29440:5;29436:14;29423:28;29407:44;;29476:2;29466:8;29463:16;29460:36;;;29492:1;29489;29482:12;29460:36;;29529:81;29595:14;29584:8;29577:5;29573:20;29529:81;:::i;:::-;29524:2;29512:15;;29505:106;-1:-1:-1;29516:6:543;28673:972;-1:-1:-1;;28673:972:543:o;29650:273::-;29706:6;29759:2;29747:9;29738:7;29734:23;29730:32;29727:52;;;29775:1;29772;29765:12;29727:52;29814:9;29801:23;29867:5;29860:13;29853:21;29846:5;29843:32;29833:60;;29889:1;29886;29879:12;29928:579;29985:3;30023:5;30017:12;30050:6;30045:3;30038:19;30076:4;30105;30100:3;30096:14;30089:21;;30144:4;30137:5;30133:16;30167:1;30177:305;30191:6;30188:1;30185:13;30177:305;;;30250:13;;30292:9;;-1:-1:-1;;;;;30288:58:543;30276:71;;30387:11;;30381:18;30367:12;;;30360:40;30429:4;30420:14;;;;30457:15;;;;30213:1;30206:9;30177:305;;30512:990;30562:3;-1:-1:-1;;;;;30671:2:543;30663:5;30657:12;30653:21;30648:3;30641:34;30721:4;30714:5;30710:16;30704:23;30759:4;30752;30747:3;30743:14;30736:28;30821:2;30806:12;30800:19;30796:28;30789:4;30784:3;30780:14;30773:52;30892:2;30884:4;30870:12;30866:23;30860:30;30856:39;30850:3;30845;30841:13;30834:62;30951:4;30937:12;30933:23;30927:30;30905:52;;;30988:4;30982:3;30977;30973:13;30966:27;31015:47;31057:3;31052;31048:13;31032:14;31015:47;:::i;:::-;31002:60;;31110:4;31103:5;31099:16;31093:23;31159:3;31152:5;31148:15;31141:4;31136:3;31132:14;31125:39;31185:55;31234:5;31218:14;31185:55;:::i;:::-;31173:67;;;31288:4;31281:5;31277:16;31271:23;31336:3;31330:4;31326:14;31319:4;31314:3;31310:14;31303:38;31364:54;31413:4;31397:14;31364:54;:::i;:::-;31350:68;;;31467:4;31460:5;31456:16;31450:23;31443:4;31438:3;31434:14;31427:47;31490:6;31483:13;;;30512:990;;;;:::o;31507:439::-;31560:3;31598:5;31592:12;31625:6;31620:3;31613:19;31651:4;31680;31675:3;31671:14;31664:21;;31719:4;31712:5;31708:16;31742:1;31752:169;31766:6;31763:1;31760:13;31752:169;;;31827:13;;31815:26;;31861:12;;;;31896:15;;;;31788:1;31781:9;31752:169;;31951:1951;32253:4;-1:-1:-1;;;;;32363:2:543;32355:6;32351:15;32340:9;32333:34;32386:2;32424:3;32419:2;32408:9;32404:18;32397:31;32463:6;32457:13;32507:3;32501;32490:9;32486:19;32479:32;32534:60;32589:3;32578:9;32574:19;32560:12;32534:60;:::i;:::-;32520:74;;32649:2;32641:6;32637:15;32631:22;32625:3;32614:9;32610:19;32603:51;32673:4;32732;32724:6;32720:17;32714:24;32708:3;32697:9;32693:19;32686:53;32758:4;32811;32803:6;32799:17;32793:24;32886:3;32882:8;32870:9;32862:6;32858:22;32854:37;32848:3;32837:9;32833:19;32826:66;32912:6;32947:14;32941:21;32986:6;32978;32971:22;33021:2;33013:6;33009:15;33002:22;;33080:2;33070:6;33067:1;33063:14;33055:6;33051:27;33047:36;33126:2;33110:14;33106:23;33092:37;;33147:1;33157:626;33171:6;33168:1;33165:13;33157:626;;;33261:2;33257:7;33248:6;33240;33236:19;33232:33;33227:3;33220:46;33295:6;33289:13;33345:2;33340;33334:9;33330:18;33322:6;33315:34;33398:2;33394;33390:11;33384:18;33439:2;33434;33426:6;33422:15;33415:27;33469:61;33526:2;33518:6;33514:15;33498:14;33469:61;:::i;:::-;33571:11;;;33565:18;33620:19;;;33603:15;;;33596:44;33565:18;33455:75;-1:-1:-1;33663:40:543;33455:75;33565:18;33663:40;:::i;:::-;33726:15;;;;33761:12;;;;33653:50;-1:-1:-1;;;33193:1:543;33186:9;33157:626;;;33161:3;33800:6;33792:14;;;;;;;;;;;33844:6;33837:4;33826:9;33822:20;33815:36;33889:6;33882:4;33871:9;33867:20;33860:36;31951:1951;;;;;;;:::o;33907:521::-;33984:4;33990:6;34050:11;34037:25;34144:2;34140:7;34129:8;34113:14;34109:29;34105:43;34085:18;34081:68;34071:96;;34163:1;34160;34153:12;34071:96;34190:33;;34242:20;;;-1:-1:-1;34285:18:543;34274:30;;34271:50;;;34317:1;34314;34307:12;34271:50;34350:4;34338:17;;-1:-1:-1;34381:14:543;34377:27;;;34367:38;;34364:58;;;34418:1;34415;34408:12;35102:329;35200:4;35258:11;35245:25;35352:2;35348:7;35337:8;35321:14;35317:29;35313:43;35293:18;35289:68;35279:96;;35371:1;35368;35361:12;35436:207;35548:9;35585:52;35622:14;35615:5;35585:52;:::i;35648:222::-;35730:6;35783:2;35771:9;35762:7;35758:23;35754:32;35751:52;;;35799:1;35796;35789:12;35751:52;35822:42;35856:7;35845:9;35822:42;:::i;35875:451::-;-1:-1:-1;;;;;36116:6:543;36112:55;36101:9;36094:74;36204:6;36199:2;36188:9;36184:18;36177:34;36247:2;36242;36231:9;36227:18;36220:30;36075:4;36267:53;36316:2;36305:9;36301:18;36293:6;36267:53;:::i;36331:435::-;-1:-1:-1;;;;;36548:6:543;36544:55;36533:9;36526:74;36636:6;36631:2;36620:9;36616:18;36609:34;36679:2;36674;36663:9;36659:18;36652:30;36507:4;36699:61;36756:2;36745:9;36741:18;36733:6;36725;36699:61;:::i;:::-;36691:69;36331:435;-1:-1:-1;;;;;;36331:435:543:o;37357:320::-;37543:9;37580:91;37656:14;37648:6;37641:5;37580:91;:::i;38151:454::-;38380:6;38372;38367:3;38354:33;38336:3;38415:6;38410:3;38406:16;38442:1;38438:2;38431:13;38473:6;38467:13;38518:6;38511:4;38503:6;38499:17;38495:2;38489:36;38579:1;38544:15;;38568:13;;;38544:15;38151:454;-1:-1:-1;;;;;38151:454:543:o;38610:1093::-;38956:4;38985:3;-1:-1:-1;;;;;39019:6:543;39015:55;39004:9;38997:74;39107:2;39102;39091:9;39087:18;39080:30;39133:53;39182:2;39171:9;39167:18;39159:6;39133:53;:::i;:::-;39119:67;;39234:9;39226:6;39222:22;39217:2;39206:9;39202:18;39195:50;39262:41;39296:6;39288;39262:41;:::i;:::-;39254:49;;;39352:6;39339:20;39334:2;39323:9;39319:18;39312:48;39422:2;39414:6;39410:15;39397:29;39391:3;39380:9;39376:19;39369:58;39489:2;39481:6;39477:15;39464:29;39458:3;39447:9;39443:19;39436:58;39556:2;39548:6;39544:15;39531:29;39525:3;39514:9;39510:19;39503:58;39623:3;39615:6;39611:16;39598:30;39592:3;39581:9;39577:19;39570:59;39691:3;39683:6;39679:16;39666:30;39660:3;39649:9;39645:19;39638:59;38610:1093;;;;;;;:::o;40270:260::-;40451:2;40440:9;40433:21;40414:4;40471:53;40520:2;40509:9;40505:18;40497:6;40471:53;:::i;40535:620::-;40598:3;40629;40661:5;40655:12;40688:6;40683:3;40676:19;40714:4;40743;40738:3;40734:14;40727:21;;40801:4;40791:6;40788:1;40784:14;40777:5;40773:26;40769:37;40840:4;40833:5;40829:16;40863:1;40873:256;40887:6;40884:1;40881:13;40873:256;;;40974:2;40970:7;40962:5;40956:4;40952:16;40948:30;40943:3;40936:43;41000:49;41044:4;41035:6;41029:13;41000:49;:::i;:::-;41107:12;;;;40992:57;-1:-1:-1;41072:15:543;;;;40909:1;40902:9;40873:256;;;-1:-1:-1;41145:4:543;;40535:620;-1:-1:-1;;;;;;;40535:620:543:o;41160:1197::-;41339:2;41328:9;41321:21;-1:-1:-1;;;;;41388:6:543;41382:13;41378:62;41373:2;41362:9;41358:18;41351:90;41495:2;41487:6;41483:15;41477:22;41472:2;41461:9;41457:18;41450:50;41302:4;41547:2;41539:6;41535:15;41529:22;41587:4;41582:2;41571:9;41567:18;41560:32;41615:51;41661:3;41650:9;41646:19;41632:12;41615:51;:::i;:::-;41601:65;;41721:2;41713:6;41709:15;41703:22;41697:3;41686:9;41682:19;41675:51;41775:3;41767:6;41763:16;41757:23;41803:2;41799:7;41871:2;41859:9;41851:6;41847:22;41843:31;41837:3;41826:9;41822:19;41815:60;41898:62;41953:6;41937:14;41898:62;:::i;:::-;41884:76;;42009:3;42001:6;41997:16;41991:23;41969:45;;42079:2;42067:9;42059:6;42055:22;42051:31;42045:3;42034:9;42030:19;42023:60;42106:52;42151:6;42135:14;42106:52;:::i;:::-;42092:66;;42207:3;42199:6;42195:16;42189:23;42167:45;;42278:2;42266:9;42258:6;42254:22;42250:31;42243:4;42232:9;42228:20;42221:61;;42299:52;42344:6;42328:14;42299:52;:::i;42362:669::-;42427:5;42480:3;42473:4;42465:6;42461:17;42457:27;42447:55;;42498:1;42495;42488:12;42447:55;42527:6;42521:13;42553:4;42577:64;42593:47;42637:2;42593:47;:::i;42577:64::-;42663:3;42687:2;42682:3;42675:15;42715:4;42710:3;42706:14;42699:21;;42772:4;42766:2;42763:1;42759:10;42751:6;42747:23;42743:34;42729:48;;42800:3;42792:6;42789:15;42786:35;;;42817:1;42814;42807:12;42786:35;42853:4;42845:6;42841:17;42867:135;42883:6;42878:3;42875:15;42867:135;;;42949:10;;42937:23;;42980:12;;;;42900;;42867:135;;43036:1169;43196:6;43204;43257:2;43245:9;43236:7;43232:23;43228:32;43225:52;;;43273:1;43270;43263:12;43225:52;43306:9;43300:16;43335:18;43376:2;43368:6;43365:14;43362:34;;;43392:1;43389;43382:12;43362:34;43430:6;43419:9;43415:22;43405:32;;43475:7;43468:4;43464:2;43460:13;43456:27;43446:55;;43497:1;43494;43487:12;43446:55;43526:2;43520:9;43548:4;43572:64;43588:47;43632:2;43588:47;:::i;43572:64::-;43670:15;;;43752:1;43748:10;;;;43740:19;;43736:28;;;43701:12;;;;43776:19;;;43773:39;;;43808:1;43805;43798:12;43773:39;43832:11;;;;43852:135;43868:6;43863:3;43860:15;43852:135;;;43934:10;;43922:23;;43885:12;;;;43965;;;;43852:135;;;44042:18;;;44036:25;44006:5;;-1:-1:-1;44036:25:543;;-1:-1:-1;;;44073:16:543;;;44070:36;;;44102:1;44099;44092:12;44070:36;;44125:74;44191:7;44180:8;44169:9;44165:24;44125:74;:::i;:::-;44115:84;;;43036:1169;;;;;:::o;44210:368::-;44453:6;44442:9;44435:25;44496:2;44491;44480:9;44476:18;44469:30;44416:4;44516:56;44568:2;44557:9;44553:18;44545:6;44516:56;:::i;44915:127::-;44976:10;44971:3;44967:20;44964:1;44957:31;45007:4;45004:1;44997:15;45031:4;45028:1;45021:15;45047:465;-1:-1:-1;;;;;45254:55:543;;45236:74;;45224:2;45209:18;;45340:1;45329:13;;45319:144;;45385:10;45380:3;45376:20;45373:1;45366:31;45420:4;45417:1;45410:15;45448:4;45445:1;45438:15;45319:144;45499:6;45494:2;45483:9;45479:18;45472:34;45047:465;;;;;:::o;45517:135::-;45556:3;45577:17;;;45574:43;;45597:18;;:::i;:::-;-1:-1:-1;45644:1:543;45633:13;;45517:135::o;45657:441::-;-1:-1:-1;;;;;45918:6:543;45914:55;45903:9;45896:74;46006:2;46001;45990:9;45986:18;45979:30;45877:4;46026:66;46088:2;46077:9;46073:18;46065:6;46026:66;:::i;46103:217::-;46250:2;46239:9;46232:21;46213:4;46270:44;46310:2;46299:9;46295:18;46287:6;46270:44;:::i;46325:127::-;46386:10;46381:3;46377:20;46374:1;46367:31;46417:4;46414:1;46407:15;46441:4;46438:1;46431:15;46457:435;46551:6;46559;46612:2;46600:9;46591:7;46587:23;46583:32;46580:52;;;46628:1;46625;46618:12;46580:52;46660:9;46654:16;46699:1;46692:5;46689:12;46679:40;;46715:1;46712;46705:12;46679:40;46788:2;46773:18;;46767:25;46738:5;;-1:-1:-1;46836:4:543;46823:18;;46811:31;;46801:59;;46856:1;46853;46846:12;46801:59;46879:7;46869:17;;;46457:435;;;;;:::o;46897:216::-;46961:9;;;46989:11;;;46936:3;47019:9;;47047:10;;47043:19;;47072:10;;47064:19;;47040:44;47037:70;;;47087:18;;:::i;47118:416::-;47207:1;47244:5;47207:1;47258:270;47279:7;47269:8;47266:21;47258:270;;;47338:4;47334:1;47330:6;47326:17;47320:4;47317:27;47314:53;;;47347:18;;:::i;:::-;47397:7;47387:8;47383:22;47380:55;;;47417:16;;;;47380:55;47496:22;;;;47456:15;;;;47258:270;;;47262:3;47118:416;;;;;:::o;47539:806::-;47588:5;47618:8;47608:80;;-1:-1:-1;47659:1:543;47673:5;;47608:80;47707:4;47697:76;;-1:-1:-1;47744:1:543;47758:5;;47697:76;47789:4;47807:1;47802:59;;;;47875:1;47870:130;;;;47782:218;;47802:59;47832:1;47823:10;;47846:5;;;47870:130;47907:3;47897:8;47894:17;47891:43;;;47914:18;;:::i;:::-;-1:-1:-1;;47970:1:543;47956:16;;47985:5;;47782:218;;48084:2;48074:8;48071:16;48065:3;48059:4;48056:13;48052:36;48046:2;48036:8;48033:16;48028:2;48022:4;48019:12;48015:35;48012:77;48009:159;;;-1:-1:-1;48121:19:543;;;48153:5;;48009:159;48200:34;48225:8;48219:4;48200:34;:::i;:::-;48270:6;48266:1;48262:6;48258:19;48249:7;48246:32;48243:58;;;48281:18;;:::i;:::-;48319:20;;47539:806;-1:-1:-1;;;47539:806:543:o;48350:131::-;48410:5;48439:36;48466:8;48460:4;48439:36;:::i;49386:217::-;49426:1;49452;49442:132;;49496:10;49491:3;49487:20;49484:1;49477:31;49531:4;49528:1;49521:15;49559:4;49556:1;49549:15;49442:132;-1:-1:-1;49588:9:543;;49386:217::o;49608:136::-;49643:3;-1:-1:-1;;;49664:22:543;;49661:48;;49689:18;;:::i","linkReferences":{}},"methodIdentifiers":{"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])":"709fb8a5","clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])":"fa501182","deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":"2fbc4ba0","entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])":"d7e442ec","flashFee(address,uint256)":"d9d98ce4","flashLoan(address,address,uint256,bytes)":"5cffe9de","maxFlashLoan(address)":"613255ab","multicall(bytes[])":"ac9650d8","orderExists(bytes32)":"2cb77e9f","quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))":"9235084d","removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])":"1f69cb75","supportsInterface(bytes4)":"01ffc9a7","takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))":"69c72856","vaultBalance2(address,address,bytes32)":"41d1514f","withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":"60746119"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClearZeroAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"CoefficientOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"DivisionByZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"ExponentOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"ExponentUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"FixedDecimalOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"name\":\"FlashLenderCallbackFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"LossyConversionToFloat\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"MaximizeOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"minimumIO\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"actualIO\",\"type\":\"bytes32\"}],\"name\":\"MinimumIO\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativeBounty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"NegativeFixedDecimalConversion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativePull\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativePush\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"vaultBalance\",\"type\":\"bytes32\"}],\"name\":\"NegativeVaultBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"amount\",\"type\":\"bytes32\"}],\"name\":\"NegativeVaultBalanceChange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoOrders\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NotOrderOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"unmeta\",\"type\":\"bytes\"}],\"name\":\"NotRainMetaV1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNoHandleIO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNoInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNoOutputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNoSources\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"expectedAddress\",\"type\":\"address\"}],\"name\":\"TOFUTokenDecimalsNotDeployed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TOFUOutcome\",\"name\":\"tofuOutcome\",\"type\":\"uint8\"}],\"name\":\"TokenDecimalsReadFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenSelfTrade\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"outputs\",\"type\":\"uint256\"}],\"name\":\"UnsupportedCalculateOutputs\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"name\":\"ZeroDepositAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroMaximumIO\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"ZeroVaultId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"name\":\"ZeroWithdrawTargetAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"AddOrderV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Float\",\"name\":\"aliceOutput\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"bobOutput\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"aliceInput\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"bobInput\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct ClearStateChangeV2\",\"name\":\"clearStateChange\",\"type\":\"tuple\"}],\"name\":\"AfterClearV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct OrderV4\",\"name\":\"alice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct OrderV4\",\"name\":\"bob\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"aliceInputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aliceOutputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bobInputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bobOutputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"aliceBountyVaultId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"bobBountyVaultId\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct ClearConfigV2\",\"name\":\"clearConfig\",\"type\":\"tuple\"}],\"name\":\"ClearV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32[][]\",\"name\":\"context\",\"type\":\"bytes32[][]\"}],\"name\":\"ContextV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositAmountUint256\",\"type\":\"uint256\"}],\"name\":\"DepositV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"subject\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"meta\",\"type\":\"bytes\"}],\"name\":\"MetaV1_2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExceedsMaxRatio\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderZeroAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"RemoveOrderV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputIOIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct TakeOrderConfigV4\",\"name\":\"config\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"Float\",\"name\":\"input\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"Float\",\"name\":\"output\",\"type\":\"bytes32\"}],\"name\":\"TakeOrderV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"Float\",\"name\":\"targetAmount\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"Float\",\"name\":\"withdrawAmount\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawAmountUint256\",\"type\":\"uint256\"}],\"name\":\"WithdrawV2\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"secret\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"meta\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderConfigV4\",\"name\":\"orderConfig\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"addOrder4\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"aliceOrder\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"bobOrder\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"aliceInputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aliceOutputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bobInputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bobOutputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"aliceBountyVaultId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"bobBountyVaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct ClearConfigV2\",\"name\":\"clearConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"aliceSignedContext\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"bobSignedContext\",\"type\":\"tuple[]\"}],\"name\":\"clear3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"depositAmount\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"deposit4\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"entask2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"flashFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"maxFlashLoan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"orderExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputIOIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct QuoteV2\",\"name\":\"quoteConfig\",\"type\":\"tuple\"}],\"name\":\"quote2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"removeOrder3\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"stateChanged\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Float\",\"name\":\"minimumIO\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"maximumIO\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"maximumIORatio\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"IOIsInput\",\"type\":\"bool\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputIOIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TakeOrderConfigV4[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct TakeOrdersConfigV5\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"takeOrders4\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"totalTakerInput\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"totalTakerOutput\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"name\":\"vaultBalance2\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"targetAmount\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"withdraw4\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"CoefficientOverflow(int256,int256)\":[{\"details\":\"Thrown when a coefficient overflows.\"}],\"DivisionByZero(int256,int256)\":[{\"details\":\"Thrown when dividing by zero.\",\"params\":{\"exponent\":\"The exponent of the numerator.\",\"signedCoefficient\":\"The signed coefficient of the numerator.\"}}],\"ExponentOverflow(int256,int256)\":[{\"details\":\"Thrown when an exponent overflows.\"}],\"ExponentUnderflow(int256,int256)\":[{\"details\":\"Thrown when an exponent underflows. Exponent underflow means the magnitude is smaller than any representable Float. Without this revert, arithmetic ops that compose to underflow (e.g. `mul` with two operands whose exponents sum below `int32.min`) would silently return `FLOAT_ZERO`, breaking downstream code that branches on `result == 0`.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FixedDecimalOverflow(int256,int256,uint8)\":[{\"details\":\"Thrown when converting a Float to a fixed-decimal uint256 and the scaled value exceeds `uint256.max`. Returning a silent zero with `lossless=false` would decapitate the high bits of the value; reverting surfaces the overflow with the original inputs so callers can rescale or reject.\"}],\"FlashLenderCallbackFailed(bytes32)\":[{\"params\":{\"result\":\"The value that was returned by `onFlashLoan`.\"}}],\"InvalidSignature(uint256)\":[{\"params\":{\"i\":\"The index of the invalid signature in the list of signed contexts.\"}}],\"LossyConversionToFloat(int256,int256)\":[{\"details\":\"Thrown when converting some value to a float when the conversion is lossy.\"}],\"MaximizeOverflow(int256,int256)\":[{\"details\":\"Thrown when a maximize overflows where it is not appropriate.\"}],\"MinimumIO(bytes32,bytes32)\":[{\"params\":{\"actualIO\":\"The io that was achieved.\",\"minimumIO\":\"The minimum io required.\"}}],\"MulDivOverflow(uint256,uint256,uint256)\":[{\"details\":\"Thrown when mulDiv internal to division overflows.\"}],\"NegativeFixedDecimalConversion(int256,int256)\":[{\"details\":\"Thrown when attempting to convert a negative number to an unsigned fixed-point number.\"}],\"NegativeVaultBalance(bytes32)\":[{\"params\":{\"vaultBalance\":\"The negative vault balance being recorded.\"}}],\"NegativeVaultBalanceChange(bytes32)\":[{\"params\":{\"amount\":\"The negative amount being applied.\"}}],\"NotOrderOwner(address)\":[{\"params\":{\"owner\":\"The owner of the order.\"}}],\"NotRainMetaV1(bytes)\":[{\"params\":{\"unmeta\":\"the bytes that are not meta.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"TOFUTokenDecimalsNotDeployed(address)\":[{\"params\":{\"expectedAddress\":\"The address where the singleton was expected.\"}}],\"TokenDecimalsReadFailure(address,uint8)\":[{\"params\":{\"tofuOutcome\":\"The outcome of the TOFU read.\",\"token\":\"The token that failed the safe read.\"}}],\"UnsupportedCalculateOutputs(uint256)\":[{\"params\":{\"outputs\":\"The outputs the expression offers.\"}}],\"ZeroDepositAmount(address,address,bytes32)\":[{\"params\":{\"sender\":\"`msg.sender` depositing tokens.\",\"token\":\"The token being deposited.\",\"vaultId\":\"The vault ID the tokens are being deposited under.\"}}],\"ZeroVaultId(address,address)\":[{\"params\":{\"sender\":\"`msg.sender` depositing or withdrawing tokens.\",\"token\":\"The token being deposited or withdrawn.\"}}],\"ZeroWithdrawTargetAmount(address,address,bytes32)\":[{\"params\":{\"sender\":\"`msg.sender` withdrawing tokens.\",\"token\":\"The token being withdrawn.\",\"vaultId\":\"The vault ID the tokens are being withdrawn from.\"}}]},\"events\":{\"AddOrderV3(address,bytes32,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32))\":{\"params\":{\"order\":\"The newly added order. MUST be handed back as-is when clearing orders and contains derived information in addition to the order config that was provided by the order owner.\",\"orderHash\":\"The hash of the order as it is recorded onchain. Only the hash is stored in Raindex storage to avoid paying gas to store the entire order.\",\"sender\":\"`msg.sender` adding the order and is owner of the order.\"}},\"AfterClearV2(address,(bytes32,bytes32,bytes32,bytes32))\":{\"params\":{\"clearStateChange\":\"The final vault state changes from the clearance.\",\"sender\":\"`msg.sender` clearing the order.\"}},\"ClearV3(address,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32))\":{\"params\":{\"alice\":\"One of the orders.\",\"bob\":\"The other order.\",\"clearConfig\":\"Additional config required to process the clearance.\",\"sender\":\"`msg.sender` clearing both orders.\"}},\"ContextV2(address,bytes32[][])\":{\"params\":{\"context\":\"The context that was built.\",\"sender\":\"`msg.sender` building the context.\"}},\"DepositV2(address,address,bytes32,uint256)\":{\"params\":{\"depositAmountUint256\":\"The amount of tokens deposited.\",\"sender\":\"`msg.sender` depositing tokens. Delegated deposits are NOT supported.\",\"token\":\"The token being deposited.\",\"vaultId\":\"The vault ID the tokens are being deposited under.\"}},\"MetaV1_2(address,bytes32,bytes)\":{\"params\":{\"meta\":\"Rain metadata V1 compliant metadata bytes. https://github.com/rainprotocol/specs/blob/main/metadata-v1.md\",\"sender\":\"The msg.sender.\",\"subject\":\"The entity that the metadata is about. MAY be the address of the emitting contract (as `bytes32`) OR anything else. The interpretation of the subject is context specific, so will often be a hash of some data/thing that this metadata is about.\"}},\"OrderExceedsMaxRatio(address,address,bytes32)\":{\"params\":{\"orderHash\":\"Hash of the order that had an excess ratio.\",\"owner\":\"Owner of the order that had an excess ratio.\",\"sender\":\"`msg.sender` clearing the order that had an excess ratio.\"}},\"OrderNotFound(address,address,bytes32)\":{\"params\":{\"orderHash\":\"Hash of the order that was not found.\",\"owner\":\"Owner of the order that was not found.\",\"sender\":\"`msg.sender` clearing the order that wasn't found.\"}},\"OrderZeroAmount(address,address,bytes32)\":{\"params\":{\"orderHash\":\"Hash of the order that evaluated to a 0 amount.\",\"owner\":\"Owner of the order that evaluated to a 0 amount.\",\"sender\":\"`msg.sender` clearing the order that had a 0 amount.\"}},\"RemoveOrderV3(address,bytes32,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32))\":{\"params\":{\"order\":\"The removed order.\",\"orderHash\":\"The hash of the removed order.\",\"sender\":\"`msg.sender` removing the order and is owner of the order.\"}},\"TakeOrderV3(address,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]),bytes32,bytes32)\":{\"params\":{\"config\":\"All config defining the orders to attempt to take.\",\"input\":\"The input amount from the perspective of sender.\",\"output\":\"The output amount from the perspective of sender.\",\"sender\":\"`msg.sender` taking the orders.\"}},\"WithdrawV2(address,address,bytes32,bytes32,bytes32,uint256)\":{\"params\":{\"sender\":\"`msg.sender` withdrawing tokens. Delegated withdrawals are NOT supported.\",\"targetAmount\":\"The amount of tokens requested to withdraw.\",\"token\":\"The token being withdrawn.\",\"vaultId\":\"The vault ID the tokens are being withdrawn from.\",\"withdrawAmount\":\"The amount of tokens withdrawn, can be less than the target amount if the vault does not have the funds available to cover the target amount. For example an active order might move tokens before the withdraw completes.\",\"withdrawAmountUint256\":\"The amount of tokens withdrawn, as the uint256 of tokens that actually move onchain.\"}}},\"kind\":\"dev\",\"methods\":{\"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"config\":\"All config required to build an `Order`.\",\"tasks\":\"Additional tasks to run after the order is added. Order information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the order MUST NOT be added.\"},\"returns\":{\"_0\":\"True if the order was added, false if it already existed.\"}},\"clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])\":{\"params\":{\"alice\":\"Some order to clear.\",\"aliceSignedContext\":\"Optional signed context that is relevant to A.\",\"bob\":\"Another order to clear.\",\"bobSignedContext\":\"Optional signed context that is relevant to B.\",\"clearConfig\":\"Additional configuration for the clearance such as how to handle the bounty payment for the `msg.sender`.\"}},\"deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"depositAmount\":\"The amount of tokens to deposit.\",\"tasks\":\"Additional tasks to run after the deposit. Deposit information SHOULD be made available during evaluation in context. If ANY of the post tasks revert, the deposit MUST be reverted.\",\"token\":\"The token to deposit.\",\"vaultId\":\"The vault ID to deposit under.\"}},\"entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"tasks\":\"The tasks to evaluate.\"}},\"flashFee(address,uint256)\":{\"details\":\"The fee to be charged for a given loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"token\":\"The loan currency.\"},\"returns\":{\"_0\":\"The amount of `token` to be charged for the loan, on top of the returned principal.\"}},\"flashLoan(address,address,uint256,bytes)\":{\"details\":\"Initiate a flash loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"data\":\"Arbitrary data structure, intended to contain user-defined parameters.\",\"receiver\":\"The receiver of the tokens in the loan, and the receiver of the callback.\",\"token\":\"The loan currency.\"},\"returns\":{\"_0\":\"True if the flash loan was successful.\"}},\"maxFlashLoan(address)\":{\"details\":\"The amount of currency available to be lent.\",\"params\":{\"token\":\"The loan currency.\"},\"returns\":{\"_0\":\"The amount of `token` that can be borrowed.\"}},\"multicall(bytes[])\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Receives and executes a batch of function calls on this contract.\"},\"orderExists(bytes32)\":{\"params\":{\"orderHash\":\"The hash of the order to check.\"},\"returns\":{\"_0\":\"True if the order exists, false otherwise.\"}},\"quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))\":{\"params\":{\"quoteConfig\":\"The configuration for the quote.\"},\"returns\":{\"_0\":\"True if the order exists, false otherwise.\",\"_1\":\"The maximum output amount that the order could send. Is `0` if the order does not exist.\",\"_2\":\"The input:output ratio of the order. Is `0` if the order does not exist.\"}},\"removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"order\":\"The `Order` data exactly as it was added.\",\"tasks\":\"Additional tasks to run after the order is removed. Order information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the order MUST NOT be removed.\"},\"returns\":{\"stateChanged\":\"True if the order was removed, false if it did not exist.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))\":{\"params\":{\"config\":\"The constraints and list of orders to take, orders are processed sequentially in order as provided, there is NO ATTEMPT onchain to predict/filter/sort these orders other than evaluating them as provided. Inputs and outputs are from the perspective of `msg.sender` except for values specified by the orders themselves which are the from the perspective of that order.\"},\"returns\":{\"totalTakerInput\":\"Total tokens sent to `msg.sender`, taken from order vaults processed.\",\"totalTakerOutput\":\"Total tokens taken from `msg.sender` and distributed between vaults.\"}},\"vaultBalance2(address,address,bytes32)\":{\"params\":{\"owner\":\"The owner of the vault.\",\"token\":\"The token the vault is for.\",\"vaultId\":\"The vault ID to read.\"},\"returns\":{\"_0\":\"The current balance of the vault.\"}},\"withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"targetAmount\":\"The amount of tokens to attempt to withdraw. MAY result in fewer tokens withdrawn if the vault balance is lower than the target amount. MAY NOT be zero, the Raindex MUST revert with `ZeroWithdrawTargetAmount` if the amount is zero.\",\"tasks\":\"Additional tasks to run after the withdraw. Withdraw information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the withdraw MUST be reverted.\",\"token\":\"The token to withdraw.\",\"vaultId\":\"The vault ID to withdraw from.\"}}},\"stateVariables\":{\"sVaultBalances\":{\"details\":\"Vault balances are stored in a mapping of owner => token => vault ID This gives 1:1 parity with the `IRaindexV6` interface but keeping the `sFoo` naming convention for storage variables.\"}},\"title\":\"RaindexV6 See `IRaindexV6` for more documentation.\",\"version\":1},\"userdoc\":{\"errors\":{\"ClearZeroAmount()\":[{\"notice\":\"Thrown when clear output amounts are both zero.\"}],\"FlashLenderCallbackFailed(bytes32)\":[{\"notice\":\"Thrown when the `onFlashLoan` callback returns anything other than ON_FLASH_LOAN_CALLBACK_SUCCESS.\"}],\"InvalidSignature(uint256)\":[{\"notice\":\"Thrown when the ith signature from a list of signed contexts is invalid.\"}],\"MinimumIO(bytes32,bytes32)\":[{\"notice\":\"Thrown when the minimum input is not met.\"}],\"NegativeBounty()\":[{\"notice\":\"Throws when a negative bounty is calculated.\"}],\"NegativePull()\":[{\"notice\":\"Thrown when a negative pull is attempted.\"}],\"NegativePush()\":[{\"notice\":\"Thrown when a negative push is attempted.\"}],\"NegativeVaultBalance(bytes32)\":[{\"notice\":\"Thrown when a negative vault balance is being recorded.\"}],\"NegativeVaultBalanceChange(bytes32)\":[{\"notice\":\"Thrown when a negative amount is being applied to a vault balance.\"}],\"NoOrders()\":[{\"notice\":\"MUST be thrown when take orders is called with no orders.\"}],\"NotOrderOwner(address)\":[{\"notice\":\"Thrown when the `msg.sender` modifying an order is not its owner.\"}],\"NotRainMetaV1(bytes)\":[{\"notice\":\"Thrown when some bytes are expected to be rain meta and are not.\"}],\"OrderNoHandleIO()\":[{\"notice\":\"MUST be thrown by `addOrder` if the order has no associated handle IO.\"}],\"OrderNoInputs()\":[{\"notice\":\"MUST be thrown by `addOrder` if the order has no inputs.\"}],\"OrderNoOutputs()\":[{\"notice\":\"MUST be thrown by `addOrder` if the order has no outputs.\"}],\"OrderNoSources()\":[{\"notice\":\"MUST be thrown by `addOrder` if the order has no associated calculation.\"}],\"SameOwner()\":[{\"notice\":\"Thrown when two orders have the same owner during clear.\"}],\"TOFUTokenDecimalsNotDeployed(address)\":[{\"notice\":\"Thrown when the singleton is not deployed or has an unexpected codehash.\"}],\"TokenDecimalsReadFailure(address,uint8)\":[{\"notice\":\"Thrown by safe TOFU decimals reads when the outcome is neither `Initial` nor `Consistent`. This covers both `Inconsistent` (token changed its decimals) and `ReadFailure` (token unreadable). The `tofuOutcome` parameter distinguishes the two cases.\"}],\"TokenMismatch()\":[{\"notice\":\"Thrown when the input and output tokens don't match, in either direction.\"}],\"TokenSelfTrade()\":[{\"notice\":\"Thrown when the input token is the output token.\"}],\"UnsupportedCalculateOutputs(uint256)\":[{\"notice\":\"Thrown when calculate order expression offers too few outputs.\"}],\"ZeroDepositAmount(address,address,bytes32)\":[{\"notice\":\"MUST be thrown by `deposit` if the amount is zero.\"}],\"ZeroMaximumIO()\":[{\"notice\":\"MUST be thrown by `takeOrders` if the maximum input/output is zero.\"}],\"ZeroVaultId(address,address)\":[{\"notice\":\"MUST be thrown by `deposit` and `withdraw` if the vault ID is zero.\"}],\"ZeroWithdrawTargetAmount(address,address,bytes32)\":[{\"notice\":\"MUST be thrown by `withdraw` if the amount _requested_ to withdraw is zero. The withdrawal MAY still not move any tokens if the vault balance is zero, or the withdrawal is used to repay a flash loan.\"}]},\"events\":{\"AddOrderV3(address,bytes32,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32))\":{\"notice\":\"An order has been added to the Raindex. The order is permanently and always active according to its expression until/unless it is removed.\"},\"AfterClearV2(address,(bytes32,bytes32,bytes32,bytes32))\":{\"notice\":\"Emitted after two orders clear. Includes all final state changes in the vault balances, including the clearer's vaults.\"},\"ClearV3(address,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32))\":{\"notice\":\"Emitted before two orders clear. Covers both orders and includes all the state before anything is calculated.\"},\"ContextV2(address,bytes32[][])\":{\"notice\":\"Calling contracts SHOULD emit `Context` before calling `eval4` if they are able. Notably `eval4` MAY be called within a static call which means that events cannot be emitted, in which case this does not apply. It MAY NOT be useful to emit this multiple times for several eval calls if they all share a common context, in which case a single emit is sufficient.\"},\"DepositV2(address,address,bytes32,uint256)\":{\"notice\":\"Some tokens have been deposited to a vault.\"},\"MetaV1_2(address,bytes32,bytes)\":{\"notice\":\"An onchain wrapper to carry arbitrary Rain metadata. Assigns the sender to the metadata so that tooling can easily drop/ignore data from unknown sources. As metadata is about something, the subject MUST be provided.\"},\"OrderExceedsMaxRatio(address,address,bytes32)\":{\"notice\":\"Emitted when an order evaluates to a ratio exceeding the counterparty's maximum limit. An event rather than an error so that we allow attempting many orders in a loop and NOT rollback on a \\\"best effort\\\" basis to clear.\"},\"OrderNotFound(address,address,bytes32)\":{\"notice\":\"Emitted when attempting to match an order that either never existed or was removed. An event rather than an error so that we allow attempting many orders in a loop and NOT rollback on \\\"best effort\\\" basis to clear.\"},\"OrderZeroAmount(address,address,bytes32)\":{\"notice\":\"Emitted when an order evaluates to a zero amount. An event rather than an error so that we allow attempting many orders in a loop and NOT rollback on a \\\"best effort\\\" basis to clear.\"},\"RemoveOrderV3(address,bytes32,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32))\":{\"notice\":\"An order has been removed from the Raindex. This effectively deactivates it. Orders can be added again after removal.\"},\"TakeOrderV3(address,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]),bytes32,bytes32)\":{\"notice\":\"Some order has been taken by `msg.sender`. This is the same as them placing inverse orders then immediately clearing them all, but costs less gas and is more convenient and reliable. Analogous to a market buy against the specified orders. Each order that is matched within a the `takeOrders` loop emits its own individual event.\"},\"WithdrawV2(address,address,bytes32,bytes32,bytes32,uint256)\":{\"notice\":\"Some tokens have been withdrawn from a vault.\"}},\"kind\":\"user\",\"methods\":{\"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"Given an order config, deploys the expression and builds the full `Order` for the config, then records it as an active order. Delegated adding an order is NOT supported. The `msg.sender` that adds an order is ALWAYS the owner and all resulting vault movements are their own. MUST revert with `OrderNoSources` if the order has no associated calculation and `OrderNoHandleIO` if the order has no handle IO entrypoint. The calculation MUST return at least two values from evaluation, the maximum amount and the IO ratio. The handle IO entrypoint SHOULD return zero values from evaluation. Either MAY revert during evaluation on the interpreter, which MUST prevent the order from clearing. MUST revert with `OrderNoInputs` if the order has no inputs. MUST revert with `OrderNoOutputs` if the order has no outputs. If the order already exists, the Raindex MUST NOT change state, which includes not emitting an event. Instead it MUST return false. If the Raindex modifies state it MUST emit an `AddOrderV3` event and return true. If vault ID is `0` for any input or output, this indicates a vaultless order for that token. Vaultless orders draw from or pay to the order's owner's wallet directly rather than any internal vault.\"},\"clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])\":{\"notice\":\"Allows `msg.sender` to match two live orders placed earlier by non-interactive parties and claim a bounty in the process. The clearer is free to select any two live orders on the Raindex for matching and as long as they have compatible tokens, ratios and amounts, the orders will clear. Clearing the orders DOES NOT remove them from the Raindex, they remain live until explicitly removed by their owner. Even if the input vault balances are completely emptied, the orders remain live until removed. This allows order owners to deploy a strategy over a long period of time and periodically top up the input vaults. Clearing two orders from the same owner is disallowed. Any mismatch in the ratios between the two orders will cause either more inputs than there are available outputs (transaction will revert) or less inputs than there are available outputs. In the latter case the excess outputs are given to the `msg.sender` of clear, to the vaults they specify in the clear config. This not only incentivises \\\"automatic\\\" clear calls for both alice and bob, but incentivises _prioritising greater ratio differences_ with a larger bounty. The second point is important because it implicitly prioritises orders that are further from the current market price, thus putting constant increasing pressure on the entire system the further it drifts from the norm, no matter how esoteric the individual order expressions and sizings might be. All else equal there are several factors that would impact how reliably some order clears relative to the wider market, such as: - Bounties are effectively percentages of cleared amounts so larger orders have larger bounties and cover gas costs more easily - High gas on the network means that orders are harder to clear profitably so the negative spread of the ratios will need to be larger - Complex and stateful expressions cost more gas to evalulate so the negative spread will need to be larger - Erratic behavior of the order owner could reduce the willingness of third parties to interact if it could result in wasted gas due to orders suddently being removed before clearance etc. - Dynamic and highly volatile words used in the expression could be ignored or low priority by clearers who want to be sure that they can accurately predict the ratios that they include in their clearance - Geopolitical issues such as sanctions and regulatory restrictions could cause issues for certain owners and clearers\"},\"deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"`msg.sender` deposits tokens according to config. The config specifies the vault to deposit tokens under. Delegated depositing is NOT supported. Depositing DOES NOT mint shares (unlike ERC4626) so the overall vaulted experience is much simpler as there is always a 1:1 relationship between deposited assets and vault balances globally and individually. This mitigates rounding/dust issues, speculative behaviour on derived assets, possible regulatory issues re: whether a vault share is a security, code bloat on the vault, complex mint/deposit/withdraw/redeem 4-way logic, the need for preview functions, etc. etc. At the same time, allowing vault IDs to be specified by the depositor allows much more granular and direct control over token movements within Raindex than either ERC4626 vault shares or mere contract-level ERC20 allowances can facilitate. Vault IDs are namespaced by the token address so there is no risk of collision between tokens. For example, vault ID 1 for token A is completely different to vault ID 1 for token B. `0` amount deposits are unsupported as underlying token contracts handle `0` value transfers differently and this would be a source of confusion. The Raindex MUST revert with `ZeroDepositAmount` if the amount is zero. Vault ID `0` is disallowed for deposits to avoid collision with vaultless orders. The Raindex MUST revert with `ZeroVaultId` if the vault ID is zero.\"},\"entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"`msg.sender` entasks the provided tasks. This DOES NOT return any values, and MUST NOT modify any vault balances. Presumably the expressions will modify some internal state associated with active orders. If ANY of the expressions revert, the entire transaction MUST revert.\"},\"maxFlashLoan(address)\":{\"notice\":\"There's no limit to the size of a flash loan from `Raindex` other than the current tokens deposited in `Raindex`.\"},\"orderExists(bytes32)\":{\"notice\":\"Returns true if the order exists, false otherwise.\"},\"quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))\":{\"notice\":\"Quotes the provided order for the caller. The caller is considered to be the counterparty to the order, for the purposes of evaluating the quote. However, the caller's vault balances and/or tokens in wallet are not considered in the quote. This means the output max can exceed what the caller could actually pay for. Both the output max and io ratio are returned as rain floating point values, ignoring any token decimals, so are not the literal amounts that would be moved in the order were it to clear.\"},\"removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"Order owner can remove their own orders. Delegated order removal is NOT supported and will revert. Removing an order multiple times or removing an order that never existed are valid, the event will be emitted and the transaction will complete with that order hash definitely, redundantly not live.\"},\"takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))\":{\"notice\":\"Allows `msg.sender` to attempt to fill a list of orders in sequence without needing to place their own order and clear them. This works like a market buy but against a specific set of orders. Every order will looped over and calculated individually then filled maximally until the request input/output limit is reached for the `msg.sender`. Whether the limit applies to input or output is determined by the `IOIsInput` flag in `TakeOrdersConfigV5`. The `msg.sender` is responsible for selecting the best orders at the time according to their criteria and MAY specify a maximum IO ratio to guard against an order spiking the ratio beyond what the `msg.sender` expected and is comfortable with. As orders may be removed and calculate their ratios dynamically, all issues fulfilling an order other than misconfiguration by the `msg.sender` are no-ops and DO NOT revert the transaction. This allows the `msg.sender` to optimistically provide a list of orders that they aren't sure will completely fill at a good price, and fallback to more reliable orders further down their list. Misconfiguration such as token mismatches are errors that revert as this is known and static at all times to the `msg.sender` so MUST be provided correctly. `msg.sender` MAY specify a minimum input/output that MUST be reached across all orders in the list, otherwise the transaction will revert, this MAY be set to zero. Exactly like withdraw, if there is an active flash loan for `msg.sender` they will have their outstanding loan reduced by the final input amount preferentially before sending any tokens. Notably this allows arb bots implemented as flash loan borrowers to connect orders against external liquidity directly by paying back the loan with a `takeOrders` call and outputting the result of the external trade. Rounding errors always favour the order never the `msg.sender`.\"},\"vaultBalance2(address,address,bytes32)\":{\"notice\":\"Get the current balance of a vault for a given owner, token and vault ID.\"},\"withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"Allows the sender to withdraw any tokens from their own vaults. If the withdrawer has an active flash loan debt denominated in the same token being withdrawn then Raindex will merely reduce the debt and NOT send the amount of tokens repaid to the flashloan debt. MUST revert if the amount _requested_ to withdraw is zero. The withdrawal MAY still not move any tokens (without revert) if the vault balance is zero, or the withdrawal is used to repay a flash loan, or due to any other internal accounting. Vault ID `0` is NOT supported due to collision with vaultless orders. The Raindex MUST revert with `ZeroVaultId` if the vault ID is zero.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/concrete/raindex/RaindexV6.sol\":\"RaindexV6\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/\",\":bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/\",\":caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/\",\":codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/\",\":forge-std-1.16.1/=dependencies/forge-std-1.16.1/\",\":mut/=dependencies/rain-string-0.2.0/src/lib/mut/\",\":ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/\",\":parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/\",\":rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/\",\":rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/\",\":rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/\",\":rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/\",\":rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/\",\":rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/\",\":rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/\",\":rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/\",\":rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/\",\":rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/\",\":rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/\",\":rain-string-0.2.0/=dependencies/rain-string-0.2.0/\",\":rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/\",\":raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/\",\":rainlang-0.1.2/=dependencies/rainlang-0.1.2/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC1271.sol\":{\"keccak256\":\"0x66c7ec42c6c43712be2107a50ab4529379bc76a632b425babec698d9da921ac6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dce2778f0b638adfc5ba29c2c618c855fe725fa74a16846386aa1d56a834aa04\",\"dweb:/ipfs/QmPV9oWnzQdi58od266j62xvviavLNHqKLZfm6k2K1qy9E\"]},\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC7913.sol\":{\"keccak256\":\"0xe5a126930df1d54e4a6dd5fea09010c4a7db0ea974c6c17a1e6082879f5a032b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f58f5a90328536a6c68289916bfa4ed653d871319c7b2a416ab3f6263c4f2f5\",\"dweb:/ipfs/Qmaa9DmgUA16Urz5fuF4RbFz2NaVpNLV41ddwykSdasFUd\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/LowLevelCall.sol\":{\"keccak256\":\"0x6ba3db1346fc75a832aa6cd075e12f6f1fa172fa2122a020f324c319fe5be75e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab92e9e1cb08144c43fa3a383a87c48f49a652d51156950b928c2a50bee6b3a5\",\"dweb:/ipfs/QmWeKkKZBgLDKgRFGKCzsKybYF7C8g9ysg5kU1b1p7QFBi\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Multicall.sol\":{\"keccak256\":\"0x72a5499dfae7676e4298a7299bccd3b27438ba1a4c72df5cd69c1c343c7ea20d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de0fb51ccae3a0ff377ed185d187440fc612a71bf8e42fdb0e032ce747fa3eef\",\"dweb:/ipfs/QmPNBaiVsAiUhz8qfXcSy27S7CqBbtSd8rPqmaykKBhw7Q\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99\",\"dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a\",\"dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c\",\"dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x0d53049a9969f2bc5cb88b32c909e2729a5fa157d258305b42b502427ad492c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eacca39a3f50c665454866342bb05f10cc1e87c2bbd73dda981a6a0de1978fb0\",\"dweb:/ipfs/QmbFKMUT5BXtCdA2SCof9GuasrVhoGzaLUQG3gUvGDtdoE\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/error/ErrBytecode.sol\":{\"keccak256\":\"0xf6a05d018ca9ad0ef0d820d5dd3bf5b2d95fef1871bb59a7adb5377087e3f515\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://10af6a331d8ba326a3c2c4a14ed634287e0a0eaf4b2e309417fc4abd336ba930\",\"dweb:/ipfs/QmcueNEd7CimGj61kNyU6rjhpJvFU4uks2wKn7xv918qUr\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterCallerV4.sol\":{\"keccak256\":\"0x2f6cef8ace7a23cf0cfd183f06434a0cde757cdc3841bf35e6633818176b0cf7\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://06b6c9ffd0f434322ed9a37124a080e15f7c50fd8a9188dedfd6b1383746ee67\",\"dweb:/ipfs/Qmd66LS1wHavvU78NqTMJStYhBgcnG87YgafmmkMvXocAU\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol\":{\"keccak256\":\"0x5b4e41f24180a170a75d6faa525e1d28008a3a4404319f24f184d4d46f8add32\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://3f02da25cac97067e6ac9f4dd9d6be7c2e7e81cb322dbeaaae69b14a11850885\",\"dweb:/ipfs/QmWF3K89HqJ8zjyV5Mj9wJrG9mzKycjz4fX7jFgGW8AaHy\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol\":{\"keccak256\":\"0xae59c4c50f38332d3ad5bd97c81a46f6a983c59a729bd2d2ed54bb6ee4cfbc96\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://82e4110f929a61b5fe31a7d1931f815db1751b5866efacfc3d602bd00527a01e\",\"dweb:/ipfs/QmTkq2yJNpXrDWQbPWoGxBuXFLgFW5P7jvcengwPi6NX5f\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/IParserV2.sol\":{\"keccak256\":\"0x0f2d27d13de9c9541af8d0c1645fd34ff0ab5f14578c888b1b19caef9e75de84\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://56e461e90605fb62459795b453c4692c33d06b031f86e717377a52d98d6e26c9\",\"dweb:/ipfs/QmPqRZwKuD77rvdqYMjsXw2TeSbHvgR1V7AVsV9yR18hNY\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV1.sol\":{\"keccak256\":\"0xc0afd50701cd68eef984a63862bd6a10552d704cca6e10f06d19d920b0777c98\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://cd3cbfa9159ceed8871f46f62c7ea235ad8537d3c6c1c004152ebf5d2d597346\",\"dweb:/ipfs/QmPSAJXAcmDeK9Qy6s2dXdeu4GJ62FKWa69VBo4ioCPcJ9\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV2.sol\":{\"keccak256\":\"0x368ace8d0f82832f08caf264e4194647b9777c0d4a0f22d88236b30c1e4c8a63\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://9c8a2141fcd76d6308156777b0a9e5a4f7f07fb3693461e2c12f07e4d8c87130\",\"dweb:/ipfs/QmPnhPz6sXzh5xBGZobAPY2WJTgvQDiYWRFKavscSPu7T5\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV3.sol\":{\"keccak256\":\"0x9390bbeb7064c8d109bd6d9f52f898001ec6168e016c84592268334f729bf6a6\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://dc5e7b4f0e56c6a009faf1cfaf1292bc5249ea3c6f233e9d78a132b883dfe375\",\"dweb:/ipfs/QmcMTVqHjVVXYmeCE11T13g5efUEsyzZfzhSyUYPxzrLZd\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV1.sol\":{\"keccak256\":\"0xc01bc48e2479cab07fc799e26c3790c8cf97acc1f0f490c8f456f554d239a505\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://2981aa2eae0d414bc8ad4105bedb05026cfdad7e6af8f23805dba4835ae9fd8a\",\"dweb:/ipfs/QmQRKi5nmatC1UM2sNta9giuJX3xvvLAD5pmCeAsVWF4hF\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV2.sol\":{\"keccak256\":\"0x2aefda534eba5dd939c8413a6703340433162617fc260a864f9cf59a51a40a6a\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://91b31176b1db3a60b6a8be337920844de3b2d3ddc91cc7b98615d104c5acf9d0\",\"dweb:/ipfs/QmQSaxmW9BdQS3h9HUds8NLKmNABCZxNm8doqowYDiSmTr\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterStoreV1.sol\":{\"keccak256\":\"0x7d2bc86fefbe372fc64381b320244fe9dbda1816867f3040c5bb3951869fe6a7\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://90c371494080129d5acd2bc52d092fc5cfe559147f7fc855ed01e62a7837f21e\",\"dweb:/ipfs/QmcNtPDuTxic8zqRFXf1ba6FJKmQXguxiDUY4E7wjyVwU5\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterV1.sol\":{\"keccak256\":\"0xe0b94c771a7b6aa05388b4db6e238e36a4653cbfdbd3e54bbcaa7a97fc9491f4\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://59887a7f2ef60669906c5e70831ac0c9a7345313b04efb306235280f85e1db73\",\"dweb:/ipfs/QmP6Ny9m3sPCP65UmgGGpucSMgVAoDv6qURqyxUE95VU5Q\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterV2.sol\":{\"keccak256\":\"0x51eb0d6a03bcdb3a428cfbb605d7176dc22d83886635b1c1818a46a4a303acf3\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://c4fbfdff3655dd567008b3a695ea2ed4f49cea641d8f17418e181e4f0d7d324b\",\"dweb:/ipfs/QmPkHRtPa4tg5n6rUykhNhFJz6xirGBjKLghL24JuRnjuY\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IParserV1.sol\":{\"keccak256\":\"0x4f6a9e028942cebebfc84328193f1d31807aac292d9b82e2df489064aa913070\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://54073f63db1f652571472cb2d07de297772c2420e1571a0cb9e0a805ee4347e7\",\"dweb:/ipfs/QmXRqBreJvC8MQd5zLNgmPUdfFa4WD6gSoxvD8hecycux4\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterCallerV3.sol\":{\"keccak256\":\"0xa5e225eeb94fa4fced8bc91b9a773e636746fcfd52edc4eb3e17f7a3d2204443\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://86d6f144228401c6b92b91d8cd9ade634e4a3a8d73cbae60e201c1ecd7930b75\",\"dweb:/ipfs/QmcSxtZsMxYhGk8pEMXUtGMAVSkg6p5ZiEQoaQ1bnBwEXd\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterStoreV2.sol\":{\"keccak256\":\"0x64575df513b2c6d9581e838961839101394bf59670ecede6988202c8714c0c15\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4718bdcadadf933f610023c21191808df0a51a55e94b5697d160a584ba2912d9\",\"dweb:/ipfs/QmR8R4TcnQ8iuxgTUuDTYzkXHmY2NaFe4aG3mTfcgmmGsM\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterV3.sol\":{\"keccak256\":\"0x9dba1f9fc1ecd10538291deb25f9648d1210789783b81bf354856fdcef79dddd\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://ac62f8bf27b60ade408487025de433d08d2c19ac5df79208ebf9f9fa545d0d70\",\"dweb:/ipfs/QmZiN2TNyMUgnSV14SaWWhh9d1Pgq1BLyHdDgpsqxdSQCH\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/LibBytecode.sol\":{\"keccak256\":\"0xcf9c3e536889eb270a4413aff2c81d6f0583dcb9fc0a941693cb708959fbb660\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://a5889bbd9377804c958f0cd305b6cfb5176c6790cb7cfd3eb2a9ca3d2fcafc54\",\"dweb:/ipfs/QmXxJ56xEth1g6m9FcvyZWLgfviB9Y5dCU38LoqVeapQBV\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/LibContext.sol\":{\"keccak256\":\"0xaf3f297895e9326325cef603992d18f97c1e882b8eaf9d8a305f94c0e295cfd2\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://1366426716ac1a1ba93e6a6293308f0bc47439ada01d0108f4b5df5af7c53e9a\",\"dweb:/ipfs/QmP5nY9Kho7qC2CMTbH7xannNoWrD2pgt4mvV1N7UdMe64\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/LibNamespace.sol\":{\"keccak256\":\"0x11b870c47abdaffddaee5e347b3345e801a0864d463ae8b39dd8ab82b1a4b12d\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://fc21868a4776119ecd93f8a503e07727e11ce3bc9aef14956da1af3759cebb74\",\"dweb:/ipfs/QmfVW5ajDBPdaC4nASs7shUL3qXjiJMVzzGouQK24CssNF\"]},\"dependencies/rain-lib-hash-0.1.0/src/LibHashNoAlloc.sol\":{\"keccak256\":\"0x207fd40cb0b9e598e50e06138c9da1450caadd595f700fa39ccba39f766eec00\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://df5edd1e0a782c2ce0da2213cd9b9cbf6be0e87f8fc915c26f2de558fb9df1ac\",\"dweb:/ipfs/QmbBsLMVRrKQRWSVpvkveKL1iQHPKZfhLQCtJBPmhBN74z\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrDecimalFloat.sol\":{\"keccak256\":\"0x46e95357504ffe0e2cdf7a7d962b509ebdf6f2c64e1c8b1accc608bdd8288971\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://65ec73f625fce3f9cf150472735c57e7f6a2260b53598c149a0a81ec677b9dd2\",\"dweb:/ipfs/QmZXmzqDkjNVTMNW8ZFPGLm1UnVfPnFN5ggpDSHPa9UjvQ\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrFormat.sol\":{\"keccak256\":\"0xc760cb6018291753e7408d55d12d5e66c116f9750dc241bbc201f3b46ae33aa7\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://cbc81bb7c26c8503926b579f978902bcc3227839bee04bd3500cc924d142d28e\",\"dweb:/ipfs/QmXqMuqBCpckD1EnsBjweyLdRZxpvC2xSP9FWBZFh2vztR\"]},\"dependencies/rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol\":{\"keccak256\":\"0x3f0f9e9b04e6fd4ca2a322da490a236eb91a0d22411a51ed1d1e606a72fcb1eb\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://d99f8025391108725dc490efccb834c25486d59adcd8c1450c62db89f08ed203\",\"dweb:/ipfs/QmcY4JXoK4qfuUWjaDDyWkEdyzZTFN5EjokutSMDidqHjU\"]},\"dependencies/rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol\":{\"keccak256\":\"0x5aac6382e7f7040e68600333c1b00b0aedb3edb6bced84b63783f6d88fe0b4f0\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://e96d30e34e1fa2cc4eb574ded30c0f6f93929dcc19cb571f555ca8c5ac32eaa7\",\"dweb:/ipfs/QmRRtk84AqEdQrRXfeTzVUAbAktJTZ92iTLqjocQV4PDx7\"]},\"dependencies/rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol\":{\"keccak256\":\"0x47d0eeb542875548689465407162a19e4a21fb4591af5bb48d5758c0d1b93634\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://631efb796ff17f277804f8a32df7d28630c2ae5300e7d74c37aa8ed1f86b5092\",\"dweb:/ipfs/QmSfmMGQyxKYxu8UrWDEtuCggQ9HtFJy5cbMsYLPZbcTZ7\"]},\"dependencies/rain-math-float-0.1.1/src/lib/table/LibLogTable.sol\":{\"keccak256\":\"0xccd2dea54cfb708c01e7e8e88c089742bbab18f5783be4632311fb4923d44c88\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://f45fb78c16b5d66d56ba0e78acdb0ca5d315eb05efa2cd7a81e191aabe7aec52\",\"dweb:/ipfs/QmQJ3TFFxTMu4HZ4qnjgmdmSNhGZLQRdCnSqAipEF1up1f\"]},\"dependencies/rain-metadata-0.1.0/src/interface/deprecated/IMetaV1.sol\":{\"keccak256\":\"0xf5047476cd14cac913f7efbb777cbdc2a25723188f9fd35f4e1a09ebbd656709\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://01d4ac845df8318e575bc0736e0711bc82a286bbd26802c27fe3b792a0275c04\",\"dweb:/ipfs/QmUEyBicusKtsWYYKR7cSpBXoyYRvRvVuBWAZ9KSFk81qK\"]},\"dependencies/rain-metadata-0.1.0/src/interface/unstable/IMetaV1_2.sol\":{\"keccak256\":\"0x4ca89e491c3c9ecdc9ad6c66b4b0a033208e64da69dee60a8a131c32fd845a0c\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://5ebcdb708565d937acb318ddbf357f981281711546134550823c5ee6a99701a6\",\"dweb:/ipfs/QmNwB8bME5eV7MuAaxQ79m4Kg1DGHY9xECSbcg3JZcSetT\"]},\"dependencies/rain-metadata-0.1.0/src/lib/LibMeta.sol\":{\"keccak256\":\"0xb924ea27ba17f3c5582475a854b572d7149a0088e06646663b15b3e4c1577d31\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://94d7f0a3e4704d25904e4e3d9df064a5fa5d0fecf96128fc3ab44d41a44e92ad\",\"dweb:/ipfs/QmYPR15FL8dXmbKjZK7Bq2qXbnno6eoj3SiXuuayLpB7Yh\"]},\"dependencies/rain-solmem-0.1.3/src/error/ErrBytes.sol\":{\"keccak256\":\"0xdec97437eeba42f5950dc52f89caac433bc11a56a4e14a0f67a521821600c4b6\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://72b96a4ed0d34dab653df0e6eb19d77b3e1c691b8e35543f6f32ae6a44c6312e\",\"dweb:/ipfs/QmNrwwf3La4D25DudigRedu2c7xfx8k7bEzHFVZfpRu3se\"]},\"dependencies/rain-solmem-0.1.3/src/error/ErrUint256Array.sol\":{\"keccak256\":\"0x57b7a7a5cbc2fc97200130e84fde3a8afc14e0729040b14670dacc7f63c3ac5f\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4e7c7ce525e882db437b488b590fae6a817b282f88d76eb4f56986b549815e57\",\"dweb:/ipfs/QmajzM26fsaFtaAnm5cg1FZrD6N2wkLJHCxa7Atx5x6iAB\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibBytes.sol\":{\"keccak256\":\"0x6497d17390179a62820805d18a2cf2cdfddbe4990df783bde11cbf82e414fd0e\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://54e8ed63c566d374ca2d89e8109c41267f7ca661e85570c6c7d51193aaca128b\",\"dweb:/ipfs/Qmd6LoUZqg7TbeAx2auk5UkimyMiK4a9GsVMvDeqDRZF3M\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibBytes32Array.sol\":{\"keccak256\":\"0x93a9a12fa9161523c8580196daf8e2bf59c48003166ef718f5fc07d47752aabe\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://f1d24979b4b1f94621f0bc0505f8aafbb845ac86f72323454b6e96b4e57fb367\",\"dweb:/ipfs/QmUD7hAfaNPPHUu9DjLaJrwrUrei8vfbyUoJcymbQeSsXE\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibBytes32Matrix.sol\":{\"keccak256\":\"0xffd4769d4d0f89d0de792c6d100384ec0262c55c5cf6b33432739e8c4c0edcf6\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://1c73e871d16e3b2f3498efb6b3235db19156e07cc71e9f0fbc3c6b0b4efe633a\",\"dweb:/ipfs/Qmeu91h2q8EdtAoPdRtKUsKL48VD16AUAU1ZXmt89iiuck\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibMemCpy.sol\":{\"keccak256\":\"0x3f0a1962829eed7af79d21ab1f84b1a3b4044d90114812871c9dde7ae6f5cf0a\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4b777f051eef0b83c1b1b6e3927faf683609522acbac9c5bba412cd482be3fef\",\"dweb:/ipfs/QmZrMNaEQBGeCM2L6bg5d8WBxPCSG1cwFD95AUQFVXzQXL\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibPointer.sol\":{\"keccak256\":\"0x3fc6ff807b57b681e32229380e3eda57107a1ada8dc2c1270daa84c9fca5addc\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://a82b17ddc1db163ec548648c83dd5bb2f9f4441559452933f424e0a8dff48e57\",\"dweb:/ipfs/QmdKoRbEAPxBRHJWWRwjh9Yrps1QXcJuX5mJmua8nvnq7B\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibUint256Array.sol\":{\"keccak256\":\"0xf51dffaeb88063748495e3184e335d9bb46f22881c2e8c930f2b68a32bdb39c2\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4a66ae9e4e9b9bf83b68c4d1d609fda02f8584387740354318d4eca1e2639047\",\"dweb:/ipfs/QmXTS3azQ3ebBpJzj15HJRjTLV8zHfrFPQ7qPiic6eE3Pa\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol\":{\"keccak256\":\"0xf58526ebebc0e51a84369ebe6fb1173930cea3a61a488b6b5a597406fc1216e0\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://75940e084457b62a7a38a2cfe920b0838c7c7517c914de64a5073fd01bdcedd8\",\"dweb:/ipfs/QmUZ1sm2EQMhiR2UzB4cY868t6XYpgAi62tr6xvwMtYDnQ\"]},\"dependencies/rain-tofu-erc20-decimals-0.1.1/src/interface/ITOFUTokenDecimals.sol\":{\"keccak256\":\"0x7de2ff896b50894cd33a8e743f2ff780bb3a1d7d97958332c4d04de103741b67\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://a9b6bfc712839ac6e846eb40ceed58d03a1f27cab75e4d07618dd7a936be00c8\",\"dweb:/ipfs/QmaHHeD3cvhrKzEXL8H479n1fhLRB1QubpDyGnQ1djisTF\"]},\"dependencies/rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol\":{\"keccak256\":\"0x56572c8c173e91a7f945964e14958c8c53d2f0a0fdf5ead9040a9a7f2c135a81\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://24cb36d2bea51e548d59beb8dc66772a3ef9612dd722860ccac1932c9f22965e\",\"dweb:/ipfs/QmZz9AQbf5rMtE4wuH4XGtCEe7eVWWazhM4TvoHYi4FfxH\"]},\"dependencies/raindex-interface-0.1.1/src/interface/IRaindexV6.sol\":{\"keccak256\":\"0xfcd3def463c87e0c7c7f488593d50a4e5206264977f51506f5df301f0617addb\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://60583d8718949a545ef959a61b014c1174df3b14333d26360dd56bd08eeadba9\",\"dweb:/ipfs/Qmc6eFNTL2yhtndJotQVSMGgWAZZeMmeTwiUq253UkZ39x\"]},\"dependencies/raindex-interface-0.1.1/src/interface/IRaindexV6OrderTaker.sol\":{\"keccak256\":\"0x5439db5d2e8e123ac5e7b0773dccef55f1c3a04794574ee042e58d5110076677\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://dc3165e61c2e70bd59dd0ffeb1063c1b25db4bed27fe5b2e0f386595ba44e589\",\"dweb:/ipfs/Qmc9BnTTSyBZYcuRqEqNNSmihcbc3WUAq8mpDG5ZRVAQca\"]},\"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v2/IOrderBookV2.sol\":{\"keccak256\":\"0x4b94e58f64eb8bd174ab9abc7441ff93d1b6a83e1d3649588fb4f6228ea8f1ed\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://033665cf3b6190d0233737f53a30787710302b424a87aa9f3d6bc5a3f08d22a4\",\"dweb:/ipfs/QmSFwbun5Rh9i5nANb4rRCkNv1TjKwWacQN18qa8UUgKDF\"]},\"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v3/IOrderBookV3.sol\":{\"keccak256\":\"0xfbb0fb468612db1a0d4500b08dd32789ec68eb1e3dd6ce8fae6d15ca16cfa534\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://b05814a23426d03f3576dee5236f370769b2523e66466afab36b1d1fe6213f8a\",\"dweb:/ipfs/Qmeh6qU6wUddAVMcQ69PEkHNeRrvcnCztZqJSV6Pj5J9nZ\"]},\"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v4/IOrderBookV4.sol\":{\"keccak256\":\"0xd5f71acf6d83c27049b5e9a7941e3bb08565cca5bbde6a085e13e843276ae739\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://85171211c18991e9da01f52690063fc31df20f131d95a44aafa9ddc4e09e43bb\",\"dweb:/ipfs/QmSnwz1zWFs6a3ZHAiMiU5QLHMM8WSTzA55QiVdULapar5\"]},\"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v5/IOrderBookV5.sol\":{\"keccak256\":\"0x769e662ac861e4c99b6ffec0ac76c87e0d29d144a2b1cb66aeb16c6aaf5d3354\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://71f52ea84bd0733b7a09853b5b1ac12ddfd678116ea435c1079d7f1fa8c4d052\",\"dweb:/ipfs/QmWyGBWHMEnPMuHgRNKTEW54tr5r5moFzn23VwzBC4ehZQ\"]},\"dependencies/raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0xdcd81b1110e9c3c91715ac90aef1da70066bcaba8aeb3dc23df979f7f87644f9\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://4572efaeb9eb30ad9b766b80cb2a8101a2cec0c9e8c78c7696f4aae710c8e2c9\",\"dweb:/ipfs/QmVsz1gtqWfxTAbsoLPvZBe6PBVXqaWNx6nu7RHr2ghLuK\"]},\"dependencies/raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashLender.sol\":{\"keccak256\":\"0x3a9b6a28d6ef355bc3052e88221439ede72980a2d661ec4a83eb16cff9f937ec\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://b56f7e7dbdf6a08c3704c247e4f8fc70e6eb8217ee3d01fbc1b9288737036e90\",\"dweb:/ipfs/QmRd5iihYVW2EyXnTe12CMY13pcyatVJwxTafQf854HG9z\"]},\"src/abstract/RaindexV6FlashLender.sol\":{\"keccak256\":\"0x7f6c0edc3628a3a3c726d53f55705733497c0120f287f060728652c03b23fa3c\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://388e284aee281fa614f4b1a360fa8bcdd35b54c05da423d1a30cb9441fd9926d\",\"dweb:/ipfs/QmbZiVs2rogY8kcNKYcEsdj7szKo7472WdTEMGKcsLAwoq\"]},\"src/concrete/raindex/RaindexV6.sol\":{\"keccak256\":\"0x67e507dc0dbe4b09d587e50c9affb0408818094ccf52f721d7a0165daf3e8df4\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://8da950478d9887a37d58e5cad814628a05a329371ffba3d7924e8d9dc33f2589\",\"dweb:/ipfs/QmcN2dtdqWvPLRVk5jp8AwjuyaJCshBuACuvq5dSrgbxsx\"]},\"src/lib/LibOrder.sol\":{\"keccak256\":\"0x899b3e2cdce954e82b0be9380c13b7f5fc723770576dabf0e725f0f131d6adba\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://0f7b8225814fc88831673471a42b516f23bcd4eca25f4e6e16eda43935fb0fff\",\"dweb:/ipfs/QmNzParypfDZ3oiSKYm4wAPM5cqAnpNPB6Vz2tFw3gLKF7\"]},\"src/lib/LibRaindex.sol\":{\"keccak256\":\"0x36dde21f4e324ed7af1bb8a9aa5e3d3805ee0cec6cf58f1414eaf3d5600f9c24\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://559198fa03bc34f98940f058dfbbd5460907d1c7bfe6e971bd29f94703938157\",\"dweb:/ipfs/QmTstHQ8fKUzuSQu3fLijWx6QXPLQbsHSeGPd8h7s6NnEV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"ClearZeroAmount"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"CoefficientOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"DivisionByZero"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"ExponentOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"ExponentUnderflow"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"type":"error","name":"FixedDecimalOverflow"},{"inputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"type":"error","name":"FlashLenderCallbackFailed"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"type":"error","name":"InvalidSignature"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"LossyConversionToFloat"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"MaximizeOverflow"},{"inputs":[{"internalType":"Float","name":"minimumIO","type":"bytes32"},{"internalType":"Float","name":"actualIO","type":"bytes32"}],"type":"error","name":"MinimumIO"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"type":"error","name":"MulDivOverflow"},{"inputs":[],"type":"error","name":"NegativeBounty"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"NegativeFixedDecimalConversion"},{"inputs":[],"type":"error","name":"NegativePull"},{"inputs":[],"type":"error","name":"NegativePush"},{"inputs":[{"internalType":"Float","name":"vaultBalance","type":"bytes32"}],"type":"error","name":"NegativeVaultBalance"},{"inputs":[{"internalType":"Float","name":"amount","type":"bytes32"}],"type":"error","name":"NegativeVaultBalanceChange"},{"inputs":[],"type":"error","name":"NoOrders"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"NotOrderOwner"},{"inputs":[{"internalType":"bytes","name":"unmeta","type":"bytes"}],"type":"error","name":"NotRainMetaV1"},{"inputs":[],"type":"error","name":"OrderNoHandleIO"},{"inputs":[],"type":"error","name":"OrderNoInputs"},{"inputs":[],"type":"error","name":"OrderNoOutputs"},{"inputs":[],"type":"error","name":"OrderNoSources"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SameOwner"},{"inputs":[{"internalType":"address","name":"expectedAddress","type":"address"}],"type":"error","name":"TOFUTokenDecimalsNotDeployed"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"enum TOFUOutcome","name":"tofuOutcome","type":"uint8"}],"type":"error","name":"TokenDecimalsReadFailure"},{"inputs":[],"type":"error","name":"TokenMismatch"},{"inputs":[],"type":"error","name":"TokenSelfTrade"},{"inputs":[{"internalType":"uint256","name":"outputs","type":"uint256"}],"type":"error","name":"UnsupportedCalculateOutputs"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}],"type":"error","name":"ZeroDepositAmount"},{"inputs":[],"type":"error","name":"ZeroMaximumIO"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"ZeroVaultId"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}],"type":"error","name":"ZeroWithdrawTargetAmount"},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false},{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"indexed":false}],"type":"event","name":"AddOrderV3","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"struct ClearStateChangeV2","name":"clearStateChange","type":"tuple","components":[{"internalType":"Float","name":"aliceOutput","type":"bytes32"},{"internalType":"Float","name":"bobOutput","type":"bytes32"},{"internalType":"Float","name":"aliceInput","type":"bytes32"},{"internalType":"Float","name":"bobInput","type":"bytes32"}],"indexed":false}],"type":"event","name":"AfterClearV2","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"struct OrderV4","name":"alice","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"indexed":false},{"internalType":"struct OrderV4","name":"bob","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"indexed":false},{"internalType":"struct ClearConfigV2","name":"clearConfig","type":"tuple","components":[{"internalType":"uint256","name":"aliceInputIOIndex","type":"uint256"},{"internalType":"uint256","name":"aliceOutputIOIndex","type":"uint256"},{"internalType":"uint256","name":"bobInputIOIndex","type":"uint256"},{"internalType":"uint256","name":"bobOutputIOIndex","type":"uint256"},{"internalType":"bytes32","name":"aliceBountyVaultId","type":"bytes32"},{"internalType":"bytes32","name":"bobBountyVaultId","type":"bytes32"}],"indexed":false}],"type":"event","name":"ClearV3","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes32[][]","name":"context","type":"bytes32[][]","indexed":false}],"type":"event","name":"ContextV2","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"bytes32","name":"vaultId","type":"bytes32","indexed":false},{"internalType":"uint256","name":"depositAmountUint256","type":"uint256","indexed":false}],"type":"event","name":"DepositV2","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes32","name":"subject","type":"bytes32","indexed":false},{"internalType":"bytes","name":"meta","type":"bytes","indexed":false}],"type":"event","name":"MetaV1_2","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false}],"type":"event","name":"OrderExceedsMaxRatio","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false}],"type":"event","name":"OrderNotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false}],"type":"event","name":"OrderZeroAmount","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false},{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"indexed":false}],"type":"event","name":"RemoveOrderV3","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"struct TakeOrderConfigV4","name":"config","type":"tuple","components":[{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"uint256","name":"inputIOIndex","type":"uint256"},{"internalType":"uint256","name":"outputIOIndex","type":"uint256"},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"indexed":false},{"internalType":"Float","name":"input","type":"bytes32","indexed":false},{"internalType":"Float","name":"output","type":"bytes32","indexed":false}],"type":"event","name":"TakeOrderV3","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"bytes32","name":"vaultId","type":"bytes32","indexed":false},{"internalType":"Float","name":"targetAmount","type":"bytes32","indexed":false},{"internalType":"Float","name":"withdrawAmount","type":"bytes32","indexed":false},{"internalType":"uint256","name":"withdrawAmountUint256","type":"uint256","indexed":false}],"type":"event","name":"WithdrawV2","anonymous":false},{"inputs":[{"internalType":"struct OrderConfigV4","name":"orderConfig","type":"tuple","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"},{"internalType":"bytes32","name":"secret","type":"bytes32"},{"internalType":"bytes","name":"meta","type":"bytes"}]},{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"addOrder4","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct OrderV4","name":"aliceOrder","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"struct OrderV4","name":"bobOrder","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"struct ClearConfigV2","name":"clearConfig","type":"tuple","components":[{"internalType":"uint256","name":"aliceInputIOIndex","type":"uint256"},{"internalType":"uint256","name":"aliceOutputIOIndex","type":"uint256"},{"internalType":"uint256","name":"bobInputIOIndex","type":"uint256"},{"internalType":"uint256","name":"bobOutputIOIndex","type":"uint256"},{"internalType":"bytes32","name":"aliceBountyVaultId","type":"bytes32"},{"internalType":"bytes32","name":"bobBountyVaultId","type":"bytes32"}]},{"internalType":"struct SignedContextV1[]","name":"aliceSignedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"bobSignedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"clear3"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"},{"internalType":"Float","name":"depositAmount","type":"bytes32"},{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"deposit4"},{"inputs":[{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"entask2"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}]},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"orderExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct QuoteV2","name":"quoteConfig","type":"tuple","components":[{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"uint256","name":"inputIOIndex","type":"uint256"},{"internalType":"uint256","name":"outputIOIndex","type":"uint256"},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"view","type":"function","name":"quote2","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"Float","name":"","type":"bytes32"},{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"removeOrder3","outputs":[{"internalType":"bool","name":"stateChanged","type":"bool"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct TakeOrdersConfigV5","name":"config","type":"tuple","components":[{"internalType":"Float","name":"minimumIO","type":"bytes32"},{"internalType":"Float","name":"maximumIO","type":"bytes32"},{"internalType":"Float","name":"maximumIORatio","type":"bytes32"},{"internalType":"bool","name":"IOIsInput","type":"bool"},{"internalType":"struct TakeOrderConfigV4[]","name":"orders","type":"tuple[]","components":[{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"uint256","name":"inputIOIndex","type":"uint256"},{"internalType":"uint256","name":"outputIOIndex","type":"uint256"},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"takeOrders4","outputs":[{"internalType":"Float","name":"totalTakerInput","type":"bytes32"},{"internalType":"Float","name":"totalTakerOutput","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"vaultBalance2","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"},{"internalType":"Float","name":"targetAmount","type":"bytes32"},{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"withdraw4"}],"devdoc":{"kind":"dev","methods":{"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"config":"All config required to build an `Order`.","tasks":"Additional tasks to run after the order is added. Order information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the order MUST NOT be added."},"returns":{"_0":"True if the order was added, false if it already existed."}},"clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])":{"params":{"alice":"Some order to clear.","aliceSignedContext":"Optional signed context that is relevant to A.","bob":"Another order to clear.","bobSignedContext":"Optional signed context that is relevant to B.","clearConfig":"Additional configuration for the clearance such as how to handle the bounty payment for the `msg.sender`."}},"deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"depositAmount":"The amount of tokens to deposit.","tasks":"Additional tasks to run after the deposit. Deposit information SHOULD be made available during evaluation in context. If ANY of the post tasks revert, the deposit MUST be reverted.","token":"The token to deposit.","vaultId":"The vault ID to deposit under."}},"entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"tasks":"The tasks to evaluate."}},"flashFee(address,uint256)":{"details":"The fee to be charged for a given loan.","params":{"amount":"The amount of tokens lent.","token":"The loan currency."},"returns":{"_0":"The amount of `token` to be charged for the loan, on top of the returned principal."}},"flashLoan(address,address,uint256,bytes)":{"details":"Initiate a flash loan.","params":{"amount":"The amount of tokens lent.","data":"Arbitrary data structure, intended to contain user-defined parameters.","receiver":"The receiver of the tokens in the loan, and the receiver of the callback.","token":"The loan currency."},"returns":{"_0":"True if the flash loan was successful."}},"maxFlashLoan(address)":{"details":"The amount of currency available to be lent.","params":{"token":"The loan currency."},"returns":{"_0":"The amount of `token` that can be borrowed."}},"multicall(bytes[])":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Receives and executes a batch of function calls on this contract."},"orderExists(bytes32)":{"params":{"orderHash":"The hash of the order to check."},"returns":{"_0":"True if the order exists, false otherwise."}},"quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))":{"params":{"quoteConfig":"The configuration for the quote."},"returns":{"_0":"True if the order exists, false otherwise.","_1":"The maximum output amount that the order could send. Is `0` if the order does not exist.","_2":"The input:output ratio of the order. Is `0` if the order does not exist."}},"removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"order":"The `Order` data exactly as it was added.","tasks":"Additional tasks to run after the order is removed. Order information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the order MUST NOT be removed."},"returns":{"stateChanged":"True if the order was removed, false if it did not exist."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))":{"params":{"config":"The constraints and list of orders to take, orders are processed sequentially in order as provided, there is NO ATTEMPT onchain to predict/filter/sort these orders other than evaluating them as provided. Inputs and outputs are from the perspective of `msg.sender` except for values specified by the orders themselves which are the from the perspective of that order."},"returns":{"totalTakerInput":"Total tokens sent to `msg.sender`, taken from order vaults processed.","totalTakerOutput":"Total tokens taken from `msg.sender` and distributed between vaults."}},"vaultBalance2(address,address,bytes32)":{"params":{"owner":"The owner of the vault.","token":"The token the vault is for.","vaultId":"The vault ID to read."},"returns":{"_0":"The current balance of the vault."}},"withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"targetAmount":"The amount of tokens to attempt to withdraw. MAY result in fewer tokens withdrawn if the vault balance is lower than the target amount. MAY NOT be zero, the Raindex MUST revert with `ZeroWithdrawTargetAmount` if the amount is zero.","tasks":"Additional tasks to run after the withdraw. Withdraw information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the withdraw MUST be reverted.","token":"The token to withdraw.","vaultId":"The vault ID to withdraw from."}}},"version":1},"userdoc":{"kind":"user","methods":{"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"Given an order config, deploys the expression and builds the full `Order` for the config, then records it as an active order. Delegated adding an order is NOT supported. The `msg.sender` that adds an order is ALWAYS the owner and all resulting vault movements are their own. MUST revert with `OrderNoSources` if the order has no associated calculation and `OrderNoHandleIO` if the order has no handle IO entrypoint. The calculation MUST return at least two values from evaluation, the maximum amount and the IO ratio. The handle IO entrypoint SHOULD return zero values from evaluation. Either MAY revert during evaluation on the interpreter, which MUST prevent the order from clearing. MUST revert with `OrderNoInputs` if the order has no inputs. MUST revert with `OrderNoOutputs` if the order has no outputs. If the order already exists, the Raindex MUST NOT change state, which includes not emitting an event. Instead it MUST return false. If the Raindex modifies state it MUST emit an `AddOrderV3` event and return true. If vault ID is `0` for any input or output, this indicates a vaultless order for that token. Vaultless orders draw from or pay to the order's owner's wallet directly rather than any internal vault."},"clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])":{"notice":"Allows `msg.sender` to match two live orders placed earlier by non-interactive parties and claim a bounty in the process. The clearer is free to select any two live orders on the Raindex for matching and as long as they have compatible tokens, ratios and amounts, the orders will clear. Clearing the orders DOES NOT remove them from the Raindex, they remain live until explicitly removed by their owner. Even if the input vault balances are completely emptied, the orders remain live until removed. This allows order owners to deploy a strategy over a long period of time and periodically top up the input vaults. Clearing two orders from the same owner is disallowed. Any mismatch in the ratios between the two orders will cause either more inputs than there are available outputs (transaction will revert) or less inputs than there are available outputs. In the latter case the excess outputs are given to the `msg.sender` of clear, to the vaults they specify in the clear config. This not only incentivises \"automatic\" clear calls for both alice and bob, but incentivises _prioritising greater ratio differences_ with a larger bounty. The second point is important because it implicitly prioritises orders that are further from the current market price, thus putting constant increasing pressure on the entire system the further it drifts from the norm, no matter how esoteric the individual order expressions and sizings might be. All else equal there are several factors that would impact how reliably some order clears relative to the wider market, such as: - Bounties are effectively percentages of cleared amounts so larger orders have larger bounties and cover gas costs more easily - High gas on the network means that orders are harder to clear profitably so the negative spread of the ratios will need to be larger - Complex and stateful expressions cost more gas to evalulate so the negative spread will need to be larger - Erratic behavior of the order owner could reduce the willingness of third parties to interact if it could result in wasted gas due to orders suddently being removed before clearance etc. - Dynamic and highly volatile words used in the expression could be ignored or low priority by clearers who want to be sure that they can accurately predict the ratios that they include in their clearance - Geopolitical issues such as sanctions and regulatory restrictions could cause issues for certain owners and clearers"},"deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"`msg.sender` deposits tokens according to config. The config specifies the vault to deposit tokens under. Delegated depositing is NOT supported. Depositing DOES NOT mint shares (unlike ERC4626) so the overall vaulted experience is much simpler as there is always a 1:1 relationship between deposited assets and vault balances globally and individually. This mitigates rounding/dust issues, speculative behaviour on derived assets, possible regulatory issues re: whether a vault share is a security, code bloat on the vault, complex mint/deposit/withdraw/redeem 4-way logic, the need for preview functions, etc. etc. At the same time, allowing vault IDs to be specified by the depositor allows much more granular and direct control over token movements within Raindex than either ERC4626 vault shares or mere contract-level ERC20 allowances can facilitate. Vault IDs are namespaced by the token address so there is no risk of collision between tokens. For example, vault ID 1 for token A is completely different to vault ID 1 for token B. `0` amount deposits are unsupported as underlying token contracts handle `0` value transfers differently and this would be a source of confusion. The Raindex MUST revert with `ZeroDepositAmount` if the amount is zero. Vault ID `0` is disallowed for deposits to avoid collision with vaultless orders. The Raindex MUST revert with `ZeroVaultId` if the vault ID is zero."},"entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"`msg.sender` entasks the provided tasks. This DOES NOT return any values, and MUST NOT modify any vault balances. Presumably the expressions will modify some internal state associated with active orders. If ANY of the expressions revert, the entire transaction MUST revert."},"maxFlashLoan(address)":{"notice":"There's no limit to the size of a flash loan from `Raindex` other than the current tokens deposited in `Raindex`."},"orderExists(bytes32)":{"notice":"Returns true if the order exists, false otherwise."},"quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))":{"notice":"Quotes the provided order for the caller. The caller is considered to be the counterparty to the order, for the purposes of evaluating the quote. However, the caller's vault balances and/or tokens in wallet are not considered in the quote. This means the output max can exceed what the caller could actually pay for. Both the output max and io ratio are returned as rain floating point values, ignoring any token decimals, so are not the literal amounts that would be moved in the order were it to clear."},"removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"Order owner can remove their own orders. Delegated order removal is NOT supported and will revert. Removing an order multiple times or removing an order that never existed are valid, the event will be emitted and the transaction will complete with that order hash definitely, redundantly not live."},"takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))":{"notice":"Allows `msg.sender` to attempt to fill a list of orders in sequence without needing to place their own order and clear them. This works like a market buy but against a specific set of orders. Every order will looped over and calculated individually then filled maximally until the request input/output limit is reached for the `msg.sender`. Whether the limit applies to input or output is determined by the `IOIsInput` flag in `TakeOrdersConfigV5`. The `msg.sender` is responsible for selecting the best orders at the time according to their criteria and MAY specify a maximum IO ratio to guard against an order spiking the ratio beyond what the `msg.sender` expected and is comfortable with. As orders may be removed and calculate their ratios dynamically, all issues fulfilling an order other than misconfiguration by the `msg.sender` are no-ops and DO NOT revert the transaction. This allows the `msg.sender` to optimistically provide a list of orders that they aren't sure will completely fill at a good price, and fallback to more reliable orders further down their list. Misconfiguration such as token mismatches are errors that revert as this is known and static at all times to the `msg.sender` so MUST be provided correctly. `msg.sender` MAY specify a minimum input/output that MUST be reached across all orders in the list, otherwise the transaction will revert, this MAY be set to zero. Exactly like withdraw, if there is an active flash loan for `msg.sender` they will have their outstanding loan reduced by the final input amount preferentially before sending any tokens. Notably this allows arb bots implemented as flash loan borrowers to connect orders against external liquidity directly by paying back the loan with a `takeOrders` call and outputting the result of the external trade. Rounding errors always favour the order never the `msg.sender`."},"vaultBalance2(address,address,bytes32)":{"notice":"Get the current balance of a vault for a given owner, token and vault ID."},"withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"Allows the sender to withdraw any tokens from their own vaults. If the withdrawer has an active flash loan debt denominated in the same token being withdrawn then Raindex will merely reduce the debt and NOT send the amount of tokens repaid to the flashloan debt. MUST revert if the amount _requested_ to withdraw is zero. The withdrawal MAY still not move any tokens (without revert) if the vault balance is zero, or the withdrawal is used to repay a flash loan, or due to any other internal accounting. Vault ID `0` is NOT supported due to collision with vaultless orders. The Raindex MUST revert with `ZeroVaultId` if the vault ID is zero."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/","bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/","caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/","codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/","forge-std-1.16.1/=dependencies/forge-std-1.16.1/","mut/=dependencies/rain-string-0.2.0/src/lib/mut/","ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/","parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/","rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/","rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/","rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/","rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/","rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/","rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/","rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/","rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/","rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/","rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/","rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/","rain-string-0.2.0/=dependencies/rain-string-0.2.0/","rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/","raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/","rainlang-0.1.2/=dependencies/rainlang-0.1.2/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/concrete/raindex/RaindexV6.sol":"RaindexV6"},"evmVersion":"cancun","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC1271.sol":{"keccak256":"0x66c7ec42c6c43712be2107a50ab4529379bc76a632b425babec698d9da921ac6","urls":["bzz-raw://dce2778f0b638adfc5ba29c2c618c855fe725fa74a16846386aa1d56a834aa04","dweb:/ipfs/QmPV9oWnzQdi58od266j62xvviavLNHqKLZfm6k2K1qy9E"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC7913.sol":{"keccak256":"0xe5a126930df1d54e4a6dd5fea09010c4a7db0ea974c6c17a1e6082879f5a032b","urls":["bzz-raw://2f58f5a90328536a6c68289916bfa4ed653d871319c7b2a416ab3f6263c4f2f5","dweb:/ipfs/Qmaa9DmgUA16Urz5fuF4RbFz2NaVpNLV41ddwykSdasFUd"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098","urls":["bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0","dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Address.sol":{"keccak256":"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346","urls":["bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710","dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/LowLevelCall.sol":{"keccak256":"0x6ba3db1346fc75a832aa6cd075e12f6f1fa172fa2122a020f324c319fe5be75e","urls":["bzz-raw://ab92e9e1cb08144c43fa3a383a87c48f49a652d51156950b928c2a50bee6b3a5","dweb:/ipfs/QmWeKkKZBgLDKgRFGKCzsKybYF7C8g9ysg5kU1b1p7QFBi"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Multicall.sol":{"keccak256":"0x72a5499dfae7676e4298a7299bccd3b27438ba1a4c72df5cd69c1c343c7ea20d","urls":["bzz-raw://de0fb51ccae3a0ff377ed185d187440fc612a71bf8e42fdb0e032ce747fa3eef","dweb:/ipfs/QmPNBaiVsAiUhz8qfXcSy27S7CqBbtSd8rPqmaykKBhw7Q"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/ReentrancyGuard.sol":{"keccak256":"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53","urls":["bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99","dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/ECDSA.sol":{"keccak256":"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40","urls":["bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a","dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d","urls":["bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c","dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x0d53049a9969f2bc5cb88b32c909e2729a5fa157d258305b42b502427ad492c6","urls":["bzz-raw://eacca39a3f50c665454866342bb05f10cc1e87c2bbd73dda981a6a0de1978fb0","dweb:/ipfs/QmbFKMUT5BXtCdA2SCof9GuasrVhoGzaLUQG3gUvGDtdoE"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"dependencies/rain-interpreter-interface-0.1.0/src/error/ErrBytecode.sol":{"keccak256":"0xf6a05d018ca9ad0ef0d820d5dd3bf5b2d95fef1871bb59a7adb5377087e3f515","urls":["bzz-raw://10af6a331d8ba326a3c2c4a14ed634287e0a0eaf4b2e309417fc4abd336ba930","dweb:/ipfs/QmcueNEd7CimGj61kNyU6rjhpJvFU4uks2wKn7xv918qUr"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterCallerV4.sol":{"keccak256":"0x2f6cef8ace7a23cf0cfd183f06434a0cde757cdc3841bf35e6633818176b0cf7","urls":["bzz-raw://06b6c9ffd0f434322ed9a37124a080e15f7c50fd8a9188dedfd6b1383746ee67","dweb:/ipfs/Qmd66LS1wHavvU78NqTMJStYhBgcnG87YgafmmkMvXocAU"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol":{"keccak256":"0x5b4e41f24180a170a75d6faa525e1d28008a3a4404319f24f184d4d46f8add32","urls":["bzz-raw://3f02da25cac97067e6ac9f4dd9d6be7c2e7e81cb322dbeaaae69b14a11850885","dweb:/ipfs/QmWF3K89HqJ8zjyV5Mj9wJrG9mzKycjz4fX7jFgGW8AaHy"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol":{"keccak256":"0xae59c4c50f38332d3ad5bd97c81a46f6a983c59a729bd2d2ed54bb6ee4cfbc96","urls":["bzz-raw://82e4110f929a61b5fe31a7d1931f815db1751b5866efacfc3d602bd00527a01e","dweb:/ipfs/QmTkq2yJNpXrDWQbPWoGxBuXFLgFW5P7jvcengwPi6NX5f"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/IParserV2.sol":{"keccak256":"0x0f2d27d13de9c9541af8d0c1645fd34ff0ab5f14578c888b1b19caef9e75de84","urls":["bzz-raw://56e461e90605fb62459795b453c4692c33d06b031f86e717377a52d98d6e26c9","dweb:/ipfs/QmPqRZwKuD77rvdqYMjsXw2TeSbHvgR1V7AVsV9yR18hNY"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV1.sol":{"keccak256":"0xc0afd50701cd68eef984a63862bd6a10552d704cca6e10f06d19d920b0777c98","urls":["bzz-raw://cd3cbfa9159ceed8871f46f62c7ea235ad8537d3c6c1c004152ebf5d2d597346","dweb:/ipfs/QmPSAJXAcmDeK9Qy6s2dXdeu4GJ62FKWa69VBo4ioCPcJ9"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV2.sol":{"keccak256":"0x368ace8d0f82832f08caf264e4194647b9777c0d4a0f22d88236b30c1e4c8a63","urls":["bzz-raw://9c8a2141fcd76d6308156777b0a9e5a4f7f07fb3693461e2c12f07e4d8c87130","dweb:/ipfs/QmPnhPz6sXzh5xBGZobAPY2WJTgvQDiYWRFKavscSPu7T5"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV3.sol":{"keccak256":"0x9390bbeb7064c8d109bd6d9f52f898001ec6168e016c84592268334f729bf6a6","urls":["bzz-raw://dc5e7b4f0e56c6a009faf1cfaf1292bc5249ea3c6f233e9d78a132b883dfe375","dweb:/ipfs/QmcMTVqHjVVXYmeCE11T13g5efUEsyzZfzhSyUYPxzrLZd"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV1.sol":{"keccak256":"0xc01bc48e2479cab07fc799e26c3790c8cf97acc1f0f490c8f456f554d239a505","urls":["bzz-raw://2981aa2eae0d414bc8ad4105bedb05026cfdad7e6af8f23805dba4835ae9fd8a","dweb:/ipfs/QmQRKi5nmatC1UM2sNta9giuJX3xvvLAD5pmCeAsVWF4hF"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV2.sol":{"keccak256":"0x2aefda534eba5dd939c8413a6703340433162617fc260a864f9cf59a51a40a6a","urls":["bzz-raw://91b31176b1db3a60b6a8be337920844de3b2d3ddc91cc7b98615d104c5acf9d0","dweb:/ipfs/QmQSaxmW9BdQS3h9HUds8NLKmNABCZxNm8doqowYDiSmTr"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterStoreV1.sol":{"keccak256":"0x7d2bc86fefbe372fc64381b320244fe9dbda1816867f3040c5bb3951869fe6a7","urls":["bzz-raw://90c371494080129d5acd2bc52d092fc5cfe559147f7fc855ed01e62a7837f21e","dweb:/ipfs/QmcNtPDuTxic8zqRFXf1ba6FJKmQXguxiDUY4E7wjyVwU5"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterV1.sol":{"keccak256":"0xe0b94c771a7b6aa05388b4db6e238e36a4653cbfdbd3e54bbcaa7a97fc9491f4","urls":["bzz-raw://59887a7f2ef60669906c5e70831ac0c9a7345313b04efb306235280f85e1db73","dweb:/ipfs/QmP6Ny9m3sPCP65UmgGGpucSMgVAoDv6qURqyxUE95VU5Q"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterV2.sol":{"keccak256":"0x51eb0d6a03bcdb3a428cfbb605d7176dc22d83886635b1c1818a46a4a303acf3","urls":["bzz-raw://c4fbfdff3655dd567008b3a695ea2ed4f49cea641d8f17418e181e4f0d7d324b","dweb:/ipfs/QmPkHRtPa4tg5n6rUykhNhFJz6xirGBjKLghL24JuRnjuY"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IParserV1.sol":{"keccak256":"0x4f6a9e028942cebebfc84328193f1d31807aac292d9b82e2df489064aa913070","urls":["bzz-raw://54073f63db1f652571472cb2d07de297772c2420e1571a0cb9e0a805ee4347e7","dweb:/ipfs/QmXRqBreJvC8MQd5zLNgmPUdfFa4WD6gSoxvD8hecycux4"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterCallerV3.sol":{"keccak256":"0xa5e225eeb94fa4fced8bc91b9a773e636746fcfd52edc4eb3e17f7a3d2204443","urls":["bzz-raw://86d6f144228401c6b92b91d8cd9ade634e4a3a8d73cbae60e201c1ecd7930b75","dweb:/ipfs/QmcSxtZsMxYhGk8pEMXUtGMAVSkg6p5ZiEQoaQ1bnBwEXd"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterStoreV2.sol":{"keccak256":"0x64575df513b2c6d9581e838961839101394bf59670ecede6988202c8714c0c15","urls":["bzz-raw://4718bdcadadf933f610023c21191808df0a51a55e94b5697d160a584ba2912d9","dweb:/ipfs/QmR8R4TcnQ8iuxgTUuDTYzkXHmY2NaFe4aG3mTfcgmmGsM"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterV3.sol":{"keccak256":"0x9dba1f9fc1ecd10538291deb25f9648d1210789783b81bf354856fdcef79dddd","urls":["bzz-raw://ac62f8bf27b60ade408487025de433d08d2c19ac5df79208ebf9f9fa545d0d70","dweb:/ipfs/QmZiN2TNyMUgnSV14SaWWhh9d1Pgq1BLyHdDgpsqxdSQCH"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/LibBytecode.sol":{"keccak256":"0xcf9c3e536889eb270a4413aff2c81d6f0583dcb9fc0a941693cb708959fbb660","urls":["bzz-raw://a5889bbd9377804c958f0cd305b6cfb5176c6790cb7cfd3eb2a9ca3d2fcafc54","dweb:/ipfs/QmXxJ56xEth1g6m9FcvyZWLgfviB9Y5dCU38LoqVeapQBV"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/LibContext.sol":{"keccak256":"0xaf3f297895e9326325cef603992d18f97c1e882b8eaf9d8a305f94c0e295cfd2","urls":["bzz-raw://1366426716ac1a1ba93e6a6293308f0bc47439ada01d0108f4b5df5af7c53e9a","dweb:/ipfs/QmP5nY9Kho7qC2CMTbH7xannNoWrD2pgt4mvV1N7UdMe64"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/LibNamespace.sol":{"keccak256":"0x11b870c47abdaffddaee5e347b3345e801a0864d463ae8b39dd8ab82b1a4b12d","urls":["bzz-raw://fc21868a4776119ecd93f8a503e07727e11ce3bc9aef14956da1af3759cebb74","dweb:/ipfs/QmfVW5ajDBPdaC4nASs7shUL3qXjiJMVzzGouQK24CssNF"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-lib-hash-0.1.0/src/LibHashNoAlloc.sol":{"keccak256":"0x207fd40cb0b9e598e50e06138c9da1450caadd595f700fa39ccba39f766eec00","urls":["bzz-raw://df5edd1e0a782c2ce0da2213cd9b9cbf6be0e87f8fc915c26f2de558fb9df1ac","dweb:/ipfs/QmbBsLMVRrKQRWSVpvkveKL1iQHPKZfhLQCtJBPmhBN74z"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrDecimalFloat.sol":{"keccak256":"0x46e95357504ffe0e2cdf7a7d962b509ebdf6f2c64e1c8b1accc608bdd8288971","urls":["bzz-raw://65ec73f625fce3f9cf150472735c57e7f6a2260b53598c149a0a81ec677b9dd2","dweb:/ipfs/QmZXmzqDkjNVTMNW8ZFPGLm1UnVfPnFN5ggpDSHPa9UjvQ"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrFormat.sol":{"keccak256":"0xc760cb6018291753e7408d55d12d5e66c116f9750dc241bbc201f3b46ae33aa7","urls":["bzz-raw://cbc81bb7c26c8503926b579f978902bcc3227839bee04bd3500cc924d142d28e","dweb:/ipfs/QmXqMuqBCpckD1EnsBjweyLdRZxpvC2xSP9FWBZFh2vztR"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol":{"keccak256":"0x3f0f9e9b04e6fd4ca2a322da490a236eb91a0d22411a51ed1d1e606a72fcb1eb","urls":["bzz-raw://d99f8025391108725dc490efccb834c25486d59adcd8c1450c62db89f08ed203","dweb:/ipfs/QmcY4JXoK4qfuUWjaDDyWkEdyzZTFN5EjokutSMDidqHjU"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol":{"keccak256":"0x5aac6382e7f7040e68600333c1b00b0aedb3edb6bced84b63783f6d88fe0b4f0","urls":["bzz-raw://e96d30e34e1fa2cc4eb574ded30c0f6f93929dcc19cb571f555ca8c5ac32eaa7","dweb:/ipfs/QmRRtk84AqEdQrRXfeTzVUAbAktJTZ92iTLqjocQV4PDx7"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol":{"keccak256":"0x47d0eeb542875548689465407162a19e4a21fb4591af5bb48d5758c0d1b93634","urls":["bzz-raw://631efb796ff17f277804f8a32df7d28630c2ae5300e7d74c37aa8ed1f86b5092","dweb:/ipfs/QmSfmMGQyxKYxu8UrWDEtuCggQ9HtFJy5cbMsYLPZbcTZ7"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/table/LibLogTable.sol":{"keccak256":"0xccd2dea54cfb708c01e7e8e88c089742bbab18f5783be4632311fb4923d44c88","urls":["bzz-raw://f45fb78c16b5d66d56ba0e78acdb0ca5d315eb05efa2cd7a81e191aabe7aec52","dweb:/ipfs/QmQJ3TFFxTMu4HZ4qnjgmdmSNhGZLQRdCnSqAipEF1up1f"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-metadata-0.1.0/src/interface/deprecated/IMetaV1.sol":{"keccak256":"0xf5047476cd14cac913f7efbb777cbdc2a25723188f9fd35f4e1a09ebbd656709","urls":["bzz-raw://01d4ac845df8318e575bc0736e0711bc82a286bbd26802c27fe3b792a0275c04","dweb:/ipfs/QmUEyBicusKtsWYYKR7cSpBXoyYRvRvVuBWAZ9KSFk81qK"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-metadata-0.1.0/src/interface/unstable/IMetaV1_2.sol":{"keccak256":"0x4ca89e491c3c9ecdc9ad6c66b4b0a033208e64da69dee60a8a131c32fd845a0c","urls":["bzz-raw://5ebcdb708565d937acb318ddbf357f981281711546134550823c5ee6a99701a6","dweb:/ipfs/QmNwB8bME5eV7MuAaxQ79m4Kg1DGHY9xECSbcg3JZcSetT"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-metadata-0.1.0/src/lib/LibMeta.sol":{"keccak256":"0xb924ea27ba17f3c5582475a854b572d7149a0088e06646663b15b3e4c1577d31","urls":["bzz-raw://94d7f0a3e4704d25904e4e3d9df064a5fa5d0fecf96128fc3ab44d41a44e92ad","dweb:/ipfs/QmYPR15FL8dXmbKjZK7Bq2qXbnno6eoj3SiXuuayLpB7Yh"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/error/ErrBytes.sol":{"keccak256":"0xdec97437eeba42f5950dc52f89caac433bc11a56a4e14a0f67a521821600c4b6","urls":["bzz-raw://72b96a4ed0d34dab653df0e6eb19d77b3e1c691b8e35543f6f32ae6a44c6312e","dweb:/ipfs/QmNrwwf3La4D25DudigRedu2c7xfx8k7bEzHFVZfpRu3se"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/error/ErrUint256Array.sol":{"keccak256":"0x57b7a7a5cbc2fc97200130e84fde3a8afc14e0729040b14670dacc7f63c3ac5f","urls":["bzz-raw://4e7c7ce525e882db437b488b590fae6a817b282f88d76eb4f56986b549815e57","dweb:/ipfs/QmajzM26fsaFtaAnm5cg1FZrD6N2wkLJHCxa7Atx5x6iAB"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibBytes.sol":{"keccak256":"0x6497d17390179a62820805d18a2cf2cdfddbe4990df783bde11cbf82e414fd0e","urls":["bzz-raw://54e8ed63c566d374ca2d89e8109c41267f7ca661e85570c6c7d51193aaca128b","dweb:/ipfs/Qmd6LoUZqg7TbeAx2auk5UkimyMiK4a9GsVMvDeqDRZF3M"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibBytes32Array.sol":{"keccak256":"0x93a9a12fa9161523c8580196daf8e2bf59c48003166ef718f5fc07d47752aabe","urls":["bzz-raw://f1d24979b4b1f94621f0bc0505f8aafbb845ac86f72323454b6e96b4e57fb367","dweb:/ipfs/QmUD7hAfaNPPHUu9DjLaJrwrUrei8vfbyUoJcymbQeSsXE"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibBytes32Matrix.sol":{"keccak256":"0xffd4769d4d0f89d0de792c6d100384ec0262c55c5cf6b33432739e8c4c0edcf6","urls":["bzz-raw://1c73e871d16e3b2f3498efb6b3235db19156e07cc71e9f0fbc3c6b0b4efe633a","dweb:/ipfs/Qmeu91h2q8EdtAoPdRtKUsKL48VD16AUAU1ZXmt89iiuck"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibMemCpy.sol":{"keccak256":"0x3f0a1962829eed7af79d21ab1f84b1a3b4044d90114812871c9dde7ae6f5cf0a","urls":["bzz-raw://4b777f051eef0b83c1b1b6e3927faf683609522acbac9c5bba412cd482be3fef","dweb:/ipfs/QmZrMNaEQBGeCM2L6bg5d8WBxPCSG1cwFD95AUQFVXzQXL"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibPointer.sol":{"keccak256":"0x3fc6ff807b57b681e32229380e3eda57107a1ada8dc2c1270daa84c9fca5addc","urls":["bzz-raw://a82b17ddc1db163ec548648c83dd5bb2f9f4441559452933f424e0a8dff48e57","dweb:/ipfs/QmdKoRbEAPxBRHJWWRwjh9Yrps1QXcJuX5mJmua8nvnq7B"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibUint256Array.sol":{"keccak256":"0xf51dffaeb88063748495e3184e335d9bb46f22881c2e8c930f2b68a32bdb39c2","urls":["bzz-raw://4a66ae9e4e9b9bf83b68c4d1d609fda02f8584387740354318d4eca1e2639047","dweb:/ipfs/QmXTS3azQ3ebBpJzj15HJRjTLV8zHfrFPQ7qPiic6eE3Pa"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol":{"keccak256":"0xf58526ebebc0e51a84369ebe6fb1173930cea3a61a488b6b5a597406fc1216e0","urls":["bzz-raw://75940e084457b62a7a38a2cfe920b0838c7c7517c914de64a5073fd01bdcedd8","dweb:/ipfs/QmUZ1sm2EQMhiR2UzB4cY868t6XYpgAi62tr6xvwMtYDnQ"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-tofu-erc20-decimals-0.1.1/src/interface/ITOFUTokenDecimals.sol":{"keccak256":"0x7de2ff896b50894cd33a8e743f2ff780bb3a1d7d97958332c4d04de103741b67","urls":["bzz-raw://a9b6bfc712839ac6e846eb40ceed58d03a1f27cab75e4d07618dd7a936be00c8","dweb:/ipfs/QmaHHeD3cvhrKzEXL8H479n1fhLRB1QubpDyGnQ1djisTF"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol":{"keccak256":"0x56572c8c173e91a7f945964e14958c8c53d2f0a0fdf5ead9040a9a7f2c135a81","urls":["bzz-raw://24cb36d2bea51e548d59beb8dc66772a3ef9612dd722860ccac1932c9f22965e","dweb:/ipfs/QmZz9AQbf5rMtE4wuH4XGtCEe7eVWWazhM4TvoHYi4FfxH"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/IRaindexV6.sol":{"keccak256":"0xfcd3def463c87e0c7c7f488593d50a4e5206264977f51506f5df301f0617addb","urls":["bzz-raw://60583d8718949a545ef959a61b014c1174df3b14333d26360dd56bd08eeadba9","dweb:/ipfs/Qmc6eFNTL2yhtndJotQVSMGgWAZZeMmeTwiUq253UkZ39x"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/IRaindexV6OrderTaker.sol":{"keccak256":"0x5439db5d2e8e123ac5e7b0773dccef55f1c3a04794574ee042e58d5110076677","urls":["bzz-raw://dc3165e61c2e70bd59dd0ffeb1063c1b25db4bed27fe5b2e0f386595ba44e589","dweb:/ipfs/Qmc9BnTTSyBZYcuRqEqNNSmihcbc3WUAq8mpDG5ZRVAQca"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v2/IOrderBookV2.sol":{"keccak256":"0x4b94e58f64eb8bd174ab9abc7441ff93d1b6a83e1d3649588fb4f6228ea8f1ed","urls":["bzz-raw://033665cf3b6190d0233737f53a30787710302b424a87aa9f3d6bc5a3f08d22a4","dweb:/ipfs/QmSFwbun5Rh9i5nANb4rRCkNv1TjKwWacQN18qa8UUgKDF"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v3/IOrderBookV3.sol":{"keccak256":"0xfbb0fb468612db1a0d4500b08dd32789ec68eb1e3dd6ce8fae6d15ca16cfa534","urls":["bzz-raw://b05814a23426d03f3576dee5236f370769b2523e66466afab36b1d1fe6213f8a","dweb:/ipfs/Qmeh6qU6wUddAVMcQ69PEkHNeRrvcnCztZqJSV6Pj5J9nZ"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v4/IOrderBookV4.sol":{"keccak256":"0xd5f71acf6d83c27049b5e9a7941e3bb08565cca5bbde6a085e13e843276ae739","urls":["bzz-raw://85171211c18991e9da01f52690063fc31df20f131d95a44aafa9ddc4e09e43bb","dweb:/ipfs/QmSnwz1zWFs6a3ZHAiMiU5QLHMM8WSTzA55QiVdULapar5"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v5/IOrderBookV5.sol":{"keccak256":"0x769e662ac861e4c99b6ffec0ac76c87e0d29d144a2b1cb66aeb16c6aaf5d3354","urls":["bzz-raw://71f52ea84bd0733b7a09853b5b1ac12ddfd678116ea435c1079d7f1fa8c4d052","dweb:/ipfs/QmWyGBWHMEnPMuHgRNKTEW54tr5r5moFzn23VwzBC4ehZQ"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol":{"keccak256":"0xdcd81b1110e9c3c91715ac90aef1da70066bcaba8aeb3dc23df979f7f87644f9","urls":["bzz-raw://4572efaeb9eb30ad9b766b80cb2a8101a2cec0c9e8c78c7696f4aae710c8e2c9","dweb:/ipfs/QmVsz1gtqWfxTAbsoLPvZBe6PBVXqaWNx6nu7RHr2ghLuK"],"license":"CC0-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashLender.sol":{"keccak256":"0x3a9b6a28d6ef355bc3052e88221439ede72980a2d661ec4a83eb16cff9f937ec","urls":["bzz-raw://b56f7e7dbdf6a08c3704c247e4f8fc70e6eb8217ee3d01fbc1b9288737036e90","dweb:/ipfs/QmRd5iihYVW2EyXnTe12CMY13pcyatVJwxTafQf854HG9z"],"license":"CC0-1.0"},"src/abstract/RaindexV6FlashLender.sol":{"keccak256":"0x7f6c0edc3628a3a3c726d53f55705733497c0120f287f060728652c03b23fa3c","urls":["bzz-raw://388e284aee281fa614f4b1a360fa8bcdd35b54c05da423d1a30cb9441fd9926d","dweb:/ipfs/QmbZiVs2rogY8kcNKYcEsdj7szKo7472WdTEMGKcsLAwoq"],"license":"LicenseRef-DCL-1.0"},"src/concrete/raindex/RaindexV6.sol":{"keccak256":"0x67e507dc0dbe4b09d587e50c9affb0408818094ccf52f721d7a0165daf3e8df4","urls":["bzz-raw://8da950478d9887a37d58e5cad814628a05a329371ffba3d7924e8d9dc33f2589","dweb:/ipfs/QmcN2dtdqWvPLRVk5jp8AwjuyaJCshBuACuvq5dSrgbxsx"],"license":"LicenseRef-DCL-1.0"},"src/lib/LibOrder.sol":{"keccak256":"0x899b3e2cdce954e82b0be9380c13b7f5fc723770576dabf0e725f0f131d6adba","urls":["bzz-raw://0f7b8225814fc88831673471a42b516f23bcd4eca25f4e6e16eda43935fb0fff","dweb:/ipfs/QmNzParypfDZ3oiSKYm4wAPM5cqAnpNPB6Vz2tFw3gLKF7"],"license":"LicenseRef-DCL-1.0"},"src/lib/LibRaindex.sol":{"keccak256":"0x36dde21f4e324ed7af1bb8a9aa5e3d3805ee0cec6cf58f1414eaf3d5600f9c24","urls":["bzz-raw://559198fa03bc34f98940f058dfbbd5460907d1c7bfe6e971bd29f94703938157","dweb:/ipfs/QmTstHQ8fKUzuSQu3fLijWx6QXPLQbsHSeGPd8h7s6NnEV"],"license":"LicenseRef-DCL-1.0"}},"version":1},"id":377} \ No newline at end of file diff --git a/subgraph/generated/Raindex/DecimalFloat.ts b/subgraph/generated/Raindex/DecimalFloat.ts new file mode 100644 index 0000000000..fca6408a99 --- /dev/null +++ b/subgraph/generated/Raindex/DecimalFloat.ts @@ -0,0 +1,996 @@ +// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. + +import { + ethereum, + JSONValue, + TypedMap, + Entity, + Bytes, + Address, + BigInt, +} from "@graphprotocol/graph-ts"; + +export class DecimalFloat__fromFixedDecimalLossyResult { + value0: Bytes; + value1: boolean; + + constructor(value0: Bytes, value1: boolean) { + this.value0 = value0; + this.value1 = value1; + } + + toMap(): TypedMap { + let map = new TypedMap(); + map.set("value0", ethereum.Value.fromFixedBytes(this.value0)); + map.set("value1", ethereum.Value.fromBoolean(this.value1)); + return map; + } + + getValue0(): Bytes { + return this.value0; + } + + getValue1(): boolean { + return this.value1; + } +} + +export class DecimalFloat__parseResult { + value0: Bytes; + value1: Bytes; + + constructor(value0: Bytes, value1: Bytes) { + this.value0 = value0; + this.value1 = value1; + } + + toMap(): TypedMap { + let map = new TypedMap(); + map.set("value0", ethereum.Value.fromFixedBytes(this.value0)); + map.set("value1", ethereum.Value.fromFixedBytes(this.value1)); + return map; + } + + getValue0(): Bytes { + return this.value0; + } + + getValue1(): Bytes { + return this.value1; + } +} + +export class DecimalFloat__toFixedDecimalLossyResult { + value0: BigInt; + value1: boolean; + + constructor(value0: BigInt, value1: boolean) { + this.value0 = value0; + this.value1 = value1; + } + + toMap(): TypedMap { + let map = new TypedMap(); + map.set("value0", ethereum.Value.fromUnsignedBigInt(this.value0)); + map.set("value1", ethereum.Value.fromBoolean(this.value1)); + return map; + } + + getValue0(): BigInt { + return this.value0; + } + + getValue1(): boolean { + return this.value1; + } +} + +export class DecimalFloat extends ethereum.SmartContract { + static bind(address: Address): DecimalFloat { + return new DecimalFloat("DecimalFloat", address); + } + + FORMAT_DEFAULT_SCIENTIFIC_MAX(): Bytes { + let result = super.call( + "FORMAT_DEFAULT_SCIENTIFIC_MAX", + "FORMAT_DEFAULT_SCIENTIFIC_MAX():(bytes32)", + [], + ); + + return result[0].toBytes(); + } + + try_FORMAT_DEFAULT_SCIENTIFIC_MAX(): ethereum.CallResult { + let result = super.tryCall( + "FORMAT_DEFAULT_SCIENTIFIC_MAX", + "FORMAT_DEFAULT_SCIENTIFIC_MAX():(bytes32)", + [], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + FORMAT_DEFAULT_SCIENTIFIC_MIN(): Bytes { + let result = super.call( + "FORMAT_DEFAULT_SCIENTIFIC_MIN", + "FORMAT_DEFAULT_SCIENTIFIC_MIN():(bytes32)", + [], + ); + + return result[0].toBytes(); + } + + try_FORMAT_DEFAULT_SCIENTIFIC_MIN(): ethereum.CallResult { + let result = super.tryCall( + "FORMAT_DEFAULT_SCIENTIFIC_MIN", + "FORMAT_DEFAULT_SCIENTIFIC_MIN():(bytes32)", + [], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + abs(a: Bytes): Bytes { + let result = super.call("abs", "abs(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_abs(a: Bytes): ethereum.CallResult { + let result = super.tryCall("abs", "abs(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + add(a: Bytes, b: Bytes): Bytes { + let result = super.call("add", "add(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBytes(); + } + + try_add(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("add", "add(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + ceil(a: Bytes): Bytes { + let result = super.call("ceil", "ceil(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_ceil(a: Bytes): ethereum.CallResult { + let result = super.tryCall("ceil", "ceil(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + div(a: Bytes, b: Bytes): Bytes { + let result = super.call("div", "div(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBytes(); + } + + try_div(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("div", "div(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + e(): Bytes { + let result = super.call("e", "e():(bytes32)", []); + + return result[0].toBytes(); + } + + try_e(): ethereum.CallResult { + let result = super.tryCall("e", "e():(bytes32)", []); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + eq(a: Bytes, b: Bytes): boolean { + let result = super.call("eq", "eq(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBoolean(); + } + + try_eq(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("eq", "eq(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + floor(a: Bytes): Bytes { + let result = super.call("floor", "floor(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_floor(a: Bytes): ethereum.CallResult { + let result = super.tryCall("floor", "floor(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + format(a: Bytes, scientific: boolean): string { + let result = super.call("format", "format(bytes32,bool):(string)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromBoolean(scientific), + ]); + + return result[0].toString(); + } + + try_format(a: Bytes, scientific: boolean): ethereum.CallResult { + let result = super.tryCall("format", "format(bytes32,bool):(string)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromBoolean(scientific), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toString()); + } + + format1(a: Bytes): string { + let result = super.call("format", "format(bytes32):(string)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toString(); + } + + try_format1(a: Bytes): ethereum.CallResult { + let result = super.tryCall("format", "format(bytes32):(string)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toString()); + } + + format2(a: Bytes, scientificMin: Bytes, scientificMax: Bytes): string { + let result = super.call( + "format", + "format(bytes32,bytes32,bytes32):(string)", + [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(scientificMin), + ethereum.Value.fromFixedBytes(scientificMax), + ], + ); + + return result[0].toString(); + } + + try_format2( + a: Bytes, + scientificMin: Bytes, + scientificMax: Bytes, + ): ethereum.CallResult { + let result = super.tryCall( + "format", + "format(bytes32,bytes32,bytes32):(string)", + [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(scientificMin), + ethereum.Value.fromFixedBytes(scientificMax), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toString()); + } + + frac(a: Bytes): Bytes { + let result = super.call("frac", "frac(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_frac(a: Bytes): ethereum.CallResult { + let result = super.tryCall("frac", "frac(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + fromFixedDecimalLossless(value: BigInt, decimals: i32): Bytes { + let result = super.call( + "fromFixedDecimalLossless", + "fromFixedDecimalLossless(uint256,uint8):(bytes32)", + [ + ethereum.Value.fromUnsignedBigInt(value), + ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(decimals)), + ], + ); + + return result[0].toBytes(); + } + + try_fromFixedDecimalLossless( + value: BigInt, + decimals: i32, + ): ethereum.CallResult { + let result = super.tryCall( + "fromFixedDecimalLossless", + "fromFixedDecimalLossless(uint256,uint8):(bytes32)", + [ + ethereum.Value.fromUnsignedBigInt(value), + ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(decimals)), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + fromFixedDecimalLossy( + value: BigInt, + decimals: i32, + ): DecimalFloat__fromFixedDecimalLossyResult { + let result = super.call( + "fromFixedDecimalLossy", + "fromFixedDecimalLossy(uint256,uint8):(bytes32,bool)", + [ + ethereum.Value.fromUnsignedBigInt(value), + ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(decimals)), + ], + ); + + return new DecimalFloat__fromFixedDecimalLossyResult( + result[0].toBytes(), + result[1].toBoolean(), + ); + } + + try_fromFixedDecimalLossy( + value: BigInt, + decimals: i32, + ): ethereum.CallResult { + let result = super.tryCall( + "fromFixedDecimalLossy", + "fromFixedDecimalLossy(uint256,uint8):(bytes32,bool)", + [ + ethereum.Value.fromUnsignedBigInt(value), + ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(decimals)), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue( + new DecimalFloat__fromFixedDecimalLossyResult( + value[0].toBytes(), + value[1].toBoolean(), + ), + ); + } + + gt(a: Bytes, b: Bytes): boolean { + let result = super.call("gt", "gt(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBoolean(); + } + + try_gt(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("gt", "gt(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + gte(a: Bytes, b: Bytes): boolean { + let result = super.call("gte", "gte(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBoolean(); + } + + try_gte(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("gte", "gte(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + integer(a: Bytes): Bytes { + let result = super.call("integer", "integer(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_integer(a: Bytes): ethereum.CallResult { + let result = super.tryCall("integer", "integer(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + inv(a: Bytes): Bytes { + let result = super.call("inv", "inv(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_inv(a: Bytes): ethereum.CallResult { + let result = super.tryCall("inv", "inv(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + isZero(a: Bytes): boolean { + let result = super.call("isZero", "isZero(bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBoolean(); + } + + try_isZero(a: Bytes): ethereum.CallResult { + let result = super.tryCall("isZero", "isZero(bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + log10(a: Bytes): Bytes { + let result = super.call("log10", "log10(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_log10(a: Bytes): ethereum.CallResult { + let result = super.tryCall("log10", "log10(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + lt(a: Bytes, b: Bytes): boolean { + let result = super.call("lt", "lt(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBoolean(); + } + + try_lt(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("lt", "lt(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + lte(a: Bytes, b: Bytes): boolean { + let result = super.call("lte", "lte(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBoolean(); + } + + try_lte(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("lte", "lte(bytes32,bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + max(a: Bytes, b: Bytes): Bytes { + let result = super.call("max", "max(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBytes(); + } + + try_max(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("max", "max(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + maxNegativeValue(): Bytes { + let result = super.call( + "maxNegativeValue", + "maxNegativeValue():(bytes32)", + [], + ); + + return result[0].toBytes(); + } + + try_maxNegativeValue(): ethereum.CallResult { + let result = super.tryCall( + "maxNegativeValue", + "maxNegativeValue():(bytes32)", + [], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + maxPositiveValue(): Bytes { + let result = super.call( + "maxPositiveValue", + "maxPositiveValue():(bytes32)", + [], + ); + + return result[0].toBytes(); + } + + try_maxPositiveValue(): ethereum.CallResult { + let result = super.tryCall( + "maxPositiveValue", + "maxPositiveValue():(bytes32)", + [], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + min(a: Bytes, b: Bytes): Bytes { + let result = super.call("min", "min(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBytes(); + } + + try_min(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("min", "min(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + minNegativeValue(): Bytes { + let result = super.call( + "minNegativeValue", + "minNegativeValue():(bytes32)", + [], + ); + + return result[0].toBytes(); + } + + try_minNegativeValue(): ethereum.CallResult { + let result = super.tryCall( + "minNegativeValue", + "minNegativeValue():(bytes32)", + [], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + minPositiveValue(): Bytes { + let result = super.call( + "minPositiveValue", + "minPositiveValue():(bytes32)", + [], + ); + + return result[0].toBytes(); + } + + try_minPositiveValue(): ethereum.CallResult { + let result = super.tryCall( + "minPositiveValue", + "minPositiveValue():(bytes32)", + [], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + minus(a: Bytes): Bytes { + let result = super.call("minus", "minus(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_minus(a: Bytes): ethereum.CallResult { + let result = super.tryCall("minus", "minus(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + mul(a: Bytes, b: Bytes): Bytes { + let result = super.call("mul", "mul(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBytes(); + } + + try_mul(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("mul", "mul(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + parse(str: string): DecimalFloat__parseResult { + let result = super.call("parse", "parse(string):(bytes4,bytes32)", [ + ethereum.Value.fromString(str), + ]); + + return new DecimalFloat__parseResult( + result[0].toBytes(), + result[1].toBytes(), + ); + } + + try_parse(str: string): ethereum.CallResult { + let result = super.tryCall("parse", "parse(string):(bytes4,bytes32)", [ + ethereum.Value.fromString(str), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue( + new DecimalFloat__parseResult(value[0].toBytes(), value[1].toBytes()), + ); + } + + pow(a: Bytes, b: Bytes): Bytes { + let result = super.call("pow", "pow(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBytes(); + } + + try_pow(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("pow", "pow(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + pow10(a: Bytes): Bytes { + let result = super.call("pow10", "pow10(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_pow10(a: Bytes): ethereum.CallResult { + let result = super.tryCall("pow10", "pow10(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + sqrt(a: Bytes): Bytes { + let result = super.call("sqrt", "sqrt(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + + return result[0].toBytes(); + } + + try_sqrt(a: Bytes): ethereum.CallResult { + let result = super.tryCall("sqrt", "sqrt(bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + sub(a: Bytes, b: Bytes): Bytes { + let result = super.call("sub", "sub(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + + return result[0].toBytes(); + } + + try_sub(a: Bytes, b: Bytes): ethereum.CallResult { + let result = super.tryCall("sub", "sub(bytes32,bytes32):(bytes32)", [ + ethereum.Value.fromFixedBytes(a), + ethereum.Value.fromFixedBytes(b), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } + + toFixedDecimalLossless(float: Bytes, decimals: i32): BigInt { + let result = super.call( + "toFixedDecimalLossless", + "toFixedDecimalLossless(bytes32,uint8):(uint256)", + [ + ethereum.Value.fromFixedBytes(float), + ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(decimals)), + ], + ); + + return result[0].toBigInt(); + } + + try_toFixedDecimalLossless( + float: Bytes, + decimals: i32, + ): ethereum.CallResult { + let result = super.tryCall( + "toFixedDecimalLossless", + "toFixedDecimalLossless(bytes32,uint8):(uint256)", + [ + ethereum.Value.fromFixedBytes(float), + ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(decimals)), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBigInt()); + } + + toFixedDecimalLossy( + float: Bytes, + decimals: i32, + ): DecimalFloat__toFixedDecimalLossyResult { + let result = super.call( + "toFixedDecimalLossy", + "toFixedDecimalLossy(bytes32,uint8):(uint256,bool)", + [ + ethereum.Value.fromFixedBytes(float), + ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(decimals)), + ], + ); + + return new DecimalFloat__toFixedDecimalLossyResult( + result[0].toBigInt(), + result[1].toBoolean(), + ); + } + + try_toFixedDecimalLossy( + float: Bytes, + decimals: i32, + ): ethereum.CallResult { + let result = super.tryCall( + "toFixedDecimalLossy", + "toFixedDecimalLossy(bytes32,uint8):(uint256,bool)", + [ + ethereum.Value.fromFixedBytes(float), + ethereum.Value.fromUnsignedBigInt(BigInt.fromI32(decimals)), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue( + new DecimalFloat__toFixedDecimalLossyResult( + value[0].toBigInt(), + value[1].toBoolean(), + ), + ); + } + + zero(): Bytes { + let result = super.call("zero", "zero():(bytes32)", []); + + return result[0].toBytes(); + } + + try_zero(): ethereum.CallResult { + let result = super.tryCall("zero", "zero():(bytes32)", []); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } +} + +export class ConstructorCall extends ethereum.Call { + get inputs(): ConstructorCall__Inputs { + return new ConstructorCall__Inputs(this); + } + + get outputs(): ConstructorCall__Outputs { + return new ConstructorCall__Outputs(this); + } +} + +export class ConstructorCall__Inputs { + _call: ConstructorCall; + + constructor(call: ConstructorCall) { + this._call = call; + } +} + +export class ConstructorCall__Outputs { + _call: ConstructorCall; + + constructor(call: ConstructorCall) { + this._call = call; + } +} diff --git a/subgraph/generated/Raindex/ERC20.ts b/subgraph/generated/Raindex/ERC20.ts new file mode 100644 index 0000000000..c7309f63b7 --- /dev/null +++ b/subgraph/generated/Raindex/ERC20.ts @@ -0,0 +1,366 @@ +// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. + +import { + ethereum, + JSONValue, + TypedMap, + Entity, + Bytes, + Address, + BigInt, +} from "@graphprotocol/graph-ts"; + +export class Approval extends ethereum.Event { + get params(): Approval__Params { + return new Approval__Params(this); + } +} + +export class Approval__Params { + _event: Approval; + + constructor(event: Approval) { + this._event = event; + } + + get owner(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get spender(): Address { + return this._event.parameters[1].value.toAddress(); + } + + get value(): BigInt { + return this._event.parameters[2].value.toBigInt(); + } +} + +export class Transfer extends ethereum.Event { + get params(): Transfer__Params { + return new Transfer__Params(this); + } +} + +export class Transfer__Params { + _event: Transfer; + + constructor(event: Transfer) { + this._event = event; + } + + get from(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get to(): Address { + return this._event.parameters[1].value.toAddress(); + } + + get value(): BigInt { + return this._event.parameters[2].value.toBigInt(); + } +} + +export class ERC20 extends ethereum.SmartContract { + static bind(address: Address): ERC20 { + return new ERC20("ERC20", address); + } + + allowance(owner: Address, spender: Address): BigInt { + let result = super.call( + "allowance", + "allowance(address,address):(uint256)", + [ethereum.Value.fromAddress(owner), ethereum.Value.fromAddress(spender)], + ); + + return result[0].toBigInt(); + } + + try_allowance(owner: Address, spender: Address): ethereum.CallResult { + let result = super.tryCall( + "allowance", + "allowance(address,address):(uint256)", + [ethereum.Value.fromAddress(owner), ethereum.Value.fromAddress(spender)], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBigInt()); + } + + approve(spender: Address, value: BigInt): boolean { + let result = super.call("approve", "approve(address,uint256):(bool)", [ + ethereum.Value.fromAddress(spender), + ethereum.Value.fromUnsignedBigInt(value), + ]); + + return result[0].toBoolean(); + } + + try_approve(spender: Address, value: BigInt): ethereum.CallResult { + let result = super.tryCall("approve", "approve(address,uint256):(bool)", [ + ethereum.Value.fromAddress(spender), + ethereum.Value.fromUnsignedBigInt(value), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + balanceOf(account: Address): BigInt { + let result = super.call("balanceOf", "balanceOf(address):(uint256)", [ + ethereum.Value.fromAddress(account), + ]); + + return result[0].toBigInt(); + } + + try_balanceOf(account: Address): ethereum.CallResult { + let result = super.tryCall("balanceOf", "balanceOf(address):(uint256)", [ + ethereum.Value.fromAddress(account), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBigInt()); + } + + decimals(): i32 { + let result = super.call("decimals", "decimals():(uint8)", []); + + return result[0].toI32(); + } + + try_decimals(): ethereum.CallResult { + let result = super.tryCall("decimals", "decimals():(uint8)", []); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toI32()); + } + + name(): string { + let result = super.call("name", "name():(string)", []); + + return result[0].toString(); + } + + try_name(): ethereum.CallResult { + let result = super.tryCall("name", "name():(string)", []); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toString()); + } + + symbol(): string { + let result = super.call("symbol", "symbol():(string)", []); + + return result[0].toString(); + } + + try_symbol(): ethereum.CallResult { + let result = super.tryCall("symbol", "symbol():(string)", []); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toString()); + } + + totalSupply(): BigInt { + let result = super.call("totalSupply", "totalSupply():(uint256)", []); + + return result[0].toBigInt(); + } + + try_totalSupply(): ethereum.CallResult { + let result = super.tryCall("totalSupply", "totalSupply():(uint256)", []); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBigInt()); + } + + transfer(to: Address, value: BigInt): boolean { + let result = super.call("transfer", "transfer(address,uint256):(bool)", [ + ethereum.Value.fromAddress(to), + ethereum.Value.fromUnsignedBigInt(value), + ]); + + return result[0].toBoolean(); + } + + try_transfer(to: Address, value: BigInt): ethereum.CallResult { + let result = super.tryCall("transfer", "transfer(address,uint256):(bool)", [ + ethereum.Value.fromAddress(to), + ethereum.Value.fromUnsignedBigInt(value), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + transferFrom(from: Address, to: Address, value: BigInt): boolean { + let result = super.call( + "transferFrom", + "transferFrom(address,address,uint256):(bool)", + [ + ethereum.Value.fromAddress(from), + ethereum.Value.fromAddress(to), + ethereum.Value.fromUnsignedBigInt(value), + ], + ); + + return result[0].toBoolean(); + } + + try_transferFrom( + from: Address, + to: Address, + value: BigInt, + ): ethereum.CallResult { + let result = super.tryCall( + "transferFrom", + "transferFrom(address,address,uint256):(bool)", + [ + ethereum.Value.fromAddress(from), + ethereum.Value.fromAddress(to), + ethereum.Value.fromUnsignedBigInt(value), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } +} + +export class ApproveCall extends ethereum.Call { + get inputs(): ApproveCall__Inputs { + return new ApproveCall__Inputs(this); + } + + get outputs(): ApproveCall__Outputs { + return new ApproveCall__Outputs(this); + } +} + +export class ApproveCall__Inputs { + _call: ApproveCall; + + constructor(call: ApproveCall) { + this._call = call; + } + + get spender(): Address { + return this._call.inputValues[0].value.toAddress(); + } + + get value(): BigInt { + return this._call.inputValues[1].value.toBigInt(); + } +} + +export class ApproveCall__Outputs { + _call: ApproveCall; + + constructor(call: ApproveCall) { + this._call = call; + } + + get value0(): boolean { + return this._call.outputValues[0].value.toBoolean(); + } +} + +export class TransferCall extends ethereum.Call { + get inputs(): TransferCall__Inputs { + return new TransferCall__Inputs(this); + } + + get outputs(): TransferCall__Outputs { + return new TransferCall__Outputs(this); + } +} + +export class TransferCall__Inputs { + _call: TransferCall; + + constructor(call: TransferCall) { + this._call = call; + } + + get to(): Address { + return this._call.inputValues[0].value.toAddress(); + } + + get value(): BigInt { + return this._call.inputValues[1].value.toBigInt(); + } +} + +export class TransferCall__Outputs { + _call: TransferCall; + + constructor(call: TransferCall) { + this._call = call; + } + + get value0(): boolean { + return this._call.outputValues[0].value.toBoolean(); + } +} + +export class TransferFromCall extends ethereum.Call { + get inputs(): TransferFromCall__Inputs { + return new TransferFromCall__Inputs(this); + } + + get outputs(): TransferFromCall__Outputs { + return new TransferFromCall__Outputs(this); + } +} + +export class TransferFromCall__Inputs { + _call: TransferFromCall; + + constructor(call: TransferFromCall) { + this._call = call; + } + + get from(): Address { + return this._call.inputValues[0].value.toAddress(); + } + + get to(): Address { + return this._call.inputValues[1].value.toAddress(); + } + + get value(): BigInt { + return this._call.inputValues[2].value.toBigInt(); + } +} + +export class TransferFromCall__Outputs { + _call: TransferFromCall; + + constructor(call: TransferFromCall) { + this._call = call; + } + + get value0(): boolean { + return this._call.outputValues[0].value.toBoolean(); + } +} diff --git a/subgraph/generated/Raindex/Raindex.ts b/subgraph/generated/Raindex/Raindex.ts new file mode 100644 index 0000000000..fee60701d4 --- /dev/null +++ b/subgraph/generated/Raindex/Raindex.ts @@ -0,0 +1,2458 @@ +// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. + +import { + ethereum, + JSONValue, + TypedMap, + Entity, + Bytes, + Address, + BigInt, +} from "@graphprotocol/graph-ts"; + +export class AddOrderV3 extends ethereum.Event { + get params(): AddOrderV3__Params { + return new AddOrderV3__Params(this); + } +} + +export class AddOrderV3__Params { + _event: AddOrderV3; + + constructor(event: AddOrderV3) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get orderHash(): Bytes { + return this._event.parameters[1].value.toBytes(); + } + + get order(): AddOrderV3OrderStruct { + return changetype( + this._event.parameters[2].value.toTuple(), + ); + } +} + +export class AddOrderV3OrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): AddOrderV3OrderEvaluableStruct { + return changetype(this[1].toTuple()); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class AddOrderV3OrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class AddOrderV3OrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class AddOrderV3OrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class AfterClearV2 extends ethereum.Event { + get params(): AfterClearV2__Params { + return new AfterClearV2__Params(this); + } +} + +export class AfterClearV2__Params { + _event: AfterClearV2; + + constructor(event: AfterClearV2) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get clearStateChange(): AfterClearV2ClearStateChangeStruct { + return changetype( + this._event.parameters[1].value.toTuple(), + ); + } +} + +export class AfterClearV2ClearStateChangeStruct extends ethereum.Tuple { + get aliceOutput(): Bytes { + return this[0].toBytes(); + } + + get bobOutput(): Bytes { + return this[1].toBytes(); + } + + get aliceInput(): Bytes { + return this[2].toBytes(); + } + + get bobInput(): Bytes { + return this[3].toBytes(); + } +} + +export class ClearV3 extends ethereum.Event { + get params(): ClearV3__Params { + return new ClearV3__Params(this); + } +} + +export class ClearV3__Params { + _event: ClearV3; + + constructor(event: ClearV3) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get alice(): ClearV3AliceStruct { + return changetype( + this._event.parameters[1].value.toTuple(), + ); + } + + get bob(): ClearV3BobStruct { + return changetype( + this._event.parameters[2].value.toTuple(), + ); + } + + get clearConfig(): ClearV3ClearConfigStruct { + return changetype( + this._event.parameters[3].value.toTuple(), + ); + } +} + +export class ClearV3AliceStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): ClearV3AliceEvaluableStruct { + return changetype(this[1].toTuple()); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class ClearV3AliceEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class ClearV3AliceValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class ClearV3AliceValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class ClearV3BobStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): ClearV3BobEvaluableStruct { + return changetype(this[1].toTuple()); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class ClearV3BobEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class ClearV3BobValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class ClearV3BobValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class ClearV3ClearConfigStruct extends ethereum.Tuple { + get aliceInputIOIndex(): BigInt { + return this[0].toBigInt(); + } + + get aliceOutputIOIndex(): BigInt { + return this[1].toBigInt(); + } + + get bobInputIOIndex(): BigInt { + return this[2].toBigInt(); + } + + get bobOutputIOIndex(): BigInt { + return this[3].toBigInt(); + } + + get aliceBountyVaultId(): Bytes { + return this[4].toBytes(); + } + + get bobBountyVaultId(): Bytes { + return this[5].toBytes(); + } +} + +export class ContextV2 extends ethereum.Event { + get params(): ContextV2__Params { + return new ContextV2__Params(this); + } +} + +export class ContextV2__Params { + _event: ContextV2; + + constructor(event: ContextV2) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get context(): Array> { + return this._event.parameters[1].value.toBytesMatrix(); + } +} + +export class DepositV2 extends ethereum.Event { + get params(): DepositV2__Params { + return new DepositV2__Params(this); + } +} + +export class DepositV2__Params { + _event: DepositV2; + + constructor(event: DepositV2) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get token(): Address { + return this._event.parameters[1].value.toAddress(); + } + + get vaultId(): Bytes { + return this._event.parameters[2].value.toBytes(); + } + + get depositAmountUint256(): BigInt { + return this._event.parameters[3].value.toBigInt(); + } +} + +export class MetaV1_2 extends ethereum.Event { + get params(): MetaV1_2__Params { + return new MetaV1_2__Params(this); + } +} + +export class MetaV1_2__Params { + _event: MetaV1_2; + + constructor(event: MetaV1_2) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get subject(): Bytes { + return this._event.parameters[1].value.toBytes(); + } + + get meta(): Bytes { + return this._event.parameters[2].value.toBytes(); + } +} + +export class OrderExceedsMaxRatio extends ethereum.Event { + get params(): OrderExceedsMaxRatio__Params { + return new OrderExceedsMaxRatio__Params(this); + } +} + +export class OrderExceedsMaxRatio__Params { + _event: OrderExceedsMaxRatio; + + constructor(event: OrderExceedsMaxRatio) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get owner(): Address { + return this._event.parameters[1].value.toAddress(); + } + + get orderHash(): Bytes { + return this._event.parameters[2].value.toBytes(); + } +} + +export class OrderNotFound extends ethereum.Event { + get params(): OrderNotFound__Params { + return new OrderNotFound__Params(this); + } +} + +export class OrderNotFound__Params { + _event: OrderNotFound; + + constructor(event: OrderNotFound) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get owner(): Address { + return this._event.parameters[1].value.toAddress(); + } + + get orderHash(): Bytes { + return this._event.parameters[2].value.toBytes(); + } +} + +export class OrderZeroAmount extends ethereum.Event { + get params(): OrderZeroAmount__Params { + return new OrderZeroAmount__Params(this); + } +} + +export class OrderZeroAmount__Params { + _event: OrderZeroAmount; + + constructor(event: OrderZeroAmount) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get owner(): Address { + return this._event.parameters[1].value.toAddress(); + } + + get orderHash(): Bytes { + return this._event.parameters[2].value.toBytes(); + } +} + +export class RemoveOrderV3 extends ethereum.Event { + get params(): RemoveOrderV3__Params { + return new RemoveOrderV3__Params(this); + } +} + +export class RemoveOrderV3__Params { + _event: RemoveOrderV3; + + constructor(event: RemoveOrderV3) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get orderHash(): Bytes { + return this._event.parameters[1].value.toBytes(); + } + + get order(): RemoveOrderV3OrderStruct { + return changetype( + this._event.parameters[2].value.toTuple(), + ); + } +} + +export class RemoveOrderV3OrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): RemoveOrderV3OrderEvaluableStruct { + return changetype(this[1].toTuple()); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class RemoveOrderV3OrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class RemoveOrderV3OrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class RemoveOrderV3OrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class TakeOrderV3 extends ethereum.Event { + get params(): TakeOrderV3__Params { + return new TakeOrderV3__Params(this); + } +} + +export class TakeOrderV3__Params { + _event: TakeOrderV3; + + constructor(event: TakeOrderV3) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get config(): TakeOrderV3ConfigStruct { + return changetype( + this._event.parameters[1].value.toTuple(), + ); + } + + get input(): Bytes { + return this._event.parameters[2].value.toBytes(); + } + + get output(): Bytes { + return this._event.parameters[3].value.toBytes(); + } +} + +export class TakeOrderV3ConfigStruct extends ethereum.Tuple { + get order(): TakeOrderV3ConfigOrderStruct { + return changetype(this[0].toTuple()); + } + + get inputIOIndex(): BigInt { + return this[1].toBigInt(); + } + + get outputIOIndex(): BigInt { + return this[2].toBigInt(); + } + + get signedContext(): Array { + return this[3].toTupleArray(); + } +} + +export class TakeOrderV3ConfigOrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): TakeOrderV3ConfigOrderEvaluableStruct { + return changetype(this[1].toTuple()); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class TakeOrderV3ConfigOrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class TakeOrderV3ConfigOrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class TakeOrderV3ConfigOrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class TakeOrderV3ConfigSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class WithdrawV2 extends ethereum.Event { + get params(): WithdrawV2__Params { + return new WithdrawV2__Params(this); + } +} + +export class WithdrawV2__Params { + _event: WithdrawV2; + + constructor(event: WithdrawV2) { + this._event = event; + } + + get sender(): Address { + return this._event.parameters[0].value.toAddress(); + } + + get token(): Address { + return this._event.parameters[1].value.toAddress(); + } + + get vaultId(): Bytes { + return this._event.parameters[2].value.toBytes(); + } + + get targetAmount(): Bytes { + return this._event.parameters[3].value.toBytes(); + } + + get withdrawAmount(): Bytes { + return this._event.parameters[4].value.toBytes(); + } + + get withdrawAmountUint256(): BigInt { + return this._event.parameters[5].value.toBigInt(); + } +} + +export class Raindex__addOrder4InputOrderConfigStruct extends ethereum.Tuple { + get evaluable(): Raindex__addOrder4InputOrderConfigEvaluableStruct { + return changetype( + this[0].toTuple(), + ); + } + + get validInputs(): Array { + return this[1].toTupleArray(); + } + + get validOutputs(): Array { + return this[2].toTupleArray(); + } + + get nonce(): Bytes { + return this[3].toBytes(); + } + + get secret(): Bytes { + return this[4].toBytes(); + } + + get meta(): Bytes { + return this[5].toBytes(); + } +} + +export class Raindex__addOrder4InputOrderConfigEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex__addOrder4InputOrderConfigValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Raindex__addOrder4InputOrderConfigValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Raindex__addOrder4InputPostStruct extends ethereum.Tuple { + get evaluable(): Raindex__addOrder4InputPostEvaluableStruct { + return changetype( + this[0].toTuple(), + ); + } + + get signedContext(): Array { + return this[1].toTupleArray(); + } +} + +export class Raindex__addOrder4InputPostEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex__addOrder4InputPostSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex__quote2Result { + value0: boolean; + value1: Bytes; + value2: Bytes; + + constructor(value0: boolean, value1: Bytes, value2: Bytes) { + this.value0 = value0; + this.value1 = value1; + this.value2 = value2; + } + + toMap(): TypedMap { + let map = new TypedMap(); + map.set("value0", ethereum.Value.fromBoolean(this.value0)); + map.set("value1", ethereum.Value.fromFixedBytes(this.value1)); + map.set("value2", ethereum.Value.fromFixedBytes(this.value2)); + return map; + } + + getValue0(): boolean { + return this.value0; + } + + getValue1(): Bytes { + return this.value1; + } + + getValue2(): Bytes { + return this.value2; + } +} + +export class Raindex__quote2InputQuoteConfigStruct extends ethereum.Tuple { + get order(): Raindex__quote2InputQuoteConfigOrderStruct { + return changetype( + this[0].toTuple(), + ); + } + + get inputIOIndex(): BigInt { + return this[1].toBigInt(); + } + + get outputIOIndex(): BigInt { + return this[2].toBigInt(); + } + + get signedContext(): Array { + return this[3].toTupleArray(); + } +} + +export class Raindex__quote2InputQuoteConfigOrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): Raindex__quote2InputQuoteConfigOrderEvaluableStruct { + return changetype( + this[1].toTuple(), + ); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class Raindex__quote2InputQuoteConfigOrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex__quote2InputQuoteConfigOrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Raindex__quote2InputQuoteConfigOrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Raindex__quote2InputQuoteConfigSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex__removeOrder3InputOrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): Raindex__removeOrder3InputOrderEvaluableStruct { + return changetype( + this[1].toTuple(), + ); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class Raindex__removeOrder3InputOrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex__removeOrder3InputOrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Raindex__removeOrder3InputOrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Raindex__removeOrder3InputPostStruct extends ethereum.Tuple { + get evaluable(): Raindex__removeOrder3InputPostEvaluableStruct { + return changetype( + this[0].toTuple(), + ); + } + + get signedContext(): Array { + return this[1].toTupleArray(); + } +} + +export class Raindex__removeOrder3InputPostEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex__removeOrder3InputPostSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex__takeOrders4Result { + value0: Bytes; + value1: Bytes; + + constructor(value0: Bytes, value1: Bytes) { + this.value0 = value0; + this.value1 = value1; + } + + toMap(): TypedMap { + let map = new TypedMap(); + map.set("value0", ethereum.Value.fromFixedBytes(this.value0)); + map.set("value1", ethereum.Value.fromFixedBytes(this.value1)); + return map; + } + + getTotalTakerInput(): Bytes { + return this.value0; + } + + getTotalTakerOutput(): Bytes { + return this.value1; + } +} + +export class Raindex__takeOrders4InputConfigStruct extends ethereum.Tuple { + get minimumIO(): Bytes { + return this[0].toBytes(); + } + + get maximumIO(): Bytes { + return this[1].toBytes(); + } + + get maximumIORatio(): Bytes { + return this[2].toBytes(); + } + + get IOIsInput(): boolean { + return this[3].toBoolean(); + } + + get orders(): Array { + return this[4].toTupleArray(); + } + + get data(): Bytes { + return this[5].toBytes(); + } +} + +export class Raindex__takeOrders4InputConfigOrdersStruct extends ethereum.Tuple { + get order(): Raindex__takeOrders4InputConfigOrdersOrderStruct { + return changetype( + this[0].toTuple(), + ); + } + + get inputIOIndex(): BigInt { + return this[1].toBigInt(); + } + + get outputIOIndex(): BigInt { + return this[2].toBigInt(); + } + + get signedContext(): Array { + return this[3].toTupleArray(); + } +} + +export class Raindex__takeOrders4InputConfigOrdersOrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): Raindex__takeOrders4InputConfigOrdersOrderEvaluableStruct { + return changetype( + this[1].toTuple(), + ); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class Raindex__takeOrders4InputConfigOrdersOrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex__takeOrders4InputConfigOrdersOrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Raindex__takeOrders4InputConfigOrdersOrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Raindex__takeOrders4InputConfigOrdersSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class Raindex extends ethereum.SmartContract { + static bind(address: Address): Raindex { + return new Raindex("Raindex", address); + } + + addOrder4( + orderConfig: Raindex__addOrder4InputOrderConfigStruct, + post: Array, + ): boolean { + let result = super.call( + "addOrder4", + "addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[]):(bool)", + [ + ethereum.Value.fromTuple(orderConfig), + ethereum.Value.fromTupleArray(post), + ], + ); + + return result[0].toBoolean(); + } + + try_addOrder4( + orderConfig: Raindex__addOrder4InputOrderConfigStruct, + post: Array, + ): ethereum.CallResult { + let result = super.tryCall( + "addOrder4", + "addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[]):(bool)", + [ + ethereum.Value.fromTuple(orderConfig), + ethereum.Value.fromTupleArray(post), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + flashFee(param0: Address, param1: BigInt): BigInt { + let result = super.call("flashFee", "flashFee(address,uint256):(uint256)", [ + ethereum.Value.fromAddress(param0), + ethereum.Value.fromUnsignedBigInt(param1), + ]); + + return result[0].toBigInt(); + } + + try_flashFee(param0: Address, param1: BigInt): ethereum.CallResult { + let result = super.tryCall( + "flashFee", + "flashFee(address,uint256):(uint256)", + [ + ethereum.Value.fromAddress(param0), + ethereum.Value.fromUnsignedBigInt(param1), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBigInt()); + } + + flashLoan( + receiver: Address, + token: Address, + amount: BigInt, + data: Bytes, + ): boolean { + let result = super.call( + "flashLoan", + "flashLoan(address,address,uint256,bytes):(bool)", + [ + ethereum.Value.fromAddress(receiver), + ethereum.Value.fromAddress(token), + ethereum.Value.fromUnsignedBigInt(amount), + ethereum.Value.fromBytes(data), + ], + ); + + return result[0].toBoolean(); + } + + try_flashLoan( + receiver: Address, + token: Address, + amount: BigInt, + data: Bytes, + ): ethereum.CallResult { + let result = super.tryCall( + "flashLoan", + "flashLoan(address,address,uint256,bytes):(bool)", + [ + ethereum.Value.fromAddress(receiver), + ethereum.Value.fromAddress(token), + ethereum.Value.fromUnsignedBigInt(amount), + ethereum.Value.fromBytes(data), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + maxFlashLoan(token: Address): BigInt { + let result = super.call("maxFlashLoan", "maxFlashLoan(address):(uint256)", [ + ethereum.Value.fromAddress(token), + ]); + + return result[0].toBigInt(); + } + + try_maxFlashLoan(token: Address): ethereum.CallResult { + let result = super.tryCall( + "maxFlashLoan", + "maxFlashLoan(address):(uint256)", + [ethereum.Value.fromAddress(token)], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBigInt()); + } + + multicall(data: Array): Array { + let result = super.call("multicall", "multicall(bytes[]):(bytes[])", [ + ethereum.Value.fromBytesArray(data), + ]); + + return result[0].toBytesArray(); + } + + try_multicall(data: Array): ethereum.CallResult> { + let result = super.tryCall("multicall", "multicall(bytes[]):(bytes[])", [ + ethereum.Value.fromBytesArray(data), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytesArray()); + } + + orderExists(orderHash: Bytes): boolean { + let result = super.call("orderExists", "orderExists(bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(orderHash), + ]); + + return result[0].toBoolean(); + } + + try_orderExists(orderHash: Bytes): ethereum.CallResult { + let result = super.tryCall("orderExists", "orderExists(bytes32):(bool)", [ + ethereum.Value.fromFixedBytes(orderHash), + ]); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + quote2( + quoteConfig: Raindex__quote2InputQuoteConfigStruct, + ): Raindex__quote2Result { + let result = super.call( + "quote2", + "quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])):(bool,bytes32,bytes32)", + [ethereum.Value.fromTuple(quoteConfig)], + ); + + return new Raindex__quote2Result( + result[0].toBoolean(), + result[1].toBytes(), + result[2].toBytes(), + ); + } + + try_quote2( + quoteConfig: Raindex__quote2InputQuoteConfigStruct, + ): ethereum.CallResult { + let result = super.tryCall( + "quote2", + "quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])):(bool,bytes32,bytes32)", + [ethereum.Value.fromTuple(quoteConfig)], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue( + new Raindex__quote2Result( + value[0].toBoolean(), + value[1].toBytes(), + value[2].toBytes(), + ), + ); + } + + removeOrder3( + order: Raindex__removeOrder3InputOrderStruct, + post: Array, + ): boolean { + let result = super.call( + "removeOrder3", + "removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[]):(bool)", + [ethereum.Value.fromTuple(order), ethereum.Value.fromTupleArray(post)], + ); + + return result[0].toBoolean(); + } + + try_removeOrder3( + order: Raindex__removeOrder3InputOrderStruct, + post: Array, + ): ethereum.CallResult { + let result = super.tryCall( + "removeOrder3", + "removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[]):(bool)", + [ethereum.Value.fromTuple(order), ethereum.Value.fromTupleArray(post)], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + supportsInterface(interfaceId: Bytes): boolean { + let result = super.call( + "supportsInterface", + "supportsInterface(bytes4):(bool)", + [ethereum.Value.fromFixedBytes(interfaceId)], + ); + + return result[0].toBoolean(); + } + + try_supportsInterface(interfaceId: Bytes): ethereum.CallResult { + let result = super.tryCall( + "supportsInterface", + "supportsInterface(bytes4):(bool)", + [ethereum.Value.fromFixedBytes(interfaceId)], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBoolean()); + } + + takeOrders4( + config: Raindex__takeOrders4InputConfigStruct, + ): Raindex__takeOrders4Result { + let result = super.call( + "takeOrders4", + "takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes)):(bytes32,bytes32)", + [ethereum.Value.fromTuple(config)], + ); + + return new Raindex__takeOrders4Result( + result[0].toBytes(), + result[1].toBytes(), + ); + } + + try_takeOrders4( + config: Raindex__takeOrders4InputConfigStruct, + ): ethereum.CallResult { + let result = super.tryCall( + "takeOrders4", + "takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes)):(bytes32,bytes32)", + [ethereum.Value.fromTuple(config)], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue( + new Raindex__takeOrders4Result(value[0].toBytes(), value[1].toBytes()), + ); + } + + vaultBalance2(owner: Address, token: Address, vaultId: Bytes): Bytes { + let result = super.call( + "vaultBalance2", + "vaultBalance2(address,address,bytes32):(bytes32)", + [ + ethereum.Value.fromAddress(owner), + ethereum.Value.fromAddress(token), + ethereum.Value.fromFixedBytes(vaultId), + ], + ); + + return result[0].toBytes(); + } + + try_vaultBalance2( + owner: Address, + token: Address, + vaultId: Bytes, + ): ethereum.CallResult { + let result = super.tryCall( + "vaultBalance2", + "vaultBalance2(address,address,bytes32):(bytes32)", + [ + ethereum.Value.fromAddress(owner), + ethereum.Value.fromAddress(token), + ethereum.Value.fromFixedBytes(vaultId), + ], + ); + if (result.reverted) { + return new ethereum.CallResult(); + } + let value = result.value; + return ethereum.CallResult.fromValue(value[0].toBytes()); + } +} + +export class AddOrder4Call extends ethereum.Call { + get inputs(): AddOrder4Call__Inputs { + return new AddOrder4Call__Inputs(this); + } + + get outputs(): AddOrder4Call__Outputs { + return new AddOrder4Call__Outputs(this); + } +} + +export class AddOrder4Call__Inputs { + _call: AddOrder4Call; + + constructor(call: AddOrder4Call) { + this._call = call; + } + + get orderConfig(): AddOrder4CallOrderConfigStruct { + return changetype( + this._call.inputValues[0].value.toTuple(), + ); + } + + get post(): Array { + return this._call.inputValues[1].value.toTupleArray(); + } +} + +export class AddOrder4Call__Outputs { + _call: AddOrder4Call; + + constructor(call: AddOrder4Call) { + this._call = call; + } + + get value0(): boolean { + return this._call.outputValues[0].value.toBoolean(); + } +} + +export class AddOrder4CallOrderConfigStruct extends ethereum.Tuple { + get evaluable(): AddOrder4CallOrderConfigEvaluableStruct { + return changetype( + this[0].toTuple(), + ); + } + + get validInputs(): Array { + return this[1].toTupleArray(); + } + + get validOutputs(): Array { + return this[2].toTupleArray(); + } + + get nonce(): Bytes { + return this[3].toBytes(); + } + + get secret(): Bytes { + return this[4].toBytes(); + } + + get meta(): Bytes { + return this[5].toBytes(); + } +} + +export class AddOrder4CallOrderConfigEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class AddOrder4CallOrderConfigValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class AddOrder4CallOrderConfigValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class AddOrder4CallPostStruct extends ethereum.Tuple { + get evaluable(): AddOrder4CallPostEvaluableStruct { + return changetype(this[0].toTuple()); + } + + get signedContext(): Array { + return this[1].toTupleArray(); + } +} + +export class AddOrder4CallPostEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class AddOrder4CallPostSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class Clear3Call extends ethereum.Call { + get inputs(): Clear3Call__Inputs { + return new Clear3Call__Inputs(this); + } + + get outputs(): Clear3Call__Outputs { + return new Clear3Call__Outputs(this); + } +} + +export class Clear3Call__Inputs { + _call: Clear3Call; + + constructor(call: Clear3Call) { + this._call = call; + } + + get aliceOrder(): Clear3CallAliceOrderStruct { + return changetype( + this._call.inputValues[0].value.toTuple(), + ); + } + + get bobOrder(): Clear3CallBobOrderStruct { + return changetype( + this._call.inputValues[1].value.toTuple(), + ); + } + + get clearConfig(): Clear3CallClearConfigStruct { + return changetype( + this._call.inputValues[2].value.toTuple(), + ); + } + + get aliceSignedContext(): Array { + return this._call.inputValues[3].value.toTupleArray(); + } + + get bobSignedContext(): Array { + return this._call.inputValues[4].value.toTupleArray(); + } +} + +export class Clear3Call__Outputs { + _call: Clear3Call; + + constructor(call: Clear3Call) { + this._call = call; + } +} + +export class Clear3CallAliceOrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): Clear3CallAliceOrderEvaluableStruct { + return changetype(this[1].toTuple()); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class Clear3CallAliceOrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Clear3CallAliceOrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Clear3CallAliceOrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Clear3CallBobOrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): Clear3CallBobOrderEvaluableStruct { + return changetype(this[1].toTuple()); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class Clear3CallBobOrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Clear3CallBobOrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Clear3CallBobOrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class Clear3CallClearConfigStruct extends ethereum.Tuple { + get aliceInputIOIndex(): BigInt { + return this[0].toBigInt(); + } + + get aliceOutputIOIndex(): BigInt { + return this[1].toBigInt(); + } + + get bobInputIOIndex(): BigInt { + return this[2].toBigInt(); + } + + get bobOutputIOIndex(): BigInt { + return this[3].toBigInt(); + } + + get aliceBountyVaultId(): Bytes { + return this[4].toBytes(); + } + + get bobBountyVaultId(): Bytes { + return this[5].toBytes(); + } +} + +export class Clear3CallAliceSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class Clear3CallBobSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class Deposit4Call extends ethereum.Call { + get inputs(): Deposit4Call__Inputs { + return new Deposit4Call__Inputs(this); + } + + get outputs(): Deposit4Call__Outputs { + return new Deposit4Call__Outputs(this); + } +} + +export class Deposit4Call__Inputs { + _call: Deposit4Call; + + constructor(call: Deposit4Call) { + this._call = call; + } + + get token(): Address { + return this._call.inputValues[0].value.toAddress(); + } + + get vaultId(): Bytes { + return this._call.inputValues[1].value.toBytes(); + } + + get depositAmount(): Bytes { + return this._call.inputValues[2].value.toBytes(); + } + + get post(): Array { + return this._call.inputValues[3].value.toTupleArray(); + } +} + +export class Deposit4Call__Outputs { + _call: Deposit4Call; + + constructor(call: Deposit4Call) { + this._call = call; + } +} + +export class Deposit4CallPostStruct extends ethereum.Tuple { + get evaluable(): Deposit4CallPostEvaluableStruct { + return changetype(this[0].toTuple()); + } + + get signedContext(): Array { + return this[1].toTupleArray(); + } +} + +export class Deposit4CallPostEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Deposit4CallPostSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class Entask2Call extends ethereum.Call { + get inputs(): Entask2Call__Inputs { + return new Entask2Call__Inputs(this); + } + + get outputs(): Entask2Call__Outputs { + return new Entask2Call__Outputs(this); + } +} + +export class Entask2Call__Inputs { + _call: Entask2Call; + + constructor(call: Entask2Call) { + this._call = call; + } + + get post(): Array { + return this._call.inputValues[0].value.toTupleArray(); + } +} + +export class Entask2Call__Outputs { + _call: Entask2Call; + + constructor(call: Entask2Call) { + this._call = call; + } +} + +export class Entask2CallPostStruct extends ethereum.Tuple { + get evaluable(): Entask2CallPostEvaluableStruct { + return changetype(this[0].toTuple()); + } + + get signedContext(): Array { + return this[1].toTupleArray(); + } +} + +export class Entask2CallPostEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Entask2CallPostSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class FlashLoanCall extends ethereum.Call { + get inputs(): FlashLoanCall__Inputs { + return new FlashLoanCall__Inputs(this); + } + + get outputs(): FlashLoanCall__Outputs { + return new FlashLoanCall__Outputs(this); + } +} + +export class FlashLoanCall__Inputs { + _call: FlashLoanCall; + + constructor(call: FlashLoanCall) { + this._call = call; + } + + get receiver(): Address { + return this._call.inputValues[0].value.toAddress(); + } + + get token(): Address { + return this._call.inputValues[1].value.toAddress(); + } + + get amount(): BigInt { + return this._call.inputValues[2].value.toBigInt(); + } + + get data(): Bytes { + return this._call.inputValues[3].value.toBytes(); + } +} + +export class FlashLoanCall__Outputs { + _call: FlashLoanCall; + + constructor(call: FlashLoanCall) { + this._call = call; + } + + get value0(): boolean { + return this._call.outputValues[0].value.toBoolean(); + } +} + +export class MulticallCall extends ethereum.Call { + get inputs(): MulticallCall__Inputs { + return new MulticallCall__Inputs(this); + } + + get outputs(): MulticallCall__Outputs { + return new MulticallCall__Outputs(this); + } +} + +export class MulticallCall__Inputs { + _call: MulticallCall; + + constructor(call: MulticallCall) { + this._call = call; + } + + get data(): Array { + return this._call.inputValues[0].value.toBytesArray(); + } +} + +export class MulticallCall__Outputs { + _call: MulticallCall; + + constructor(call: MulticallCall) { + this._call = call; + } + + get results(): Array { + return this._call.outputValues[0].value.toBytesArray(); + } +} + +export class RemoveOrder3Call extends ethereum.Call { + get inputs(): RemoveOrder3Call__Inputs { + return new RemoveOrder3Call__Inputs(this); + } + + get outputs(): RemoveOrder3Call__Outputs { + return new RemoveOrder3Call__Outputs(this); + } +} + +export class RemoveOrder3Call__Inputs { + _call: RemoveOrder3Call; + + constructor(call: RemoveOrder3Call) { + this._call = call; + } + + get order(): RemoveOrder3CallOrderStruct { + return changetype( + this._call.inputValues[0].value.toTuple(), + ); + } + + get post(): Array { + return this._call.inputValues[1].value.toTupleArray(); + } +} + +export class RemoveOrder3Call__Outputs { + _call: RemoveOrder3Call; + + constructor(call: RemoveOrder3Call) { + this._call = call; + } + + get stateChanged(): boolean { + return this._call.outputValues[0].value.toBoolean(); + } +} + +export class RemoveOrder3CallOrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): RemoveOrder3CallOrderEvaluableStruct { + return changetype(this[1].toTuple()); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class RemoveOrder3CallOrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class RemoveOrder3CallOrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class RemoveOrder3CallOrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class RemoveOrder3CallPostStruct extends ethereum.Tuple { + get evaluable(): RemoveOrder3CallPostEvaluableStruct { + return changetype(this[0].toTuple()); + } + + get signedContext(): Array { + return this[1].toTupleArray(); + } +} + +export class RemoveOrder3CallPostEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class RemoveOrder3CallPostSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class TakeOrders4Call extends ethereum.Call { + get inputs(): TakeOrders4Call__Inputs { + return new TakeOrders4Call__Inputs(this); + } + + get outputs(): TakeOrders4Call__Outputs { + return new TakeOrders4Call__Outputs(this); + } +} + +export class TakeOrders4Call__Inputs { + _call: TakeOrders4Call; + + constructor(call: TakeOrders4Call) { + this._call = call; + } + + get config(): TakeOrders4CallConfigStruct { + return changetype( + this._call.inputValues[0].value.toTuple(), + ); + } +} + +export class TakeOrders4Call__Outputs { + _call: TakeOrders4Call; + + constructor(call: TakeOrders4Call) { + this._call = call; + } + + get totalTakerInput(): Bytes { + return this._call.outputValues[0].value.toBytes(); + } + + get totalTakerOutput(): Bytes { + return this._call.outputValues[1].value.toBytes(); + } +} + +export class TakeOrders4CallConfigStruct extends ethereum.Tuple { + get minimumIO(): Bytes { + return this[0].toBytes(); + } + + get maximumIO(): Bytes { + return this[1].toBytes(); + } + + get maximumIORatio(): Bytes { + return this[2].toBytes(); + } + + get IOIsInput(): boolean { + return this[3].toBoolean(); + } + + get orders(): Array { + return this[4].toTupleArray(); + } + + get data(): Bytes { + return this[5].toBytes(); + } +} + +export class TakeOrders4CallConfigOrdersStruct extends ethereum.Tuple { + get order(): TakeOrders4CallConfigOrdersOrderStruct { + return changetype( + this[0].toTuple(), + ); + } + + get inputIOIndex(): BigInt { + return this[1].toBigInt(); + } + + get outputIOIndex(): BigInt { + return this[2].toBigInt(); + } + + get signedContext(): Array { + return this[3].toTupleArray(); + } +} + +export class TakeOrders4CallConfigOrdersOrderStruct extends ethereum.Tuple { + get owner(): Address { + return this[0].toAddress(); + } + + get evaluable(): TakeOrders4CallConfigOrdersOrderEvaluableStruct { + return changetype( + this[1].toTuple(), + ); + } + + get validInputs(): Array { + return this[2].toTupleArray(); + } + + get validOutputs(): Array { + return this[3].toTupleArray(); + } + + get nonce(): Bytes { + return this[4].toBytes(); + } +} + +export class TakeOrders4CallConfigOrdersOrderEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class TakeOrders4CallConfigOrdersOrderValidInputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class TakeOrders4CallConfigOrdersOrderValidOutputsStruct extends ethereum.Tuple { + get token(): Address { + return this[0].toAddress(); + } + + get vaultId(): Bytes { + return this[1].toBytes(); + } +} + +export class TakeOrders4CallConfigOrdersSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} + +export class Withdraw4Call extends ethereum.Call { + get inputs(): Withdraw4Call__Inputs { + return new Withdraw4Call__Inputs(this); + } + + get outputs(): Withdraw4Call__Outputs { + return new Withdraw4Call__Outputs(this); + } +} + +export class Withdraw4Call__Inputs { + _call: Withdraw4Call; + + constructor(call: Withdraw4Call) { + this._call = call; + } + + get token(): Address { + return this._call.inputValues[0].value.toAddress(); + } + + get vaultId(): Bytes { + return this._call.inputValues[1].value.toBytes(); + } + + get targetAmount(): Bytes { + return this._call.inputValues[2].value.toBytes(); + } + + get post(): Array { + return this._call.inputValues[3].value.toTupleArray(); + } +} + +export class Withdraw4Call__Outputs { + _call: Withdraw4Call; + + constructor(call: Withdraw4Call) { + this._call = call; + } +} + +export class Withdraw4CallPostStruct extends ethereum.Tuple { + get evaluable(): Withdraw4CallPostEvaluableStruct { + return changetype(this[0].toTuple()); + } + + get signedContext(): Array { + return this[1].toTupleArray(); + } +} + +export class Withdraw4CallPostEvaluableStruct extends ethereum.Tuple { + get interpreter(): Address { + return this[0].toAddress(); + } + + get store(): Address { + return this[1].toAddress(); + } + + get bytecode(): Bytes { + return this[2].toBytes(); + } +} + +export class Withdraw4CallPostSignedContextStruct extends ethereum.Tuple { + get signer(): Address { + return this[0].toAddress(); + } + + get context(): Array { + return this[1].toBytesArray(); + } + + get signature(): Bytes { + return this[2].toBytes(); + } +} diff --git a/subgraph/generated/schema.ts b/subgraph/generated/schema.ts new file mode 100644 index 0000000000..67eb08dce0 --- /dev/null +++ b/subgraph/generated/schema.ts @@ -0,0 +1,2247 @@ +// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. + +import { + TypedMap, + Entity, + Value, + ValueKind, + store, + Bytes, + BigInt, + BigDecimal, +} from "@graphprotocol/graph-ts"; + +export class Raindex extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save Raindex entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type Raindex must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("Raindex", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): Raindex | null { + return changetype( + store.get_in_block("Raindex", id.toHexString()), + ); + } + + static load(id: Bytes): Raindex | null { + return changetype(store.get("Raindex", id.toHexString())); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get orders(): OrderLoader { + return new OrderLoader( + "Raindex", + this.get("id")!.toBytes().toHexString(), + "orders", + ); + } + + get trades(): TradeLoader { + return new TradeLoader( + "Raindex", + this.get("id")!.toBytes().toHexString(), + "trades", + ); + } + + get vaults(): VaultLoader { + return new VaultLoader( + "Raindex", + this.get("id")!.toBytes().toHexString(), + "vaults", + ); + } + + get deposits(): DepositLoader { + return new DepositLoader( + "Raindex", + this.get("id")!.toBytes().toHexString(), + "deposits", + ); + } + + get withdrawals(): WithdrawalLoader { + return new WithdrawalLoader( + "Raindex", + this.get("id")!.toBytes().toHexString(), + "withdrawals", + ); + } + + get addOrders(): AddOrderLoader { + return new AddOrderLoader( + "Raindex", + this.get("id")!.toBytes().toHexString(), + "addOrders", + ); + } + + get removeOrders(): RemoveOrderLoader { + return new RemoveOrderLoader( + "Raindex", + this.get("id")!.toBytes().toHexString(), + "removeOrders", + ); + } + + get takeOrders(): TakeOrderLoader { + return new TakeOrderLoader( + "Raindex", + this.get("id")!.toBytes().toHexString(), + "takeOrders", + ); + } +} + +export class Vault extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save Vault entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type Vault must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("Vault", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): Vault | null { + return changetype( + store.get_in_block("Vault", id.toHexString()), + ); + } + + static load(id: Bytes): Vault | null { + return changetype(store.get("Vault", id.toHexString())); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get token(): Bytes { + let value = this.get("token"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set token(value: Bytes) { + this.set("token", Value.fromBytes(value)); + } + + get owner(): Bytes { + let value = this.get("owner"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set owner(value: Bytes) { + this.set("owner", Value.fromBytes(value)); + } + + get vaultId(): Bytes { + let value = this.get("vaultId"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set vaultId(value: Bytes) { + this.set("vaultId", Value.fromBytes(value)); + } + + get ordersAsInput(): OrderLoader { + return new OrderLoader( + "Vault", + this.get("id")!.toBytes().toHexString(), + "ordersAsInput", + ); + } + + get ordersAsOutput(): OrderLoader { + return new OrderLoader( + "Vault", + this.get("id")!.toBytes().toHexString(), + "ordersAsOutput", + ); + } + + get balance(): Bytes { + let value = this.get("balance"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set balance(value: Bytes) { + this.set("balance", Value.fromBytes(value)); + } +} + +export class Deposit extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save Deposit entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type Deposit must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("Deposit", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): Deposit | null { + return changetype( + store.get_in_block("Deposit", id.toHexString()), + ); + } + + static load(id: Bytes): Deposit | null { + return changetype(store.get("Deposit", id.toHexString())); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get vault(): Bytes { + let value = this.get("vault"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set vault(value: Bytes) { + this.set("vault", Value.fromBytes(value)); + } + + get amount(): Bytes { + let value = this.get("amount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set amount(value: Bytes) { + this.set("amount", Value.fromBytes(value)); + } + + get oldVaultBalance(): Bytes { + let value = this.get("oldVaultBalance"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set oldVaultBalance(value: Bytes) { + this.set("oldVaultBalance", Value.fromBytes(value)); + } + + get newVaultBalance(): Bytes { + let value = this.get("newVaultBalance"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set newVaultBalance(value: Bytes) { + this.set("newVaultBalance", Value.fromBytes(value)); + } + + get timestamp(): BigInt { + let value = this.get("timestamp"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set timestamp(value: BigInt) { + this.set("timestamp", Value.fromBigInt(value)); + } + + get transaction(): Bytes { + let value = this.get("transaction"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set transaction(value: Bytes) { + this.set("transaction", Value.fromBytes(value)); + } + + get sender(): Bytes { + let value = this.get("sender"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set sender(value: Bytes) { + this.set("sender", Value.fromBytes(value)); + } +} + +export class Withdrawal extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save Withdrawal entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type Withdrawal must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("Withdrawal", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): Withdrawal | null { + return changetype( + store.get_in_block("Withdrawal", id.toHexString()), + ); + } + + static load(id: Bytes): Withdrawal | null { + return changetype( + store.get("Withdrawal", id.toHexString()), + ); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get targetAmount(): Bytes { + let value = this.get("targetAmount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set targetAmount(value: Bytes) { + this.set("targetAmount", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get vault(): Bytes { + let value = this.get("vault"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set vault(value: Bytes) { + this.set("vault", Value.fromBytes(value)); + } + + get amount(): Bytes { + let value = this.get("amount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set amount(value: Bytes) { + this.set("amount", Value.fromBytes(value)); + } + + get oldVaultBalance(): Bytes { + let value = this.get("oldVaultBalance"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set oldVaultBalance(value: Bytes) { + this.set("oldVaultBalance", Value.fromBytes(value)); + } + + get newVaultBalance(): Bytes { + let value = this.get("newVaultBalance"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set newVaultBalance(value: Bytes) { + this.set("newVaultBalance", Value.fromBytes(value)); + } + + get timestamp(): BigInt { + let value = this.get("timestamp"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set timestamp(value: BigInt) { + this.set("timestamp", Value.fromBigInt(value)); + } + + get transaction(): Bytes { + let value = this.get("transaction"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set transaction(value: Bytes) { + this.set("transaction", Value.fromBytes(value)); + } + + get sender(): Bytes { + let value = this.get("sender"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set sender(value: Bytes) { + this.set("sender", Value.fromBytes(value)); + } +} + +export class TradeVaultBalanceChange extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert( + id != null, + "Cannot save TradeVaultBalanceChange entity without an ID", + ); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type TradeVaultBalanceChange must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("TradeVaultBalanceChange", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): TradeVaultBalanceChange | null { + return changetype( + store.get_in_block("TradeVaultBalanceChange", id.toHexString()), + ); + } + + static load(id: Bytes): TradeVaultBalanceChange | null { + return changetype( + store.get("TradeVaultBalanceChange", id.toHexString()), + ); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get trade(): Bytes { + let value = this.get("trade"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set trade(value: Bytes) { + this.set("trade", Value.fromBytes(value)); + } + + get vault(): Bytes { + let value = this.get("vault"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set vault(value: Bytes) { + this.set("vault", Value.fromBytes(value)); + } + + get amount(): Bytes { + let value = this.get("amount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set amount(value: Bytes) { + this.set("amount", Value.fromBytes(value)); + } + + get oldVaultBalance(): Bytes { + let value = this.get("oldVaultBalance"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set oldVaultBalance(value: Bytes) { + this.set("oldVaultBalance", Value.fromBytes(value)); + } + + get newVaultBalance(): Bytes { + let value = this.get("newVaultBalance"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set newVaultBalance(value: Bytes) { + this.set("newVaultBalance", Value.fromBytes(value)); + } + + get timestamp(): BigInt { + let value = this.get("timestamp"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set timestamp(value: BigInt) { + this.set("timestamp", Value.fromBigInt(value)); + } + + get transaction(): Bytes { + let value = this.get("transaction"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set transaction(value: Bytes) { + this.set("transaction", Value.fromBytes(value)); + } +} + +export class ClearBounty extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save ClearBounty entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type ClearBounty must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("ClearBounty", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): ClearBounty | null { + return changetype( + store.get_in_block("ClearBounty", id.toHexString()), + ); + } + + static load(id: Bytes): ClearBounty | null { + return changetype( + store.get("ClearBounty", id.toHexString()), + ); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get sender(): Bytes { + let value = this.get("sender"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set sender(value: Bytes) { + this.set("sender", Value.fromBytes(value)); + } + + get vault(): Bytes { + let value = this.get("vault"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set vault(value: Bytes) { + this.set("vault", Value.fromBytes(value)); + } + + get amount(): Bytes { + let value = this.get("amount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set amount(value: Bytes) { + this.set("amount", Value.fromBytes(value)); + } + + get oldVaultBalance(): Bytes { + let value = this.get("oldVaultBalance"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set oldVaultBalance(value: Bytes) { + this.set("oldVaultBalance", Value.fromBytes(value)); + } + + get newVaultBalance(): Bytes { + let value = this.get("newVaultBalance"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set newVaultBalance(value: Bytes) { + this.set("newVaultBalance", Value.fromBytes(value)); + } + + get timestamp(): BigInt { + let value = this.get("timestamp"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set timestamp(value: BigInt) { + this.set("timestamp", Value.fromBigInt(value)); + } + + get transaction(): Bytes { + let value = this.get("transaction"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set transaction(value: Bytes) { + this.set("transaction", Value.fromBytes(value)); + } +} + +export class Order extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save Order entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type Order must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("Order", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): Order | null { + return changetype( + store.get_in_block("Order", id.toHexString()), + ); + } + + static load(id: Bytes): Order | null { + return changetype(store.get("Order", id.toHexString())); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get active(): boolean { + let value = this.get("active"); + if (!value || value.kind == ValueKind.NULL) { + return false; + } else { + return value.toBoolean(); + } + } + + set active(value: boolean) { + this.set("active", Value.fromBoolean(value)); + } + + get orderHash(): Bytes { + let value = this.get("orderHash"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set orderHash(value: Bytes) { + this.set("orderHash", Value.fromBytes(value)); + } + + get owner(): Bytes { + let value = this.get("owner"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set owner(value: Bytes) { + this.set("owner", Value.fromBytes(value)); + } + + get inputs(): Array { + let value = this.get("inputs"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytesArray(); + } + } + + set inputs(value: Array) { + this.set("inputs", Value.fromBytesArray(value)); + } + + get outputs(): Array { + let value = this.get("outputs"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytesArray(); + } + } + + set outputs(value: Array) { + this.set("outputs", Value.fromBytesArray(value)); + } + + get nonce(): Bytes { + let value = this.get("nonce"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set nonce(value: Bytes) { + this.set("nonce", Value.fromBytes(value)); + } + + get orderBytes(): Bytes { + let value = this.get("orderBytes"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set orderBytes(value: Bytes) { + this.set("orderBytes", Value.fromBytes(value)); + } + + get addEvents(): AddOrderLoader { + return new AddOrderLoader( + "Order", + this.get("id")!.toBytes().toHexString(), + "addEvents", + ); + } + + get removeEvents(): RemoveOrderLoader { + return new RemoveOrderLoader( + "Order", + this.get("id")!.toBytes().toHexString(), + "removeEvents", + ); + } + + get trades(): TradeLoader { + return new TradeLoader( + "Order", + this.get("id")!.toBytes().toHexString(), + "trades", + ); + } + + get meta(): Bytes | null { + let value = this.get("meta"); + if (!value || value.kind == ValueKind.NULL) { + return null; + } else { + return value.toBytes(); + } + } + + set meta(value: Bytes | null) { + if (!value) { + this.unset("meta"); + } else { + this.set("meta", Value.fromBytes(value)); + } + } + + get timestampAdded(): BigInt { + let value = this.get("timestampAdded"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set timestampAdded(value: BigInt) { + this.set("timestampAdded", Value.fromBigInt(value)); + } +} + +export class AddOrder extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save AddOrder entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type AddOrder must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("AddOrder", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): AddOrder | null { + return changetype( + store.get_in_block("AddOrder", id.toHexString()), + ); + } + + static load(id: Bytes): AddOrder | null { + return changetype(store.get("AddOrder", id.toHexString())); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get order(): Bytes { + let value = this.get("order"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set order(value: Bytes) { + this.set("order", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get transaction(): Bytes { + let value = this.get("transaction"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set transaction(value: Bytes) { + this.set("transaction", Value.fromBytes(value)); + } + + get sender(): Bytes { + let value = this.get("sender"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set sender(value: Bytes) { + this.set("sender", Value.fromBytes(value)); + } +} + +export class RemoveOrder extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save RemoveOrder entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type RemoveOrder must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("RemoveOrder", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): RemoveOrder | null { + return changetype( + store.get_in_block("RemoveOrder", id.toHexString()), + ); + } + + static load(id: Bytes): RemoveOrder | null { + return changetype( + store.get("RemoveOrder", id.toHexString()), + ); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get order(): Bytes { + let value = this.get("order"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set order(value: Bytes) { + this.set("order", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get transaction(): Bytes { + let value = this.get("transaction"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set transaction(value: Bytes) { + this.set("transaction", Value.fromBytes(value)); + } + + get sender(): Bytes { + let value = this.get("sender"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set sender(value: Bytes) { + this.set("sender", Value.fromBytes(value)); + } +} + +export class Trade extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save Trade entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type Trade must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("Trade", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): Trade | null { + return changetype( + store.get_in_block("Trade", id.toHexString()), + ); + } + + static load(id: Bytes): Trade | null { + return changetype(store.get("Trade", id.toHexString())); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get order(): Bytes { + let value = this.get("order"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set order(value: Bytes) { + this.set("order", Value.fromBytes(value)); + } + + get inputVaultBalanceChange(): Bytes { + let value = this.get("inputVaultBalanceChange"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set inputVaultBalanceChange(value: Bytes) { + this.set("inputVaultBalanceChange", Value.fromBytes(value)); + } + + get outputVaultBalanceChange(): Bytes { + let value = this.get("outputVaultBalanceChange"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set outputVaultBalanceChange(value: Bytes) { + this.set("outputVaultBalanceChange", Value.fromBytes(value)); + } + + get tradeEvent(): Bytes { + let value = this.get("tradeEvent"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set tradeEvent(value: Bytes) { + this.set("tradeEvent", Value.fromBytes(value)); + } + + get timestamp(): BigInt { + let value = this.get("timestamp"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set timestamp(value: BigInt) { + this.set("timestamp", Value.fromBigInt(value)); + } +} + +export class TakeOrder extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save TakeOrder entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type TakeOrder must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("TakeOrder", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): TakeOrder | null { + return changetype( + store.get_in_block("TakeOrder", id.toHexString()), + ); + } + + static load(id: Bytes): TakeOrder | null { + return changetype( + store.get("TakeOrder", id.toHexString()), + ); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get inputAmount(): Bytes { + let value = this.get("inputAmount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set inputAmount(value: Bytes) { + this.set("inputAmount", Value.fromBytes(value)); + } + + get outputAmount(): Bytes { + let value = this.get("outputAmount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set outputAmount(value: Bytes) { + this.set("outputAmount", Value.fromBytes(value)); + } + + get takeOrderConfigBytes(): Bytes { + let value = this.get("takeOrderConfigBytes"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set takeOrderConfigBytes(value: Bytes) { + this.set("takeOrderConfigBytes", Value.fromBytes(value)); + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get trades(): TradeLoader { + return new TradeLoader( + "TakeOrder", + this.get("id")!.toBytes().toHexString(), + "trades", + ); + } + + get transaction(): Bytes { + let value = this.get("transaction"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set transaction(value: Bytes) { + this.set("transaction", Value.fromBytes(value)); + } + + get sender(): Bytes { + let value = this.get("sender"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set sender(value: Bytes) { + this.set("sender", Value.fromBytes(value)); + } +} + +export class Clear extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save Clear entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type Clear must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("Clear", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): Clear | null { + return changetype( + store.get_in_block("Clear", id.toHexString()), + ); + } + + static load(id: Bytes): Clear | null { + return changetype(store.get("Clear", id.toHexString())); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get aliceInputAmount(): Bytes { + let value = this.get("aliceInputAmount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceInputAmount(value: Bytes) { + this.set("aliceInputAmount", Value.fromBytes(value)); + } + + get aliceOutputAmount(): Bytes { + let value = this.get("aliceOutputAmount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceOutputAmount(value: Bytes) { + this.set("aliceOutputAmount", Value.fromBytes(value)); + } + + get bobInputAmount(): Bytes { + let value = this.get("bobInputAmount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobInputAmount(value: Bytes) { + this.set("bobInputAmount", Value.fromBytes(value)); + } + + get bobOutputAmount(): Bytes { + let value = this.get("bobOutputAmount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobOutputAmount(value: Bytes) { + this.set("bobOutputAmount", Value.fromBytes(value)); + } + + get aliceBountyAmount(): Bytes { + let value = this.get("aliceBountyAmount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceBountyAmount(value: Bytes) { + this.set("aliceBountyAmount", Value.fromBytes(value)); + } + + get bobBountyAmount(): Bytes { + let value = this.get("bobBountyAmount"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobBountyAmount(value: Bytes) { + this.set("bobBountyAmount", Value.fromBytes(value)); + } + + get aliceBountyVaultBalanceChange(): Bytes | null { + let value = this.get("aliceBountyVaultBalanceChange"); + if (!value || value.kind == ValueKind.NULL) { + return null; + } else { + return value.toBytes(); + } + } + + set aliceBountyVaultBalanceChange(value: Bytes | null) { + if (!value) { + this.unset("aliceBountyVaultBalanceChange"); + } else { + this.set("aliceBountyVaultBalanceChange", Value.fromBytes(value)); + } + } + + get bobBountyVaultBalanceChange(): Bytes | null { + let value = this.get("bobBountyVaultBalanceChange"); + if (!value || value.kind == ValueKind.NULL) { + return null; + } else { + return value.toBytes(); + } + } + + set bobBountyVaultBalanceChange(value: Bytes | null) { + if (!value) { + this.unset("bobBountyVaultBalanceChange"); + } else { + this.set("bobBountyVaultBalanceChange", Value.fromBytes(value)); + } + } + + get raindex(): Bytes { + let value = this.get("raindex"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set raindex(value: Bytes) { + this.set("raindex", Value.fromBytes(value)); + } + + get trades(): TradeLoader { + return new TradeLoader( + "Clear", + this.get("id")!.toBytes().toHexString(), + "trades", + ); + } + + get transaction(): Bytes { + let value = this.get("transaction"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set transaction(value: Bytes) { + this.set("transaction", Value.fromBytes(value)); + } + + get sender(): Bytes { + let value = this.get("sender"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set sender(value: Bytes) { + this.set("sender", Value.fromBytes(value)); + } +} + +export class Transaction extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save Transaction entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type Transaction must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("Transaction", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): Transaction | null { + return changetype( + store.get_in_block("Transaction", id.toHexString()), + ); + } + + static load(id: Bytes): Transaction | null { + return changetype( + store.get("Transaction", id.toHexString()), + ); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get timestamp(): BigInt { + let value = this.get("timestamp"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set timestamp(value: BigInt) { + this.set("timestamp", Value.fromBigInt(value)); + } + + get blockNumber(): BigInt { + let value = this.get("blockNumber"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBigInt(); + } + } + + set blockNumber(value: BigInt) { + this.set("blockNumber", Value.fromBigInt(value)); + } + + get from(): Bytes { + let value = this.get("from"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set from(value: Bytes) { + this.set("from", Value.fromBytes(value)); + } +} + +export class ERC20 extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save ERC20 entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type ERC20 must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("ERC20", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): ERC20 | null { + return changetype( + store.get_in_block("ERC20", id.toHexString()), + ); + } + + static load(id: Bytes): ERC20 | null { + return changetype(store.get("ERC20", id.toHexString())); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get address(): Bytes { + let value = this.get("address"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set address(value: Bytes) { + this.set("address", Value.fromBytes(value)); + } + + get name(): string | null { + let value = this.get("name"); + if (!value || value.kind == ValueKind.NULL) { + return null; + } else { + return value.toString(); + } + } + + set name(value: string | null) { + if (!value) { + this.unset("name"); + } else { + this.set("name", Value.fromString(value)); + } + } + + get symbol(): string | null { + let value = this.get("symbol"); + if (!value || value.kind == ValueKind.NULL) { + return null; + } else { + return value.toString(); + } + } + + set symbol(value: string | null) { + if (!value) { + this.unset("symbol"); + } else { + this.set("symbol", Value.fromString(value)); + } + } + + get decimals(): BigInt | null { + let value = this.get("decimals"); + if (!value || value.kind == ValueKind.NULL) { + return null; + } else { + return value.toBigInt(); + } + } + + set decimals(value: BigInt | null) { + if (!value) { + this.unset("decimals"); + } else { + this.set("decimals", Value.fromBigInt(value)); + } + } +} + +export class ClearTemporaryData extends Entity { + constructor(id: Bytes) { + super(); + this.set("id", Value.fromBytes(id)); + } + + save(): void { + let id = this.get("id"); + assert(id != null, "Cannot save ClearTemporaryData entity without an ID"); + if (id) { + assert( + id.kind == ValueKind.BYTES, + `Entities of type ClearTemporaryData must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`, + ); + store.set("ClearTemporaryData", id.toBytes().toHexString(), this); + } + } + + static loadInBlock(id: Bytes): ClearTemporaryData | null { + return changetype( + store.get_in_block("ClearTemporaryData", id.toHexString()), + ); + } + + static load(id: Bytes): ClearTemporaryData | null { + return changetype( + store.get("ClearTemporaryData", id.toHexString()), + ); + } + + get id(): Bytes { + let value = this.get("id"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set id(value: Bytes) { + this.set("id", Value.fromBytes(value)); + } + + get aliceOrderHash(): Bytes { + let value = this.get("aliceOrderHash"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceOrderHash(value: Bytes) { + this.set("aliceOrderHash", Value.fromBytes(value)); + } + + get aliceAddress(): Bytes { + let value = this.get("aliceAddress"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceAddress(value: Bytes) { + this.set("aliceAddress", Value.fromBytes(value)); + } + + get aliceInputVaultId(): Bytes { + let value = this.get("aliceInputVaultId"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceInputVaultId(value: Bytes) { + this.set("aliceInputVaultId", Value.fromBytes(value)); + } + + get aliceInputToken(): Bytes { + let value = this.get("aliceInputToken"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceInputToken(value: Bytes) { + this.set("aliceInputToken", Value.fromBytes(value)); + } + + get aliceOutputVaultId(): Bytes { + let value = this.get("aliceOutputVaultId"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceOutputVaultId(value: Bytes) { + this.set("aliceOutputVaultId", Value.fromBytes(value)); + } + + get aliceOutputToken(): Bytes { + let value = this.get("aliceOutputToken"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceOutputToken(value: Bytes) { + this.set("aliceOutputToken", Value.fromBytes(value)); + } + + get aliceBounty(): Bytes { + let value = this.get("aliceBounty"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set aliceBounty(value: Bytes) { + this.set("aliceBounty", Value.fromBytes(value)); + } + + get bobOrderHash(): Bytes { + let value = this.get("bobOrderHash"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobOrderHash(value: Bytes) { + this.set("bobOrderHash", Value.fromBytes(value)); + } + + get bobAddress(): Bytes { + let value = this.get("bobAddress"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobAddress(value: Bytes) { + this.set("bobAddress", Value.fromBytes(value)); + } + + get bobInputVaultId(): Bytes { + let value = this.get("bobInputVaultId"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobInputVaultId(value: Bytes) { + this.set("bobInputVaultId", Value.fromBytes(value)); + } + + get bobInputToken(): Bytes { + let value = this.get("bobInputToken"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobInputToken(value: Bytes) { + this.set("bobInputToken", Value.fromBytes(value)); + } + + get bobOutputVaultId(): Bytes { + let value = this.get("bobOutputVaultId"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobOutputVaultId(value: Bytes) { + this.set("bobOutputVaultId", Value.fromBytes(value)); + } + + get bobOutputToken(): Bytes { + let value = this.get("bobOutputToken"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobOutputToken(value: Bytes) { + this.set("bobOutputToken", Value.fromBytes(value)); + } + + get bobBounty(): Bytes { + let value = this.get("bobBounty"); + if (!value || value.kind == ValueKind.NULL) { + throw new Error("Cannot return null for a required field."); + } else { + return value.toBytes(); + } + } + + set bobBounty(value: Bytes) { + this.set("bobBounty", Value.fromBytes(value)); + } +} + +export class OrderLoader extends Entity { + _entity: string; + _field: string; + _id: string; + + constructor(entity: string, id: string, field: string) { + super(); + this._entity = entity; + this._id = id; + this._field = field; + } + + load(): Order[] { + let value = store.loadRelated(this._entity, this._id, this._field); + return changetype(value); + } +} + +export class TradeLoader extends Entity { + _entity: string; + _field: string; + _id: string; + + constructor(entity: string, id: string, field: string) { + super(); + this._entity = entity; + this._id = id; + this._field = field; + } + + load(): Trade[] { + let value = store.loadRelated(this._entity, this._id, this._field); + return changetype(value); + } +} + +export class VaultLoader extends Entity { + _entity: string; + _field: string; + _id: string; + + constructor(entity: string, id: string, field: string) { + super(); + this._entity = entity; + this._id = id; + this._field = field; + } + + load(): Vault[] { + let value = store.loadRelated(this._entity, this._id, this._field); + return changetype(value); + } +} + +export class DepositLoader extends Entity { + _entity: string; + _field: string; + _id: string; + + constructor(entity: string, id: string, field: string) { + super(); + this._entity = entity; + this._id = id; + this._field = field; + } + + load(): Deposit[] { + let value = store.loadRelated(this._entity, this._id, this._field); + return changetype(value); + } +} + +export class WithdrawalLoader extends Entity { + _entity: string; + _field: string; + _id: string; + + constructor(entity: string, id: string, field: string) { + super(); + this._entity = entity; + this._id = id; + this._field = field; + } + + load(): Withdrawal[] { + let value = store.loadRelated(this._entity, this._id, this._field); + return changetype(value); + } +} + +export class AddOrderLoader extends Entity { + _entity: string; + _field: string; + _id: string; + + constructor(entity: string, id: string, field: string) { + super(); + this._entity = entity; + this._id = id; + this._field = field; + } + + load(): AddOrder[] { + let value = store.loadRelated(this._entity, this._id, this._field); + return changetype(value); + } +} + +export class RemoveOrderLoader extends Entity { + _entity: string; + _field: string; + _id: string; + + constructor(entity: string, id: string, field: string) { + super(); + this._entity = entity; + this._id = id; + this._field = field; + } + + load(): RemoveOrder[] { + let value = store.loadRelated(this._entity, this._id, this._field); + return changetype(value); + } +} + +export class TakeOrderLoader extends Entity { + _entity: string; + _field: string; + _id: string; + + constructor(entity: string, id: string, field: string) { + super(); + this._entity = entity; + this._id = id; + this._field = field; + } + + load(): TakeOrder[] { + let value = store.loadRelated(this._entity, this._id, this._field); + return changetype(value); + } +} diff --git a/subgraph/subgraph.yaml b/subgraph/subgraph.yaml index ebcf930c56..f7e063b46e 100644 --- a/subgraph/subgraph.yaml +++ b/subgraph/subgraph.yaml @@ -19,11 +19,11 @@ dataSources: - Transaction abis: - name: Raindex - file: ../out/RaindexV6.sol/RaindexV6.json + file: ./abis/Raindex.json - name: ERC20 - file: ../out/ERC20.sol/ERC20.json + file: ./abis/ERC20.json - name: DecimalFloat - file: ../out/DecimalFloat.sol/DecimalFloat.json + file: ./abis/DecimalFloat.json eventHandlers: - event: DepositV2(address,address,bytes32,uint256) handler: handleDeposit From c0b0c7de1aff78f05597232e3495b18935966a10 Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 30 May 2026 12:42:22 +0000 Subject: [PATCH 2/7] Drop prep-base.sh; callers use pointers.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit prep-base.sh and pointers.sh now do the same thing post artifact-commit (forge soldeer install + forge build) — meta is committed (build-meta.sh hook) and the double forge build in prep-base was only there for the meta-regen cycle. Collapse onto pointers.sh. Also fix shellcheck SC2068 (quote ${keep[@]} array expansions) and SC2034 (drop unused GREEN/NC vars) in the surviving prep-*.sh. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/npm-package-release.yml | 2 +- REUSE.toml | 1 - prep-all.sh | 11 +++--- prep-base.sh | 41 ----------------------- prep-webapp.sh | 9 ++--- 5 files changed, 8 insertions(+), 56 deletions(-) delete mode 100755 prep-base.sh diff --git a/.github/workflows/npm-package-release.yml b/.github/workflows/npm-package-release.yml index 9cb7d62ab5..be0ab8208a 100644 --- a/.github/workflows/npm-package-release.yml +++ b/.github/workflows/npm-package-release.yml @@ -87,7 +87,7 @@ jobs: fi echo "Repositories match" # install dependencies and build the workspace - - run: ./prep-base.sh + - run: ./pointers.sh # remove debug artifacts to free disk space before WASM build - name: Remove Unused Artifacts run: rm -rf ./target/debug diff --git a/REUSE.toml b/REUSE.toml index 4eea063e00..3fb2a1dd0c 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -34,7 +34,6 @@ path = [ "crates/**/", "meta/**/", "test-resources/**/", - "prep-base.sh", "prep-webapp.sh", "audit/**/", ".coderabbit.yaml", diff --git a/prep-all.sh b/prep-all.sh index a47a72a720..ffb45a4d54 100755 --- a/prep-all.sh +++ b/prep-all.sh @@ -27,14 +27,14 @@ keep=( ) echo "Preparing base setup..." -./prep-base.sh +./pointers.sh echo "Setting up UI components..." -nix develop -i ${keep[@]} -c raindex-ui-components-prelude +nix develop -i "${keep[@]}" -c raindex-ui-components-prelude echo "Building packages..." -nix develop -i ${keep[@]} -c bash -c '(npm run build -w @rainlanguage/raindex)' -nix develop -i ${keep[@]} -c bash -c '(npm run build -w @rainlanguage/ui-components && npm run build -w @rainlanguage/webapp)' +nix develop -i "${keep[@]}" -c bash -c '(npm run build -w @rainlanguage/raindex)' +nix develop -i "${keep[@]}" -c bash -c '(npm run build -w @rainlanguage/ui-components && npm run build -w @rainlanguage/webapp)' # Temporarily disable command echoing set +x @@ -42,9 +42,6 @@ set +x export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 -GREEN='\033[0;32m' -NC='\033[0m' # No Color - # Print the completion message printf "\033[0;32m" # Set text to green printf "╔════════════════════════════════════════════════════════════════════════╗\n" diff --git a/prep-base.sh b/prep-base.sh deleted file mode 100755 index 49030a517b..0000000000 --- a/prep-base.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash - -set -euxo pipefail - -echo "Starting project setup..." - -keep=( - -k CI_DEPLOY_SEPOLIA_RPC_URL - -k CI_FORK_SEPOLIA_DEPLOYER_ADDRESS - -k CI_FORK_SEPOLIA_BLOCK_NUMBER - -k CI_DEPLOY_ARBITRUM_RPC_URL - -k CI_DEPLOY_BASE_RPC_URL - -k CI_DEPLOY_BASE_SEPOLIA_RPC_URL - -k CI_DEPLOY_FLARE_RPC_URL - -k CI_DEPLOY_POLYGON_RPC_URL - -k CI_SEPOLIA_METABOARD_URL - -k RPC_URL_ETHEREUM_FORK - -k COMMIT_SHA - -k DEPLOYMENT_KEY - -k PUBLIC_WALLETCONNECT_PROJECT_ID -) - -nix develop -c forge soldeer install -nix develop -c forge build - -nix develop -i "${keep[@]}" -c raindex-prelude - -nix develop -i "${keep[@]}" -c forge build - -set +x - -export LANG=en_US.UTF-8 -export LC_ALL=en_US.UTF-8 - -printf "\033[0;32m" -printf "╔════════════════════════════════════════════════════════════════════════╗\n" -printf "║ Base Setup Complete! ║\n" -printf "╚════════════════════════════════════════════════════════════════════════╝\n" -printf "\033[0m" - -set -x diff --git a/prep-webapp.sh b/prep-webapp.sh index 2b212165a5..7cdfa78ee3 100755 --- a/prep-webapp.sh +++ b/prep-webapp.sh @@ -27,16 +27,16 @@ keep=( ) echo "Preparing base setup..." -./prep-base.sh +./pointers.sh rm -rf target || true echo "Building packages..." -nix develop -i ${keep[@]} -c bash -c '(npm run build -w @rainlanguage/raindex)' +nix develop -i "${keep[@]}" -c bash -c '(npm run build -w @rainlanguage/raindex)' rm -rf target || true -nix develop -i ${keep[@]} -c bash -c '(npm run build -w @rainlanguage/ui-components && npm run build -w @rainlanguage/webapp)' +nix develop -i "${keep[@]}" -c bash -c '(npm run build -w @rainlanguage/ui-components && npm run build -w @rainlanguage/webapp)' # Temporarily disable command echoing set +x @@ -44,9 +44,6 @@ set +x export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 -GREEN='\033[0;32m' -NC='\033[0m' # No Color - # Print the completion message printf "\033[0;32m" # Set text to green printf "╔════════════════════════════════════════════════════════════════════════╗\n" From a67348df204af3c49a4b27a351d9ac9560c68b9e Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 30 May 2026 13:20:13 +0000 Subject: [PATCH 3/7] Strip subgraph ABIs to .abi; cover .prettierignore in REUSE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - script/build-subgraph.sh: jq '{abi}' instead of cp — forge's full artifact JSON (bytecode/metadata/id) embeds build-host paths that drift across runners and defeat the rainix-copy-artifacts diff gate. Graph CLI + matchstick only read `.abi`, so stripping costs nothing. - subgraph/abis/*.json: regenerated against the new strip. - REUSE.toml: add .prettierignore (file added by an earlier commit on this branch, missing from the path list, broke rainix-sol / legal). Co-Authored-By: Claude Opus 4.7 --- REUSE.toml | 1 + script/build-subgraph.sh | 11 +- subgraph/abis/DecimalFloat.json | 1105 +++++++++++++- subgraph/abis/ERC20.json | 313 +++- subgraph/abis/Raindex.json | 2376 ++++++++++++++++++++++++++++++- 5 files changed, 3800 insertions(+), 6 deletions(-) diff --git a/REUSE.toml b/REUSE.toml index 3fb2a1dd0c..4a5d30097a 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -6,6 +6,7 @@ path = [ ".gas-snapshot", ".github/**/", ".gitignore", + ".prettierignore", ".vscode/**/", ".cargo/**/", "README.md", diff --git a/script/build-subgraph.sh b/script/build-subgraph.sh index e7cfacb0d2..337dcc14a2 100755 --- a/script/build-subgraph.sh +++ b/script/build-subgraph.sh @@ -5,9 +5,14 @@ set -euxo pipefail mkdir -p subgraph/abis -cp out/RaindexV6.sol/RaindexV6.json subgraph/abis/Raindex.json -cp out/ERC20.sol/ERC20.json subgraph/abis/ERC20.json -cp out/DecimalFloat.sol/DecimalFloat.json subgraph/abis/DecimalFloat.json +# Strip to just `.abi` — the rest of forge's artifact JSON +# (bytecode/metadata/id) embeds build-host-specific paths and isn't +# deterministic across runners, which would defeat the +# rainix-copy-artifacts diff gate. Graph CLI / matchstick only read +# `.abi` anyway. +jq '{abi}' out/RaindexV6.sol/RaindexV6.json > subgraph/abis/Raindex.json +jq '{abi}' out/ERC20.sol/ERC20.json > subgraph/abis/ERC20.json +jq '{abi}' out/DecimalFloat.sol/DecimalFloat.json > subgraph/abis/DecimalFloat.json cd subgraph npm ci diff --git a/subgraph/abis/DecimalFloat.json b/subgraph/abis/DecimalFloat.json index be9354bc77..ae07f50603 100644 --- a/subgraph/abis/DecimalFloat.json +++ b/subgraph/abis/DecimalFloat.json @@ -1 +1,1104 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"FORMAT_DEFAULT_SCIENTIFIC_MAX","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"FORMAT_DEFAULT_SCIENTIFIC_MIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"abs","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"add","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"ceil","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"div","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"e","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"eq","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"floor","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"format","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"scientific","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"format","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"format","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"scientificMin","type":"bytes32","internalType":"Float"},{"name":"scientificMax","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"frac","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"fromFixedDecimalLossless","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"fromFixedDecimalLossy","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"},{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"gt","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"gte","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"integer","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"inv","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"isZero","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"log10","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"lt","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"lte","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"max","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"maxNegativeValue","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"maxPositiveValue","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"min","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"minNegativeValue","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"minPositiveValue","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"minus","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"mul","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"parse","inputs":[{"name":"str","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"pow","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"pow10","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"sqrt","inputs":[{"name":"a","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"sub","inputs":[{"name":"a","type":"bytes32","internalType":"Float"},{"name":"b","type":"bytes32","internalType":"Float"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"function","name":"toFixedDecimalLossless","inputs":[{"name":"float","type":"bytes32","internalType":"Float"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"toFixedDecimalLossy","inputs":[{"name":"float","type":"bytes32","internalType":"Float"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"zero","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"pure"},{"type":"error","name":"CoefficientOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"DivisionByZero","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ExponentOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ExponentUnderflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"FixedDecimalOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"Log10Negative","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"Log10Zero","inputs":[]},{"type":"error","name":"LogTablesNotDeployed","inputs":[{"name":"tablesAddress","type":"address","internalType":"address"},{"name":"expectedCodehash","type":"bytes32","internalType":"bytes32"},{"name":"actualCodehash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"LossyConversionFromFloat","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"LossyConversionToFloat","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"MaximizeOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"MulDivOverflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NegativeFixedDecimalConversion","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"PowNegativeBase","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ScientificMinNotLessThanMax","inputs":[{"name":"scientificMin","type":"bytes32","internalType":"Float"},{"name":"scientificMax","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"UnformatableExponent","inputs":[{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"WithTargetExponentOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"},{"name":"targetExponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ZeroNegativePower","inputs":[{"name":"b","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"ZeroStringStartPointer","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b5060156019565b60b8565b73c51a14251b0dcf0ae24a96b7153991378938f5f53f7f2573004ac3a9ee7fc8d73654d76386f1b6b99e34cdf86a689c4691e47143420f811460b557604051630912d0ff60e31b815273c51a14251b0dcf0ae24a96b7153991378938f5f560048201527f2573004ac3a9ee7fc8d73654d76386f1b6b99e34cdf86a689c4691e47143420f60248201526044810182905260640160405180910390fd5b50565b613c87806100c55f395ff3fe608060405234801561000f575f80fd5b506004361061029d575f3560e01c806381f7e2f511610171578063cde72ef3116100d2578063dd64691711610088578063e5526ecd1161006e578063e5526ecd146105e4578063e75f991f146105f7578063ffae15ba1461060a575f80fd5b8063dd646917146105be578063e0db5888146105d1575f80fd5b8063d1de592a116100b8578063d1de592a14610571578063d35273a714610584578063d3d6ffa8146105ab575f80fd5b8063cde72ef314610551578063d102b4d31461055e575f80fd5b8063a19684b711610127578063bc1b392d1161010d578063bc1b392d146104f2578063bc62d8d8146104f8578063cb09682b1461052b575f80fd5b8063a19684b7146104d2578063a90d041a146104df575f80fd5b806396ce1ec71161015757806396ce1ec7146104885780639b4afd991461049b578063a100a3d9146104bf575f80fd5b806381f7e2f5146104625780638dc2980714610475575f80fd5b80633447c0301161021b5780635ca0e7a4116101d1578063719cd99d116101b7578063719cd99d1461042957806373bfb2831461043c57806381a822721461044f575f80fd5b80635ca0e7a4146103f0578063602c35fc14610403575f80fd5b80633b3bd868116102015780633b3bd868146103b757806341aa0080146103ca5780635b23771d146103dd575f80fd5b80633447c03014610374578063371493ce14610397575f80fd5b80631ee62f111161027057806328fa1f011161025657806328fa1f011461033b5780633004fa411461034e5780633029740014610361575f80fd5b80631ee62f11146103155780632538835014610328575f80fd5b806304327dc5146102a1578063078b665b146102c75780630b6429bc146102da578063146e82ad14610302575b5f80fd5b6102b46102af3660046137cd565b610630565b6040519081526020015b60405180910390f35b6102b46102d53660046137e4565b610640565b6102ed6102e8366004613814565b610652565b604080519283529015156020830152016102be565b6102b46103103660046137cd565b61066a565b6102b46103233660046137cd565b610689565b6102b46103363660046137cd565b6106a8565b6102b46103493660046137cd565b6106c7565b6102b461035c3660046137e4565b6106d1565b6102b461036f3660046137e4565b6106f1565b6103876103823660046137e4565b6106fc565b60405190151581526020016102be565b6103aa6103a536600461383e565b610707565b6040516102be9190613870565b6102b46103c5366004613814565b610713565b6102b46103d83660046137e4565b61071e565b6102b46103eb366004613814565b610729565b6102b46103fe3660046137cd565b610734565b7f80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102b4565b6102b46104373660046137cd565b61073e565b61038761044a3660046137e4565b610748565b6102b461045d3660046137cd565b610753565b6103876104703660046137e4565b61075d565b6103876104833660046137e4565b610768565b6102b46104963660046137e4565b610773565b6102b47c090000000000000000000000000000000000000000000000000000000181565b6103aa6104cd3660046137cd565b61077e565b6001600160ff1b016102b4565b6102b46104ed3660046137e4565b6107c8565b5f6102b4565b61050b6105063660046138b9565b6107d3565b604080516001600160e01b031990931683526020830191909152016102be565b7f7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffff6102b4565b63ffffffff60df1b6102b4565b61038761056c3660046137e4565b6107ec565b6102b461057f3660046137e4565b6107f7565b6102b47ffffffffc0000000000000000000000000000000000000000000000000000000181565b6102b46105b93660046137cd565b610802565b6103876105cc3660046137cd565b61080c565b6102b46105df3660046137cd565b61081d565b6103aa6105f2366004613964565b610827565b6102ed610605366004613814565b610897565b7fffffffbe19cfc6ef4f44cf88f14500d013df534fcaad48fca1d5ca47bea26fcc6102b4565b5f61063a826108a3565b92915050565b5f61064b83836108d0565b9392505050565b5f8061065e84846108ec565b915091505b9250929050565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f5610918565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f5610944565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f561097c565b5f61063a8261099a565b5f61064b838373c51a14251b0dcf0ae24a96b7153991378938f5f56109c6565b5f61064b8383610baf565b5f61064b8383610bfc565b606061064b8383610c35565b5f61064b8383610c97565b5f61064b8383610cb2565b5f61064b8383610ce2565b5f61063a82610d00565b5f61063a82610d7d565b5f61064b8383610df0565b5f61063a82610e2b565b5f61064b8383610e5b565b5f61064b8383610e96565b5f61064b8383610ed0565b606061063a827ffffffffc000000000000000000000000000000000000000000000000000000017c0900000000000000000000000000000000000000000000000000000001610827565b5f61064b8383610f00565b5f805f806107e085610f0b565b90969095509350505050565b5f61064b8383610faf565b5f61064b8383610fe9565b5f61063a82611019565b5f6001600160e01b0382161561063a565b5f61063a82611036565b60606108338383610faf565b61085f57604051630ef96fe560e21b815260048101849052602481018390526044015b60405180910390fd5b5f61086985610e2b565b905061088e856108798387610faf565b8061088957506108898386610e96565b610c35565b95945050505050565b5f8061065e8484611062565b5f6001600160e01b038216601b0b60e083901d6108c082826110a2565b90925090505f61088e83836110cc565b5f6108db8383610e96565b6108e5578161064b565b5090919050565b5f806001600160e01b038416601b0b60e085901d61090b828287611119565b9350935050509250929050565b5f61064b837fffffffff00000000000000000000000000000000000000000000000000000005846109c6565b5f6001600160e01b038316601b0b60e084901d610962848383611282565b90925090505f61097283836110cc565b9695505050505050565b5f6001600160e01b038316601b0b60e084901d6109628483836113b7565b5f6001600160e01b038216601b0b60e083901d826109b88383611619565b9150505f61097282846110cc565b5f6001600160e01b03848116601b0b9060e086901d9085166109ee57506001915061064b9050565b5f8213610a5557815f03610a3257610a06855f610faf565b15610a27576040516345f414b960e11b815260048101869052602401610856565b505f915061064b9050565b60405163cceba0f160e01b81526004810183905260248101829052604401610856565b610a60856001610bfc565b8015610a715750610a71865f610e96565b15610a8057859250505061064b565b610a8a855f610faf565b15610ab357610aaa610a9b876108a3565b610aa487611019565b866109c6565b9250505061064b565b6001600160e01b038516601b0b60e086901d5f80610ad18484611619565b915091505f610ae183855f611663565b905060015f8080610b038f6001600160e01b038116601b0b9160e09190911d90565b915091505b60018510610b4a5784600116600103610b2d57610b2784848484611748565b90945092505b600185901c9450610b4082828484611748565b9092509050610b08565b5f80610b578f8e8e6113b7565b91509150610b6782828a8d611748565b9092509050610b778f8383611282565b9092509050610b8882828888611748565b90925090505f610b9883836110cc565b9e5050505050505050505050505050509392505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686611867565b915091505f610bee83836110cc565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610c2a84848484611da7565b979650505050505050565b60606001600160e01b038316601b0b60e084901d5f829003610c7457604051806040016040528060018152602001600360fc1b8152509250505061063a565b8315610c8d57610c848282611dbe565b9250505061063a565b61088e8282612041565b5f805f610ca485856125ab565b9150915061088e82826125f4565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf8686868661262d565b5f6001600160e01b038316601b0b60e084901d61088e828286612657565b5f6001600160e01b038216601b0b60e083901d828112610d2257509192915050565b5f80610d2e8484611619565b915091505f84128015610d4057508015155b15610d7257610d6d8284760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b1961262d565b935091505b5f610c2a83856110cc565b5f6001600160e01b038216601b0b60e083901d828112610d9f57509192915050565b5f80610dab8484611619565b91509150805f03610dc0575093949350505050565b5f811315610d7257610d6d8284760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b19612699565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610e1e84848484612797565b1315979650505050505050565b5f6001600160e01b038216601b0b60e083901d82821215610e50576108c0828261286b565b5f61088e83836110cc565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610e8984848484612797565b1215979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610ec484848484612797565b12979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686611748565b5f6108db8383610faf565b80515f90819060208481019185010182808080610f2886866128c0565b929650909450925090506001600160e01b031984165f03610fa057848303610f89575f80610f568484612c0f565b9150915080610f78575063195c5c5f60e11b9a5f9a5098505050505050505050565b505f9a909950975050505050505050565b5063ad384e8760e01b985f98509650505050505050565b5091975f975095505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610fdd84848484612797565b13979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686612699565b5f6001600160e01b038216601b0b60e083901d6108c0828261286b565b5f6001600160e01b038216601b0b60e083901d826110548383611619565b5090505f61097282846110cc565b5f805f805f6110718787612ce7565b9250925092505f806110838585612c0f565b91509150818380156110925750815b9650965050505050509250929050565b5f8061065e760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b198686611867565b5f805f6110d98585612c0f565b91509150801580156110e9575081155b1561111157604051638eba4d0760e01b81526004810186905260248101859052604401610856565b509392505050565b5f805f85121561114657604051634a7d166b60e01b81526004810186905260248101859052604401610856565b845f0361115857505f9050600161127a565b8460ff841685018581121561118a5760405163d556b11160e01b81526004810188905260248101879052604401610856565b5f805f8312156111d657604c198312156111ad575f80955095505050505061127a565b825f03600a0a91508184816111c4576111c461398d565b049550508402909114915061127a9050565b5f83131561126f57604d8313156112135760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610856565b82600a0a9150815f19816112295761122961398d565b0484111561125d5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610856565b509190910292506001915061127a9050565b509193506001925050505b935093915050565b5f805f8412156112be57611296848461286b565b90945092506112a6858585611282565b90945092506112b584846110a2565b9150915061127a565b5f806112ca8686611619565b9092509050845f80806112dd8585612d2a565b9194509250905061270d6127106112f56001826139b5565b851461130c576113068d8686612dbf565b90925090505b8315611379575f61131e8660016139db565b90505b8084858302816113335761133361398d565b051461134a57600a84059350600a88059750611321565b61136d6113578588613a02565b896113628785613a02565b8f8787600319612e78565b909d509b506113829050565b819b506003199a505b50505050508661139384835f611663565b61139e8860016139db565b6113a891906139db565b94509450505050935093915050565b5f8083836113c58282612f15565b90965094505f861361141457855f036113f15760405163561fc7b560e01b815260040160405180910390fd5b604051635d3fd4db60e01b81526004810183905260248101829052604401610856565b505083760161bcca7119915b50764b4abe86529797775a5f171951604c1b0361144c5761144283604c6139db565b5f9150915061127a565b760161bcca7119915b50764b4abe86529797775a5f171951604c1b8412158061147757604a1961147b565b604b195b5f0b84126115dd575f805f805f8561149457604b611497565b604c5b6114a1908a6139db565b90505f80876114ce577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000006114ef565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca0000000000000000005b6001600160f81b03169050808c816115095761150961398d565b05818102955090850193506103e7190190506115258c82612f52565b7d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000000295508594508a84146115ab57612327811461158c576115678c82600101612f52565b7d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000026115a8565b760161bcca7119915b50764b4abe86529797775a5f171951604c1b5b94505b506115bd838b848c8989604b19612e78565b909a5098506115ce8a8a835f612699565b9750975050505050505061127a565b6115e785856110a2565b90955093506115f78686866113b7565b9095509350611606858561286b565b925092505061127a565b50935093915050565b5f805f831261162c57508290505f610663565b604b1983121561164057505f905082610663565b5f839003600a0a8085816116565761165661398d565b0794859003959350505050565b5f81830361167257508261064b565b828213156116b557828203604c81138061168c57505f8113155b1561169a575f91505061064b565b80600a0a85816116ac576116ac61398d565b0591505061064b565b818303604c8113806116c757505f8113155b156116f6576040516301d5d6d160e41b8152600481018690526024810185905260448101849052606401610856565b600a81900a8581028682828161170e5761170e61398d565b051461173e576040516301d5d6d160e41b8152600481018890526024810187905260448101869052606401610856565b925061064b915050565b5f8085158415178015611760575f92505f915061185d565b61176a84876139db565b91505f61177688612fd9565b90505f61178287612fd9565b90505f61178f8383613007565b5090505f6f0785ee10d5da46d900f436a0000000008211156117c4576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a76400008211156117e557670de0b6b3a7640000820491506012015b633b9aca008211156117fe57633b9aca00820491506009015b61271082111561181357612710820491506004015b811561182757600a82049150600101611813565b61183181876139db565b95506118538b8a61184d878761184887600a613b11565b613023565b896130ef565b9097509550505050505b5094509492505050565b5f80835f0361189357604051637a97930f60e01b81526004810187905260248101869052604401610856565b855f036118a457505f905080611d9e565b5f805f806118b28a8a61318f565b919b50995091506118c3888861318f565b919950975090505f6118d48b612fd9565b90505f6118e08a612fd9565b9050760161bcca7119915b50764b4abe86529797775a5f171951604c1b604c81831015611c9f57841561193157507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b611c77565b6f4b3b4ca85a86c47a098a224000000000831015611a5d57678ac7230489e800008310156119c1576402540be40083101561198f57620186a083101561197f5750620186a090506005611c38565b506402540be4009050600a611c38565b655af3107a40008310156119ae5750655af3107a40009050600e611c38565b50678ac7230489e8000090506013611c38565b6b204fce5e3e25026110000000831015611a135769152d02c7e14af68000008310156119fc575069152d02c7e14af680000090506017611c38565b506b204fce5e3e250261100000009050601c611c38565b6d314dc6448d9338c15b0a00000000831015611a4257506d314dc6448d9338c15b0a0000000090506021611c38565b506f4b3b4ca85a86c47a098a22400000000090506026611c38565b780197d4df19d605767337e9f14d3eec8920e400000000000000831015611b555773af298d050e4395d69670b12b7f41000000000000831015611af0577172cb5bd86321e38cb6ce6682e80000000000831015611ad157507172cb5bd86321e38cb6ce6682e800000000009050602b611c38565b5073af298d050e4395d69670b12b7f4100000000000090506030611c38565b76010b46c6cdd6e3e0828f4db456ff0c8ea0000000000000831015611b31575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035611c38565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a611c38565b7c03b58e88c75313ec9d329eaaa18fb92f75215b17100000000000000000831015611beb577a026e4d30eccc3215dd8f3157d27e23acbdcfe68000000000000000831015611bc357507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f611c38565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044611c38565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000831015611c3857507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b818311611c4d57600a820491505f1901611c38565b815f03611c77576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610856565b85611c9f576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610856565b80600160ff1b018d12611cb657808d039c50611cf4565b600160ff1b9c90038c015f811315611cf457806001600160ff1b03038b13611ce157998a0199611cf4565b5f80995099505050505050505050611d9e565b5f808e128015611d0357505f8c135b15611d2457600160ff1b8e01808d13611d1c575f611d20565b808d035b9150505b8b818f01039750611d418f8e611d3b888789613023565b8b6130ef565b90995097505f811315611d8b57604c811315611d6b575f809a509a50505050505050505050611d9e565b80600a0a8981611d7d57611d7d61398d565b059850885f03611d8b575f97505b50969850949650611d9e95505050505050565b94509492505050565b5f611db485858585612797565b1495945050505050565b6060611dca8383612f15565b90935091505f80611df5760161bcca7119915b50764b4abe86529797775a5f171951604c1b86613b1c565b15611e1f5750760161bcca7119915b50764b4abe86529797775a5f171951604c1b9050604c611e3f565b507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b5b5f611e4a8387613b1c565b90505f611e578488613b48565b90505f80831215611e7157506001611e6e83613b5b565b92505b5f821215611e8857506001611e8582613b5b565b91505b60408051602081019091525f81528215611f73575f80611ea9600a89613b6f565b90505b611eb68186613b1c565b5f03611edb57611ec7600a82613b6f565b905081611ed381613b82565b925050611eac565b60408051602081019091525f8082525b83811015611f1e5781604051602001611f049190613bb1565b60408051601f198184030181529190529150600101611eeb565b505b611f2b600a87613b48565b5f03611f4357611f3c600a87613b1c565b9550611f20565b80611f4d876133e9565b604051602001611f5e929190613bcd565b60405160208183030381529060405293505050505b5f611f7d856133e9565b90505f611f8a878b6139db565b90505f8115611fc057611f9c826133e9565b604051602001611fac9190613bf3565b604051602081830303815290604052611fd0565b60405180602001604052805f8152505b90505f85611fec5760405180602001604052805f815250612007565b604051806040016040528060018152602001602d60f81b8152505b9050808486846040516020016120209493929190613c08565b6040516020818303038152906040529a505050505050505050505092915050565b60606103e882138061205c57506120596103e8613b5b565b82125b1561207d57604051630e44c72b60e41b815260048101839052602401610856565b5f8084129081156120985761209185613b5b565b905061209b565b50835b5f6120a582613459565b80519091505f5b81811080156120f4575082816120c3600185613c28565b6120cd9190613c28565b815181106120dd576120dd613c3b565b6020910101516001600160f81b031916600360fc1b145b1561210b578061210381613b82565b9150506120ac565b5f6121168284613c28565b90505f612123838a6139db565b90505f8761213f5760405180602001604052805f81525061215a565b604051806040016040528060018152602001602d60f81b8152505b90505f821261228857815f61216f8286613c4f565b67ffffffffffffffff811115612187576121876138a5565b6040519080825280601f01601f1916602001820160405280156121b1576020820181803683370190505b5090505f5b8581101561220b578881815181106121d0576121d0613c3b565b602001015160f81c60f81b8282815181106121ed576121ed613c3b565b60200101906001600160f81b03191690815f1a9053506001016121b6565b505f5b8281101561225457600360fc1b826122268389613c4f565b8151811061223657612236613c3b565b60200101906001600160f81b03191690815f1a90535060010161220e565b508281604051602001612268929190613c62565b6040516020818303038152906040529a505050505050505050505061063a565b5f61229283613b5b565b90508084111561242d575f6122a78286613c28565b90505f6122b5866001613c4f565b67ffffffffffffffff8111156122cd576122cd6138a5565b6040519080825280601f01601f1916602001820160405280156122f7576020820181803683370190505b5090505f5b828110156123515789818151811061231657612316613c3b565b602001015160f81c60f81b82828151811061233357612333613c3b565b60200101906001600160f81b03191690815f1a9053506001016122fc565b50601760f91b81838151811061236957612369613c3b565b60200101906001600160f81b03191690815f1a9053505f5b838110156123f857896123948285613c4f565b815181106123a4576123a4613c3b565b01602001516001600160f81b03191682826123c0866001613c4f565b6123ca9190613c4f565b815181106123da576123da613c3b565b60200101906001600160f81b03191690815f1a905350600101612381565b50838160405160200161240c929190613c62565b6040516020818303038152906040529b50505050505050505050505061063a565b5f6124388583613c28565b90505f85612447836002613c4f565b6124519190613c4f565b67ffffffffffffffff811115612469576124696138a5565b6040519080825280601f01601f191660200182016040528015612493576020820181803683370190505b509050600360fc1b815f815181106124ad576124ad613c3b565b60200101906001600160f81b03191690815f1a905350601760f91b816001815181106124db576124db613c3b565b60200101906001600160f81b03191690815f1a9053505f5b8281101561253a57600360fc1b8261250c836002613c4f565b8151811061251c5761251c613c3b565b60200101906001600160f81b03191690815f1a9053506001016124f3565b505f5b868110156123f85789818151811061255757612557613c3b565b01602001516001600160f81b0319168282612573866002613c4f565b61257d9190613c4f565b8151811061258d5761258d613c3b565b60200101906001600160f81b03191690815f1a90535060010161253d565b5f805f805f6125ba8787612ce7565b925092509250806125e857604051636238bcb360e11b81526004810184905260248101839052604401610856565b50909590945092505050565b5f805f6126018585612c0f565b9150915080611111576040516322c9f7bb60e01b81526004810186905260248101859052604401610856565b5f80612639848461286b565b909450925061264a86868686612699565b9150915094509492505050565b5f805f612665868686611119565b91509150806126905760405162bc8ecf60e31b81526004810187905260248101869052604401610856565b50949350505050565b5f80851584151780156126c557865f036126b95784849250925050611d9e565b86869250925050611d9e565b6126cf8787612f15565b90975095506126de8585612f15565b9095509350858413156126f2579395929492935b838603604c81111561270b578787935093505050611d9e565b80600a0a868161271d5761271d61398d565b0595505086850180881860ff90811c151589881890911c1516801561278657876001600160ff1b030361276d5760405163d556b11160e01b8152600481018a905260248101899052604401610856565b600a96879005969098058601976001979097019661278a565b8198505b5096979596505050505050565b5f80851584151781871282861218178584141780156127bc5786859250925050611d9e565b505f858413156127d0575092949193919260015b8386035f8112604c82131780156128035782156127f5575f8994509450505050611d9e565b885f94509450505050611d9e565b600a82900a8981028a82828161281b5761281b61398d565b0514612847578415612837575f8b965096505050505050611d9e565b8a5f965096505050505050611d9e565b841561285c578896509450611d9e9350505050565b9550879450611d9e9350505050565b5f80600160ff1b84036128b6576001600160ff1b0383036128a95760405163d556b11160e01b81526004810185905260248101849052604401610856565b600a840593508260010192505b50505f9190910391565b5f8281806128d58386652000000000006134f6565b925085831415836128ef81886703ff0000000000006134f6565b945080850361291057506334bd206960e01b94505f9250829150612c069050565b5f8061291c8a8861351f565b90925090506001600160e01b0319821615612942575095505f9350839250612c06915050565b86519095506540000000000060015f9290921a9190911b161515888710169150508015612afd57506001909301925f8461298581896703ff0000000000006134f6565b95508086036129a75750637bfa48af60e01b95505f9350839250612c06915050565b855b5f1981018051908a1160015f9290921a9190911b6601000000000000161515166001036129d8575f19016129a9565b818114612a17575f806129eb848461351f565b90925090506001600160e01b0319821615612a13575097505f9550859450612c069350505050565b9350505b5f831215612a395750637bfa48af60e01b96505f9450849350612c0692505050565b8315612a4557825f0392505b80820394505f851315612a6b5750629d955560e11b96505f9450849350612c0692505050565b855f03612a7a57829550612afa565b5f8590036043811115612aa2575063195c5c5f60e11b97505f9550859450612c069350505050565b600a0a8681025f88838381612ab957612ab961398d565b0514159050601b82900b8214158180612acf5750805b15612af2575063195c5c5f60e11b9a505f9850889750612c069650505050505050565b505084019650505b50505b84516c2000000020000000000000000060015f9290921a9190911b161515878610168015612bf75760019095019485612b3d818a652000000000006134f6565b965086612b53818b6703ff0000000000006134f6565b9750808803612b765750629d955560e11b97505f9550859450612c069350505050565b505f80612b83838a61351f565b90925090506001600160e01b0319821615612bab575097505f9550859450612c069350505050565b9250508482015f83138015612bbf57508581125b80612bd357505f83128015612bd357508581135b15612bf3575063d556b11160e01b97505f9550859450612c069350505050565b9450505b845f03612c02575f93505b5050505b92959194509250565b5f601b83900b8314838382612c73577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515612c5357620186a0860595506005850194505b8586601b0b14612c6e57600a86059550846001019450612c53565b612c89565b855f03612c8957505f9250600191506106639050565b848560030b14612ccc575f851215612ca957505f92508291506106639050565b60405163d556b11160e01b81526004810183905260248101829052604401610856565b50506001600160e01b03841660e084901b1791509250929050565b5f808060ff841681036001600160ff1b03861115612d1957600a860460018201600a88065f1493509350935050612d23565b8593509150600190505b9250925092565b5f805f8360031903612d4457508391505f90506001612d23565b600319841215612d9657604f19841215612d6757505f9150508215156001612d23565b5f846004015f03600a0a90505f818781612d8357612d8361398d565b0594505080840286141592509050612d23565b5f8412612dab57505f91508190506001612d23565b50505060048101600a0a82025f6001612d23565b5f80806064612dd1600a612328613b6f565b612dde600a612328613b6f565b612de9906002613c70565b612df4906001613c4f565b612dfe9190613c4f565b612e089190613c4f565b9050612e4c565b5f8052600280600a8504028301601e833c5f80516107d0840193505f80526001600a8606600a6064880402018501601f853c5f5101949350505050565b612e57858288612e0f565b9250831561161057612e6d600186018288612e0f565b915050935093915050565b5f80888803612e8b575083905081612f09565b5f805f80612e9b8c8b8f8d61262d565b915091505f80612ead8a8a8d8c61262d565b91509150612ebd84848484611748565b8096508197505050505050505f80612ed78b8b8f8d61262d565b915091505f80612ee986868686611867565b915091505f80612efb84848f8e612699565b909a50985050505050505050505b97509795505050505050565b5f805f805f612f24878761318f565b925092509250806125e8576040516305e51ecb60e01b81526004810188905260248101879052604401610856565b5f80612f61600a612328613b6f565b612f6c906002613c70565b612f77906001613c4f565b90505f612f87600a612328613b6f565b90506002600a8504026001015f8052600281601e883c505f51617fff81169350618000811615612fb657918101915b505f80526001600a8506600a6064870402018301601f873c50505f510192915050565b5f80821215612ffe57600160ff1b8203612ff85750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f6130308686613007565b91509150815f036130545783818161304a5761304a61398d565b049250505061064b565b8382106130855760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610856565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f858718121561316b576001600160ff1b038411156131585761311c6001600160ff1b036001613c4f565b84036131305750600160ff1b905081611d9e565b61313b600a85613b6f565b61314490613b5b565b61314f8460016139db565b91509150611d9e565b61316184613b5b565b8391509150611d9e565b6001600160ff1b0384111561318557613144600a85613b6f565b5082905081611d9e565b5f805f845f036131a757505f91508190506001612d23565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03613394576f4b3b4ca85a86c47a098a224000000000850515801561320957507f80000000000000000000000000000000000000000000000000000000000000268412155b1561322a576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561327257507f80000000000000000000000000000000000000000000000000000000000000138412155b1561328b57678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156132d757507f800000000000000000000000000000000000000000000000000000000000000a8412155b156132ed576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561333c57507f80000000000000000000000000000000000000000000000000000000000000028412155b15613352576064850294506002840393506132ed565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561338257506001600160ff1b018412155b1561339457600a850294506001840393505b600a808602908105861480156133b157506001600160ff1b018512155b156133c0578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b60605f82126134065760405180602001604052805f815250613421565b604051806040016040528060018152602001602d60f81b8152505b61343260ff84901d80850118613459565b604051602001613443929190613c62565b6040516020818303038152906040529050919050565b60605f613465836135ca565b60010190505f8167ffffffffffffffff811115613484576134846138a5565b6040519080825280601f01601f1916602001820160405280156134ae576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846134b857509392505050565b5f5b5f82600186515f1a1b16118385101615613517576001840193506134f8565b509192915050565b81515f90819065200000000000600191831a9190911b1615158385101680850190828061354c84886136ab565b90925090506001600160e01b031982161561356f575093505f9250610663915050565b825f036135a0576001600160ff1b03811161358a575f613593565b630fdc263560e01b5b9550935061066392505050565b600160ff1b81116135b1575f6135ba565b630fdc263560e01b5b95505f0393505050509250929050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613612577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061363e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061365c57662386f26fc10000830492506010015b6305f5e1008310613674576305f5e100830492506008015b612710831061368857612710830492506004015b6064831061369a576064830492506002015b600a831061063a5760010192915050565b5f808284106136c557506334bd206960e01b90505f610663565b835f036136e55760405163369a59b560e21b815260040160405180910390fd5b60305f5f198501815b8782101580156136fe5750604d83105b1561372257815160018401935f1990930192600a0a5f9190911a85900302016136ee565b8782106137bf5781515f1a84900360018111156137515750630fdc263560e01b95505f94506106639350505050565b600a84900a810282810183111561377b5750630fdc263560e01b96505f9550610663945050505050565b9190910190505f19909101905b8782106137bf5781515f1a603081146137b35750630fdc263560e01b95505f94506106639350505050565b505f1990910190613788565b5f9890975095505050505050565b5f602082840312156137dd575f80fd5b5035919050565b5f80604083850312156137f5575f80fd5b50508035926020909101359150565b803560ff81168114613002575f80fd5b5f8060408385031215613825575f80fd5b8235915061383560208401613804565b90509250929050565b5f806040838503121561384f575f80fd5b8235915060208301358015158114613865575f80fd5b809150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156138c9575f80fd5b813567ffffffffffffffff808211156138e0575f80fd5b818401915084601f8301126138f3575f80fd5b813581811115613905576139056138a5565b604051601f8201601f19908116603f0116810190838211818310171561392d5761392d6138a5565b81604052828152876020848701011115613945575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f805f60608486031215613976575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181035f8312801583831316838312821617156139d4576139d46139a1565b5092915050565b8082018281125f8312801582168215821617156139fa576139fa6139a1565b505092915050565b8082025f8212600160ff1b84141615613a1d57613a1d6139a1565b818105831482151761063a5761063a6139a1565b600181815b80851115613a6b57815f1904821115613a5157613a516139a1565b80851615613a5e57918102915b93841c9390800290613a36565b509250929050565b5f82613a815750600161063a565b81613a8d57505f61063a565b8160018114613aa35760028114613aad57613ac9565b600191505061063a565b60ff841115613abe57613abe6139a1565b50506001821b61063a565b5060208310610133831016604e8410600b8410161715613aec575081810a61063a565b613af68383613a31565b805f1904821115613b0957613b096139a1565b029392505050565b5f61064b8383613a73565b5f82613b2a57613b2a61398d565b600160ff1b82145f1984141615613b4357613b436139a1565b500590565b5f82613b5657613b5661398d565b500790565b5f600160ff1b8201612ff857612ff86139a1565b5f82613b7d57613b7d61398d565b500490565b5f60018201613b9357613b936139a1565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f613bbc8284613b9a565b600360fc1b81526001019392505050565b601760f91b81525f613beb613be56001840186613b9a565b84613b9a565b949350505050565b606560f81b81525f61064b6001830184613b9a565b5f610972613be5613c22613c1c858a613b9a565b88613b9a565b86613b9a565b8181038181111561063a5761063a6139a1565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561063a5761063a6139a1565b5f613beb613be58386613b9a565b808202811582820484141761063a5761063a6139a156","sourceMap":"525:13549:86:-:0;;;1114:77;;;;;;;;;-1:-1:-1;1138:46:86;:44;:46::i;:::-;525:13549;;2590:358:92;721:42;2673;934:66;2729:47;;2725:217;;2799:132;;-1:-1:-1;;;2799:132:92;;721:42;2799:132;;;216:51:543;934:66:92;283:18:543;;;276:34;326:18;;;319:34;;;189:18;;2799:132:92;;;;;;;2725:217;2638:310;2590:358::o;14:345:543:-;525:13549:86;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b506004361061029d575f3560e01c806381f7e2f511610171578063cde72ef3116100d2578063dd64691711610088578063e5526ecd1161006e578063e5526ecd146105e4578063e75f991f146105f7578063ffae15ba1461060a575f80fd5b8063dd646917146105be578063e0db5888146105d1575f80fd5b8063d1de592a116100b8578063d1de592a14610571578063d35273a714610584578063d3d6ffa8146105ab575f80fd5b8063cde72ef314610551578063d102b4d31461055e575f80fd5b8063a19684b711610127578063bc1b392d1161010d578063bc1b392d146104f2578063bc62d8d8146104f8578063cb09682b1461052b575f80fd5b8063a19684b7146104d2578063a90d041a146104df575f80fd5b806396ce1ec71161015757806396ce1ec7146104885780639b4afd991461049b578063a100a3d9146104bf575f80fd5b806381f7e2f5146104625780638dc2980714610475575f80fd5b80633447c0301161021b5780635ca0e7a4116101d1578063719cd99d116101b7578063719cd99d1461042957806373bfb2831461043c57806381a822721461044f575f80fd5b80635ca0e7a4146103f0578063602c35fc14610403575f80fd5b80633b3bd868116102015780633b3bd868146103b757806341aa0080146103ca5780635b23771d146103dd575f80fd5b80633447c03014610374578063371493ce14610397575f80fd5b80631ee62f111161027057806328fa1f011161025657806328fa1f011461033b5780633004fa411461034e5780633029740014610361575f80fd5b80631ee62f11146103155780632538835014610328575f80fd5b806304327dc5146102a1578063078b665b146102c75780630b6429bc146102da578063146e82ad14610302575b5f80fd5b6102b46102af3660046137cd565b610630565b6040519081526020015b60405180910390f35b6102b46102d53660046137e4565b610640565b6102ed6102e8366004613814565b610652565b604080519283529015156020830152016102be565b6102b46103103660046137cd565b61066a565b6102b46103233660046137cd565b610689565b6102b46103363660046137cd565b6106a8565b6102b46103493660046137cd565b6106c7565b6102b461035c3660046137e4565b6106d1565b6102b461036f3660046137e4565b6106f1565b6103876103823660046137e4565b6106fc565b60405190151581526020016102be565b6103aa6103a536600461383e565b610707565b6040516102be9190613870565b6102b46103c5366004613814565b610713565b6102b46103d83660046137e4565b61071e565b6102b46103eb366004613814565b610729565b6102b46103fe3660046137cd565b610734565b7f80000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102b4565b6102b46104373660046137cd565b61073e565b61038761044a3660046137e4565b610748565b6102b461045d3660046137cd565b610753565b6103876104703660046137e4565b61075d565b6103876104833660046137e4565b610768565b6102b46104963660046137e4565b610773565b6102b47c090000000000000000000000000000000000000000000000000000000181565b6103aa6104cd3660046137cd565b61077e565b6001600160ff1b016102b4565b6102b46104ed3660046137e4565b6107c8565b5f6102b4565b61050b6105063660046138b9565b6107d3565b604080516001600160e01b031990931683526020830191909152016102be565b7f7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffff6102b4565b63ffffffff60df1b6102b4565b61038761056c3660046137e4565b6107ec565b6102b461057f3660046137e4565b6107f7565b6102b47ffffffffc0000000000000000000000000000000000000000000000000000000181565b6102b46105b93660046137cd565b610802565b6103876105cc3660046137cd565b61080c565b6102b46105df3660046137cd565b61081d565b6103aa6105f2366004613964565b610827565b6102ed610605366004613814565b610897565b7fffffffbe19cfc6ef4f44cf88f14500d013df534fcaad48fca1d5ca47bea26fcc6102b4565b5f61063a826108a3565b92915050565b5f61064b83836108d0565b9392505050565b5f8061065e84846108ec565b915091505b9250929050565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f5610918565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f5610944565b5f61063a8273c51a14251b0dcf0ae24a96b7153991378938f5f561097c565b5f61063a8261099a565b5f61064b838373c51a14251b0dcf0ae24a96b7153991378938f5f56109c6565b5f61064b8383610baf565b5f61064b8383610bfc565b606061064b8383610c35565b5f61064b8383610c97565b5f61064b8383610cb2565b5f61064b8383610ce2565b5f61063a82610d00565b5f61063a82610d7d565b5f61064b8383610df0565b5f61063a82610e2b565b5f61064b8383610e5b565b5f61064b8383610e96565b5f61064b8383610ed0565b606061063a827ffffffffc000000000000000000000000000000000000000000000000000000017c0900000000000000000000000000000000000000000000000000000001610827565b5f61064b8383610f00565b5f805f806107e085610f0b565b90969095509350505050565b5f61064b8383610faf565b5f61064b8383610fe9565b5f61063a82611019565b5f6001600160e01b0382161561063a565b5f61063a82611036565b60606108338383610faf565b61085f57604051630ef96fe560e21b815260048101849052602481018390526044015b60405180910390fd5b5f61086985610e2b565b905061088e856108798387610faf565b8061088957506108898386610e96565b610c35565b95945050505050565b5f8061065e8484611062565b5f6001600160e01b038216601b0b60e083901d6108c082826110a2565b90925090505f61088e83836110cc565b5f6108db8383610e96565b6108e5578161064b565b5090919050565b5f806001600160e01b038416601b0b60e085901d61090b828287611119565b9350935050509250929050565b5f61064b837fffffffff00000000000000000000000000000000000000000000000000000005846109c6565b5f6001600160e01b038316601b0b60e084901d610962848383611282565b90925090505f61097283836110cc565b9695505050505050565b5f6001600160e01b038316601b0b60e084901d6109628483836113b7565b5f6001600160e01b038216601b0b60e083901d826109b88383611619565b9150505f61097282846110cc565b5f6001600160e01b03848116601b0b9060e086901d9085166109ee57506001915061064b9050565b5f8213610a5557815f03610a3257610a06855f610faf565b15610a27576040516345f414b960e11b815260048101869052602401610856565b505f915061064b9050565b60405163cceba0f160e01b81526004810183905260248101829052604401610856565b610a60856001610bfc565b8015610a715750610a71865f610e96565b15610a8057859250505061064b565b610a8a855f610faf565b15610ab357610aaa610a9b876108a3565b610aa487611019565b866109c6565b9250505061064b565b6001600160e01b038516601b0b60e086901d5f80610ad18484611619565b915091505f610ae183855f611663565b905060015f8080610b038f6001600160e01b038116601b0b9160e09190911d90565b915091505b60018510610b4a5784600116600103610b2d57610b2784848484611748565b90945092505b600185901c9450610b4082828484611748565b9092509050610b08565b5f80610b578f8e8e6113b7565b91509150610b6782828a8d611748565b9092509050610b778f8383611282565b9092509050610b8882828888611748565b90925090505f610b9883836110cc565b9e5050505050505050505050505050509392505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686611867565b915091505f610bee83836110cc565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610c2a84848484611da7565b979650505050505050565b60606001600160e01b038316601b0b60e084901d5f829003610c7457604051806040016040528060018152602001600360fc1b8152509250505061063a565b8315610c8d57610c848282611dbe565b9250505061063a565b61088e8282612041565b5f805f610ca485856125ab565b9150915061088e82826125f4565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf8686868661262d565b5f6001600160e01b038316601b0b60e084901d61088e828286612657565b5f6001600160e01b038216601b0b60e083901d828112610d2257509192915050565b5f80610d2e8484611619565b915091505f84128015610d4057508015155b15610d7257610d6d8284760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b1961262d565b935091505b5f610c2a83856110cc565b5f6001600160e01b038216601b0b60e083901d828112610d9f57509192915050565b5f80610dab8484611619565b91509150805f03610dc0575093949350505050565b5f811315610d7257610d6d8284760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b19612699565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610e1e84848484612797565b1315979650505050505050565b5f6001600160e01b038216601b0b60e083901d82821215610e50576108c0828261286b565b5f61088e83836110cc565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610e8984848484612797565b1215979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610ec484848484612797565b12979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686611748565b5f6108db8383610faf565b80515f90819060208481019185010182808080610f2886866128c0565b929650909450925090506001600160e01b031984165f03610fa057848303610f89575f80610f568484612c0f565b9150915080610f78575063195c5c5f60e11b9a5f9a5098505050505050505050565b505f9a909950975050505050505050565b5063ad384e8760e01b985f98509650505050505050565b5091975f975095505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d610fdd84848484612797565b13979650505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480610bdf86868686612699565b5f6001600160e01b038216601b0b60e083901d6108c0828261286b565b5f6001600160e01b038216601b0b60e083901d826110548383611619565b5090505f61097282846110cc565b5f805f805f6110718787612ce7565b9250925092505f806110838585612c0f565b91509150818380156110925750815b9650965050505050509250929050565b5f8061065e760161bcca7119915b50764b4abe86529797775a5f171951604c1b604b198686611867565b5f805f6110d98585612c0f565b91509150801580156110e9575081155b1561111157604051638eba4d0760e01b81526004810186905260248101859052604401610856565b509392505050565b5f805f85121561114657604051634a7d166b60e01b81526004810186905260248101859052604401610856565b845f0361115857505f9050600161127a565b8460ff841685018581121561118a5760405163d556b11160e01b81526004810188905260248101879052604401610856565b5f805f8312156111d657604c198312156111ad575f80955095505050505061127a565b825f03600a0a91508184816111c4576111c461398d565b049550508402909114915061127a9050565b5f83131561126f57604d8313156112135760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610856565b82600a0a9150815f19816112295761122961398d565b0484111561125d5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610856565b509190910292506001915061127a9050565b509193506001925050505b935093915050565b5f805f8412156112be57611296848461286b565b90945092506112a6858585611282565b90945092506112b584846110a2565b9150915061127a565b5f806112ca8686611619565b9092509050845f80806112dd8585612d2a565b9194509250905061270d6127106112f56001826139b5565b851461130c576113068d8686612dbf565b90925090505b8315611379575f61131e8660016139db565b90505b8084858302816113335761133361398d565b051461134a57600a84059350600a88059750611321565b61136d6113578588613a02565b896113628785613a02565b8f8787600319612e78565b909d509b506113829050565b819b506003199a505b50505050508661139384835f611663565b61139e8860016139db565b6113a891906139db565b94509450505050935093915050565b5f8083836113c58282612f15565b90965094505f861361141457855f036113f15760405163561fc7b560e01b815260040160405180910390fd5b604051635d3fd4db60e01b81526004810183905260248101829052604401610856565b505083760161bcca7119915b50764b4abe86529797775a5f171951604c1b0361144c5761144283604c6139db565b5f9150915061127a565b760161bcca7119915b50764b4abe86529797775a5f171951604c1b8412158061147757604a1961147b565b604b195b5f0b84126115dd575f805f805f8561149457604b611497565b604c5b6114a1908a6139db565b90505f80876114ce577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000006114ef565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca0000000000000000005b6001600160f81b03169050808c816115095761150961398d565b05818102955090850193506103e7190190506115258c82612f52565b7d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000000295508594508a84146115ab57612327811461158c576115678c82600101612f52565b7d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000026115a8565b760161bcca7119915b50764b4abe86529797775a5f171951604c1b5b94505b506115bd838b848c8989604b19612e78565b909a5098506115ce8a8a835f612699565b9750975050505050505061127a565b6115e785856110a2565b90955093506115f78686866113b7565b9095509350611606858561286b565b925092505061127a565b50935093915050565b5f805f831261162c57508290505f610663565b604b1983121561164057505f905082610663565b5f839003600a0a8085816116565761165661398d565b0794859003959350505050565b5f81830361167257508261064b565b828213156116b557828203604c81138061168c57505f8113155b1561169a575f91505061064b565b80600a0a85816116ac576116ac61398d565b0591505061064b565b818303604c8113806116c757505f8113155b156116f6576040516301d5d6d160e41b8152600481018690526024810185905260448101849052606401610856565b600a81900a8581028682828161170e5761170e61398d565b051461173e576040516301d5d6d160e41b8152600481018890526024810187905260448101869052606401610856565b925061064b915050565b5f8085158415178015611760575f92505f915061185d565b61176a84876139db565b91505f61177688612fd9565b90505f61178287612fd9565b90505f61178f8383613007565b5090505f6f0785ee10d5da46d900f436a0000000008211156117c4576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a76400008211156117e557670de0b6b3a7640000820491506012015b633b9aca008211156117fe57633b9aca00820491506009015b61271082111561181357612710820491506004015b811561182757600a82049150600101611813565b61183181876139db565b95506118538b8a61184d878761184887600a613b11565b613023565b896130ef565b9097509550505050505b5094509492505050565b5f80835f0361189357604051637a97930f60e01b81526004810187905260248101869052604401610856565b855f036118a457505f905080611d9e565b5f805f806118b28a8a61318f565b919b50995091506118c3888861318f565b919950975090505f6118d48b612fd9565b90505f6118e08a612fd9565b9050760161bcca7119915b50764b4abe86529797775a5f171951604c1b604c81831015611c9f57841561193157507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b611c77565b6f4b3b4ca85a86c47a098a224000000000831015611a5d57678ac7230489e800008310156119c1576402540be40083101561198f57620186a083101561197f5750620186a090506005611c38565b506402540be4009050600a611c38565b655af3107a40008310156119ae5750655af3107a40009050600e611c38565b50678ac7230489e8000090506013611c38565b6b204fce5e3e25026110000000831015611a135769152d02c7e14af68000008310156119fc575069152d02c7e14af680000090506017611c38565b506b204fce5e3e250261100000009050601c611c38565b6d314dc6448d9338c15b0a00000000831015611a4257506d314dc6448d9338c15b0a0000000090506021611c38565b506f4b3b4ca85a86c47a098a22400000000090506026611c38565b780197d4df19d605767337e9f14d3eec8920e400000000000000831015611b555773af298d050e4395d69670b12b7f41000000000000831015611af0577172cb5bd86321e38cb6ce6682e80000000000831015611ad157507172cb5bd86321e38cb6ce6682e800000000009050602b611c38565b5073af298d050e4395d69670b12b7f4100000000000090506030611c38565b76010b46c6cdd6e3e0828f4db456ff0c8ea0000000000000831015611b31575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035611c38565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a611c38565b7c03b58e88c75313ec9d329eaaa18fb92f75215b17100000000000000000831015611beb577a026e4d30eccc3215dd8f3157d27e23acbdcfe68000000000000000831015611bc357507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f611c38565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044611c38565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000831015611c3857507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b818311611c4d57600a820491505f1901611c38565b815f03611c77576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610856565b85611c9f576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610856565b80600160ff1b018d12611cb657808d039c50611cf4565b600160ff1b9c90038c015f811315611cf457806001600160ff1b03038b13611ce157998a0199611cf4565b5f80995099505050505050505050611d9e565b5f808e128015611d0357505f8c135b15611d2457600160ff1b8e01808d13611d1c575f611d20565b808d035b9150505b8b818f01039750611d418f8e611d3b888789613023565b8b6130ef565b90995097505f811315611d8b57604c811315611d6b575f809a509a50505050505050505050611d9e565b80600a0a8981611d7d57611d7d61398d565b059850885f03611d8b575f97505b50969850949650611d9e95505050505050565b94509492505050565b5f611db485858585612797565b1495945050505050565b6060611dca8383612f15565b90935091505f80611df5760161bcca7119915b50764b4abe86529797775a5f171951604c1b86613b1c565b15611e1f5750760161bcca7119915b50764b4abe86529797775a5f171951604c1b9050604c611e3f565b507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b5b5f611e4a8387613b1c565b90505f611e578488613b48565b90505f80831215611e7157506001611e6e83613b5b565b92505b5f821215611e8857506001611e8582613b5b565b91505b60408051602081019091525f81528215611f73575f80611ea9600a89613b6f565b90505b611eb68186613b1c565b5f03611edb57611ec7600a82613b6f565b905081611ed381613b82565b925050611eac565b60408051602081019091525f8082525b83811015611f1e5781604051602001611f049190613bb1565b60408051601f198184030181529190529150600101611eeb565b505b611f2b600a87613b48565b5f03611f4357611f3c600a87613b1c565b9550611f20565b80611f4d876133e9565b604051602001611f5e929190613bcd565b60405160208183030381529060405293505050505b5f611f7d856133e9565b90505f611f8a878b6139db565b90505f8115611fc057611f9c826133e9565b604051602001611fac9190613bf3565b604051602081830303815290604052611fd0565b60405180602001604052805f8152505b90505f85611fec5760405180602001604052805f815250612007565b604051806040016040528060018152602001602d60f81b8152505b9050808486846040516020016120209493929190613c08565b6040516020818303038152906040529a505050505050505050505092915050565b60606103e882138061205c57506120596103e8613b5b565b82125b1561207d57604051630e44c72b60e41b815260048101839052602401610856565b5f8084129081156120985761209185613b5b565b905061209b565b50835b5f6120a582613459565b80519091505f5b81811080156120f4575082816120c3600185613c28565b6120cd9190613c28565b815181106120dd576120dd613c3b565b6020910101516001600160f81b031916600360fc1b145b1561210b578061210381613b82565b9150506120ac565b5f6121168284613c28565b90505f612123838a6139db565b90505f8761213f5760405180602001604052805f81525061215a565b604051806040016040528060018152602001602d60f81b8152505b90505f821261228857815f61216f8286613c4f565b67ffffffffffffffff811115612187576121876138a5565b6040519080825280601f01601f1916602001820160405280156121b1576020820181803683370190505b5090505f5b8581101561220b578881815181106121d0576121d0613c3b565b602001015160f81c60f81b8282815181106121ed576121ed613c3b565b60200101906001600160f81b03191690815f1a9053506001016121b6565b505f5b8281101561225457600360fc1b826122268389613c4f565b8151811061223657612236613c3b565b60200101906001600160f81b03191690815f1a90535060010161220e565b508281604051602001612268929190613c62565b6040516020818303038152906040529a505050505050505050505061063a565b5f61229283613b5b565b90508084111561242d575f6122a78286613c28565b90505f6122b5866001613c4f565b67ffffffffffffffff8111156122cd576122cd6138a5565b6040519080825280601f01601f1916602001820160405280156122f7576020820181803683370190505b5090505f5b828110156123515789818151811061231657612316613c3b565b602001015160f81c60f81b82828151811061233357612333613c3b565b60200101906001600160f81b03191690815f1a9053506001016122fc565b50601760f91b81838151811061236957612369613c3b565b60200101906001600160f81b03191690815f1a9053505f5b838110156123f857896123948285613c4f565b815181106123a4576123a4613c3b565b01602001516001600160f81b03191682826123c0866001613c4f565b6123ca9190613c4f565b815181106123da576123da613c3b565b60200101906001600160f81b03191690815f1a905350600101612381565b50838160405160200161240c929190613c62565b6040516020818303038152906040529b50505050505050505050505061063a565b5f6124388583613c28565b90505f85612447836002613c4f565b6124519190613c4f565b67ffffffffffffffff811115612469576124696138a5565b6040519080825280601f01601f191660200182016040528015612493576020820181803683370190505b509050600360fc1b815f815181106124ad576124ad613c3b565b60200101906001600160f81b03191690815f1a905350601760f91b816001815181106124db576124db613c3b565b60200101906001600160f81b03191690815f1a9053505f5b8281101561253a57600360fc1b8261250c836002613c4f565b8151811061251c5761251c613c3b565b60200101906001600160f81b03191690815f1a9053506001016124f3565b505f5b868110156123f85789818151811061255757612557613c3b565b01602001516001600160f81b0319168282612573866002613c4f565b61257d9190613c4f565b8151811061258d5761258d613c3b565b60200101906001600160f81b03191690815f1a90535060010161253d565b5f805f805f6125ba8787612ce7565b925092509250806125e857604051636238bcb360e11b81526004810184905260248101839052604401610856565b50909590945092505050565b5f805f6126018585612c0f565b9150915080611111576040516322c9f7bb60e01b81526004810186905260248101859052604401610856565b5f80612639848461286b565b909450925061264a86868686612699565b9150915094509492505050565b5f805f612665868686611119565b91509150806126905760405162bc8ecf60e31b81526004810187905260248101869052604401610856565b50949350505050565b5f80851584151780156126c557865f036126b95784849250925050611d9e565b86869250925050611d9e565b6126cf8787612f15565b90975095506126de8585612f15565b9095509350858413156126f2579395929492935b838603604c81111561270b578787935093505050611d9e565b80600a0a868161271d5761271d61398d565b0595505086850180881860ff90811c151589881890911c1516801561278657876001600160ff1b030361276d5760405163d556b11160e01b8152600481018a905260248101899052604401610856565b600a96879005969098058601976001979097019661278a565b8198505b5096979596505050505050565b5f80851584151781871282861218178584141780156127bc5786859250925050611d9e565b505f858413156127d0575092949193919260015b8386035f8112604c82131780156128035782156127f5575f8994509450505050611d9e565b885f94509450505050611d9e565b600a82900a8981028a82828161281b5761281b61398d565b0514612847578415612837575f8b965096505050505050611d9e565b8a5f965096505050505050611d9e565b841561285c578896509450611d9e9350505050565b9550879450611d9e9350505050565b5f80600160ff1b84036128b6576001600160ff1b0383036128a95760405163d556b11160e01b81526004810185905260248101849052604401610856565b600a840593508260010192505b50505f9190910391565b5f8281806128d58386652000000000006134f6565b925085831415836128ef81886703ff0000000000006134f6565b945080850361291057506334bd206960e01b94505f9250829150612c069050565b5f8061291c8a8861351f565b90925090506001600160e01b0319821615612942575095505f9350839250612c06915050565b86519095506540000000000060015f9290921a9190911b161515888710169150508015612afd57506001909301925f8461298581896703ff0000000000006134f6565b95508086036129a75750637bfa48af60e01b95505f9350839250612c06915050565b855b5f1981018051908a1160015f9290921a9190911b6601000000000000161515166001036129d8575f19016129a9565b818114612a17575f806129eb848461351f565b90925090506001600160e01b0319821615612a13575097505f9550859450612c069350505050565b9350505b5f831215612a395750637bfa48af60e01b96505f9450849350612c0692505050565b8315612a4557825f0392505b80820394505f851315612a6b5750629d955560e11b96505f9450849350612c0692505050565b855f03612a7a57829550612afa565b5f8590036043811115612aa2575063195c5c5f60e11b97505f9550859450612c069350505050565b600a0a8681025f88838381612ab957612ab961398d565b0514159050601b82900b8214158180612acf5750805b15612af2575063195c5c5f60e11b9a505f9850889750612c069650505050505050565b505084019650505b50505b84516c2000000020000000000000000060015f9290921a9190911b161515878610168015612bf75760019095019485612b3d818a652000000000006134f6565b965086612b53818b6703ff0000000000006134f6565b9750808803612b765750629d955560e11b97505f9550859450612c069350505050565b505f80612b83838a61351f565b90925090506001600160e01b0319821615612bab575097505f9550859450612c069350505050565b9250508482015f83138015612bbf57508581125b80612bd357505f83128015612bd357508581135b15612bf3575063d556b11160e01b97505f9550859450612c069350505050565b9450505b845f03612c02575f93505b5050505b92959194509250565b5f601b83900b8314838382612c73577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515612c5357620186a0860595506005850194505b8586601b0b14612c6e57600a86059550846001019450612c53565b612c89565b855f03612c8957505f9250600191506106639050565b848560030b14612ccc575f851215612ca957505f92508291506106639050565b60405163d556b11160e01b81526004810183905260248101829052604401610856565b50506001600160e01b03841660e084901b1791509250929050565b5f808060ff841681036001600160ff1b03861115612d1957600a860460018201600a88065f1493509350935050612d23565b8593509150600190505b9250925092565b5f805f8360031903612d4457508391505f90506001612d23565b600319841215612d9657604f19841215612d6757505f9150508215156001612d23565b5f846004015f03600a0a90505f818781612d8357612d8361398d565b0594505080840286141592509050612d23565b5f8412612dab57505f91508190506001612d23565b50505060048101600a0a82025f6001612d23565b5f80806064612dd1600a612328613b6f565b612dde600a612328613b6f565b612de9906002613c70565b612df4906001613c4f565b612dfe9190613c4f565b612e089190613c4f565b9050612e4c565b5f8052600280600a8504028301601e833c5f80516107d0840193505f80526001600a8606600a6064880402018501601f853c5f5101949350505050565b612e57858288612e0f565b9250831561161057612e6d600186018288612e0f565b915050935093915050565b5f80888803612e8b575083905081612f09565b5f805f80612e9b8c8b8f8d61262d565b915091505f80612ead8a8a8d8c61262d565b91509150612ebd84848484611748565b8096508197505050505050505f80612ed78b8b8f8d61262d565b915091505f80612ee986868686611867565b915091505f80612efb84848f8e612699565b909a50985050505050505050505b97509795505050505050565b5f805f805f612f24878761318f565b925092509250806125e8576040516305e51ecb60e01b81526004810188905260248101879052604401610856565b5f80612f61600a612328613b6f565b612f6c906002613c70565b612f77906001613c4f565b90505f612f87600a612328613b6f565b90506002600a8504026001015f8052600281601e883c505f51617fff81169350618000811615612fb657918101915b505f80526001600a8506600a6064870402018301601f873c50505f510192915050565b5f80821215612ffe57600160ff1b8203612ff85750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f6130308686613007565b91509150815f036130545783818161304a5761304a61398d565b049250505061064b565b8382106130855760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610856565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f858718121561316b576001600160ff1b038411156131585761311c6001600160ff1b036001613c4f565b84036131305750600160ff1b905081611d9e565b61313b600a85613b6f565b61314490613b5b565b61314f8460016139db565b91509150611d9e565b61316184613b5b565b8391509150611d9e565b6001600160ff1b0384111561318557613144600a85613b6f565b5082905081611d9e565b5f805f845f036131a757505f91508190506001612d23565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03613394576f4b3b4ca85a86c47a098a224000000000850515801561320957507f80000000000000000000000000000000000000000000000000000000000000268412155b1561322a576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561327257507f80000000000000000000000000000000000000000000000000000000000000138412155b1561328b57678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156132d757507f800000000000000000000000000000000000000000000000000000000000000a8412155b156132ed576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561333c57507f80000000000000000000000000000000000000000000000000000000000000028412155b15613352576064850294506002840393506132ed565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561338257506001600160ff1b018412155b1561339457600a850294506001840393505b600a808602908105861480156133b157506001600160ff1b018512155b156133c0578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b60605f82126134065760405180602001604052805f815250613421565b604051806040016040528060018152602001602d60f81b8152505b61343260ff84901d80850118613459565b604051602001613443929190613c62565b6040516020818303038152906040529050919050565b60605f613465836135ca565b60010190505f8167ffffffffffffffff811115613484576134846138a5565b6040519080825280601f01601f1916602001820160405280156134ae576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846134b857509392505050565b5f5b5f82600186515f1a1b16118385101615613517576001840193506134f8565b509192915050565b81515f90819065200000000000600191831a9190911b1615158385101680850190828061354c84886136ab565b90925090506001600160e01b031982161561356f575093505f9250610663915050565b825f036135a0576001600160ff1b03811161358a575f613593565b630fdc263560e01b5b9550935061066392505050565b600160ff1b81116135b1575f6135ba565b630fdc263560e01b5b95505f0393505050509250929050565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613612577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061363e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061365c57662386f26fc10000830492506010015b6305f5e1008310613674576305f5e100830492506008015b612710831061368857612710830492506004015b6064831061369a576064830492506002015b600a831061063a5760010192915050565b5f808284106136c557506334bd206960e01b90505f610663565b835f036136e55760405163369a59b560e21b815260040160405180910390fd5b60305f5f198501815b8782101580156136fe5750604d83105b1561372257815160018401935f1990930192600a0a5f9190911a85900302016136ee565b8782106137bf5781515f1a84900360018111156137515750630fdc263560e01b95505f94506106639350505050565b600a84900a810282810183111561377b5750630fdc263560e01b96505f9550610663945050505050565b9190910190505f19909101905b8782106137bf5781515f1a603081146137b35750630fdc263560e01b95505f94506106639350505050565b505f1990910190613788565b5f9890975095505050505050565b5f602082840312156137dd575f80fd5b5035919050565b5f80604083850312156137f5575f80fd5b50508035926020909101359150565b803560ff81168114613002575f80fd5b5f8060408385031215613825575f80fd5b8235915061383560208401613804565b90509250929050565b5f806040838503121561384f575f80fd5b8235915060208301358015158114613865575f80fd5b809150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156138c9575f80fd5b813567ffffffffffffffff808211156138e0575f80fd5b818401915084601f8301126138f3575f80fd5b813581811115613905576139056138a5565b604051601f8201601f19908116603f0116810190838211818310171561392d5761392d6138a5565b81604052828152876020848701011115613945575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f805f60608486031215613976575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181035f8312801583831316838312821617156139d4576139d46139a1565b5092915050565b8082018281125f8312801582168215821617156139fa576139fa6139a1565b505092915050565b8082025f8212600160ff1b84141615613a1d57613a1d6139a1565b818105831482151761063a5761063a6139a1565b600181815b80851115613a6b57815f1904821115613a5157613a516139a1565b80851615613a5e57918102915b93841c9390800290613a36565b509250929050565b5f82613a815750600161063a565b81613a8d57505f61063a565b8160018114613aa35760028114613aad57613ac9565b600191505061063a565b60ff841115613abe57613abe6139a1565b50506001821b61063a565b5060208310610133831016604e8410600b8410161715613aec575081810a61063a565b613af68383613a31565b805f1904821115613b0957613b096139a1565b029392505050565b5f61064b8383613a73565b5f82613b2a57613b2a61398d565b600160ff1b82145f1984141615613b4357613b436139a1565b500590565b5f82613b5657613b5661398d565b500790565b5f600160ff1b8201612ff857612ff86139a1565b5f82613b7d57613b7d61398d565b500490565b5f60018201613b9357613b936139a1565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f613bbc8284613b9a565b600360fc1b81526001019392505050565b601760f91b81525f613beb613be56001840186613b9a565b84613b9a565b949350505050565b606560f81b81525f61064b6001830184613b9a565b5f610972613be5613c22613c1c858a613b9a565b88613b9a565b86613b9a565b8181038181111561063a5761063a6139a1565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561063a5761063a6139a1565b5f613beb613be58386613b9a565b808202811582820484141761063a5761063a6139a156","sourceMap":"525:13549:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6819:83;;;;;;:::i;:::-;;:::i;:::-;;;399:25:543;;;387:2;372:18;6819:83:86;;;;;;;;11299:93;;;;;;:::i;:::-;;:::i;13850:222::-;;;;;;:::i;:::-;;:::i;:::-;;;;1353:25:543;;;1421:14;;1414:22;1409:2;1394:18;;1387:50;1326:18;13850:222:86;1185:258:543;10667:140:86;;;;;;:::i;:::-;;:::i;9694:142::-;;;;;;:::i;:::-;;:::i;9997:::-;;;;;;:::i;:::-;;:::i;8997:85::-;;;;;;:::i;:::-;;:::i;10353:150::-;;;;;;:::i;:::-;;:::i;6590:93::-;;;;;;:::i;:::-;;:::i;7121:90::-;;;;;;:::i;:::-;;:::i;:::-;;;1613:14:543;;1606:22;1588:41;;1576:2;1561:18;7121:90:86;1448:187:543;4526:156:86;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12040:182::-;;;;;;:::i;:::-;;:::i;5530:93::-;;;;;;:::i;:::-;;:::i;12556:172::-;;;;;;:::i;:::-;;:::i;9229:87::-;;;;;;:::i;:::-;;:::i;1849:122::-;4837:66:91;1849:122:86;;9463:85;;;;;;:::i;:::-;;:::i;8475:92::-;;;;;;:::i;:::-;;:::i;6015:83::-;;;;;;:::i;:::-;;:::i;8125:92::-;;;;;;:::i;:::-;;:::i;7780:90::-;;;;;;:::i;:::-;;:::i;6300:93::-;;;;;;:::i;:::-;;:::i;967:140::-;;1040:66;967:140;;4894:158;;;;;;:::i;:::-;;:::i;1589:122::-;-1:-1:-1;;;;;1589:122:86;;11007:93;;;;;;:::i;:::-;;:::i;2375:96::-;2414:5;2375:96;;3040:211;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;;4149:33:543;;;4131:52;;4214:2;4199:18;;4192:34;;;;4104:18;3040:211:86;3932:300:543;1329:122:86;4277:66:91;1329:122:86;;2109;-1:-1:-1;;;2109:122:86;;7445:90;;;;;;:::i;:::-;;:::i;5240:93::-;;;;;;:::i;:::-;;:::i;706:140::-;;779:66;706:140;;5760:87;;;;;;:::i;:::-;;:::i;11554:88::-;;;;;;:::i;:::-;;:::i;8735:91::-;;;;;;:::i;:::-;;:::i;3821:383::-;;;;;;:::i;:::-;;:::i;13202:232::-;;;;;;:::i;:::-;;:::i;2602:90::-;5384:66:91;2602:90:86;;6819:83;6864:5;6888:7;:1;:5;:7::i;:::-;6881:14;6819:83;-1:-1:-1;;6819:83:86:o;11299:93::-;11353:5;11377:8;:1;11383;11377:5;:8::i;:::-;11370:15;11299:93;-1:-1:-1;;;11299:93:86:o;13850:222::-;13931:7;13940:4;14013:52;14049:5;14056:8;14013:35;:52::i;:::-;14006:59;;;;13850:222;;;;;;:::o;10667:140::-;10713:5;10737:63;:1;721:42:92;10737:6:86;:63::i;9694:142::-;9741:5;9765:64;:1;721:42:92;9765:7:86;:64::i;9997:142::-;10044:5;10068:64;:1;721:42:92;10068:7:86;:64::i;8997:85::-;9043:5;9067:8;:1;:6;:8::i;10353:150::-;10407:5;10431:65;:1;10437;721:42:92;10431:5:86;:65::i;6590:93::-;6644:5;6668:8;:1;6674;6668:5;:8::i;7121:90::-;7174:4;7197:7;:1;7202;7197:4;:7::i;4526:156::-;4591:13;4623:52;4661:1;4664:10;4623:37;:52::i;12040:182::-;12128:5;12152:63;12199:5;12206:8;12152:46;:63::i;5530:93::-;5584:5;5608:8;:1;5614;5608:5;:8::i;12556:172::-;12640:7;12666:55;12705:5;12712:8;12666:38;:55::i;9229:87::-;9276:5;9300:9;:1;:7;:9::i;9463:85::-;9509:5;9533:8;:1;:6;:8::i;8475:92::-;8529:4;8552:8;:1;8558;8552:5;:8::i;6015:83::-;6060:5;6084:7;:1;:5;:7::i;8125:92::-;8179:4;8202:8;:1;8208;8202:5;:8::i;7780:90::-;7833:4;7856:7;:1;7861;7856:4;:7::i;6300:93::-;6354:5;6378:8;:1;6384;6378:5;:8::i;4894:158::-;4942:13;4974:71;4981:1;779:66;1040;4974:6;:71::i;11007:93::-;11061:5;11085:8;:1;11091;11085:5;:8::i;3040:211::-;3097:6;3105:5;3123:20;3145:12;3161:43;3200:3;3161:38;:43::i;:::-;3122:82;;;;-1:-1:-1;3040:211:86;-1:-1:-1;;;;3040:211:86:o;7445:90::-;7498:4;7521:7;:1;7526;7521:4;:7::i;5240:93::-;5294:5;5318:8;:1;5324;5318:5;:8::i;5760:87::-;5807:5;5831:9;:1;:7;:9::i;11554:88::-;11602:4;-1:-1:-1;;;;;42905:12:91;;42898:20;11625:10:86;42626:308:91;8735:91:86;8784:5;8808:11;:1;:9;:11::i;3821:383::-;3909:13;3939:31;:13;3956;3939:16;:31::i;:::-;3934:127;;3993:57;;-1:-1:-1;;;3993:57:86;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;3993:57:86;;;;;;;;3934:127;4070:10;4083:7;:1;:5;:7::i;:::-;4070:20;-1:-1:-1;4107:90:86;4145:1;4148:22;4070:20;4156:13;4148:7;:22::i;:::-;:48;;;-1:-1:-1;4174:22:86;:4;4182:13;4174:7;:22::i;:::-;4107:37;:90::i;:::-;4100:97;3821:383;-1:-1:-1;;;;;3821:383:86:o;13202:232::-;13287:5;13294:4;13367:60;13411:5;13418:8;13367:43;:60::i;28026:334:91:-;28075:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;28194:62;21018:32;21075:16;28194:33;:62::i;:::-;28162:94;;-1:-1:-1;28162:94:91;-1:-1:-1;28266:12:91;28281:49;28162:94;;28281:20;:49::i;42289:101::-;42343:5;42367:8;42370:1;42373;42367:2;:8::i;:::-;:16;;42382:1;42367:16;;;-1:-1:-1;42378:1:91;;42289:101;-1:-1:-1;42289:101:91:o;14263:248::-;14344:7;;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;14446:58;21018:32;21075:16;14495:8;14446:19;:58::i;:::-;14439:65;;;;;;14263:248;;;;;:::o;41590:143::-;41664:5;41688:38;41692:1;3945:66;41707:18;41688:3;:38::i;35958:492::-;36037:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;36168:84;36204:18;21018:32;21075:16;36168:35;:84::i;:::-;36124:128;;-1:-1:-1;36124:128:91;-1:-1:-1;36356:12:91;36371:49;36124:128;;36371:20;:49::i;:::-;36356:64;35958:492;-1:-1:-1;;;;;;35958:492:91:o;36826:471::-;36901:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;37028:84;37064:18;21018:32;21075:16;37028:35;:84::i;33023:370::-;33073:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;33073:5;33232:66;21018:32;21075:16;33232:37;:66::i;:::-;33210:88;;;33308:12;33323:40;33344:8;33354;33323:20;:40::i;37919:3079::-;38001:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;21079:4;21075:16;;;;42905:12;;38087:869;;-1:-1:-1;3793:1:91;;-1:-1:-1;38117:16:91;;-1:-1:-1;38117:16:91;38087:869;38176:1;38154:18;:23;38150:806;;38197:18;38219:1;38197:23;38193:494;;38244:16;:1;3702;38244:4;:16::i;:::-;38240:157;;;38358:20;;-1:-1:-1;;;38358:20:91;;;;;399:25:543;;;372:18;;38358:20:91;226:204:543;38240:157:91;-1:-1:-1;3702:1:91;;-1:-1:-1;38563:17:91;;-1:-1:-1;38563:17:91;38193:494;38626:46;;-1:-1:-1;;;38626:46:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;38626:46:91;4929:302:543;38150:806:91;38783:15;:1;3793;38783:4;:15::i;:::-;:35;;;;-1:-1:-1;38802:16:91;:1;3702;38802:4;:16::i;:::-;38779:177;;;38841:1;38834:8;;;;;;38779:177;38863:16;:1;3702;38863:4;:16::i;:::-;38859:97;;;38902:43;38906:7;:1;:5;:7::i;:::-;38915:9;:1;:7;:9::i;:::-;38926:18;38902:3;:43::i;:::-;38895:50;;;;;;38859:97;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;39183:25;;39288:68;21018:32;21075:16;39288:37;:68::i;:::-;39250:106;;;;39367:24;39402:72;39451:8;39461:9;39472:1;39402:48;:72::i;:::-;39367:108;-1:-1:-1;39584:1:91;39526:30;;;39653:10;:1;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;;21079:4;21075:16;;;;;20811:296;39653:10;39599:64;;;;39673:544;39700:1;39680:16;:21;39673:544;;39721:16;39740:4;39721:23;39748:4;39721:31;39717:263;;39816:149;39871:23;39896:14;39912:21;39935:12;39816:33;:149::i;:::-;39772:193;;-1:-1:-1;39772:193:91;-1:-1:-1;39717:263:91;40014:1;39993:22;;;;;40069:137;40120:21;40143:12;40157:21;40180:12;40069:33;:137::i;:::-;40029:177;;-1:-1:-1;40029:177:91;-1:-1:-1;39673:544:91;;;40228:25;40255:16;40287:86;40323:18;40343;40363:9;40287:35;:86::i;:::-;40227:146;;;;40430:86;40464:18;40484:9;40495;40506;40430:33;:86::i;:::-;40384:132;;-1:-1:-1;40384:132:91;-1:-1:-1;40573:86:91;40609:18;40384:132;;40573:35;:86::i;:::-;40527:132;;-1:-1:-1;40527:132:91;-1:-1:-1;40716:105:91;40527:132;;40781:23;40806:14;40716:33;:105::i;:::-;40670:151;;-1:-1:-1;40670:151:91;-1:-1:-1;40912:7:91;40922:51;40670:151;;40922:20;:51::i;:::-;40912:61;-1:-1:-1;;;;;;;;;;;;;;;37919:3079:91;;;;;:::o;27084:573::-;27138:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;27138:5;;27349:95;21018:32;21075:16;21018:32;21075:16;27349:33;:95::i;:::-;27291:153;;;;27573:7;27583:49;27604:17;27623:8;27583:20;:49::i;:::-;27573:59;27084:573;-1:-1:-1;;;;;;;;;;27084:573:91:o;28702:313::-;28755:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;28914:94;21018:32;21075:16;21018:32;21075:16;28914:32;:94::i;:::-;28907:101;28702:313;-1:-1:-1;;;;;;;28702:313:91:o;1412:418:93:-;1490:13;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;1516:24:93;1604:22;;;1600:63;;1642:10;;;;;;;;;;;;;-1:-1:-1;;;1642:10:93;;;;;;;;;1600:63;1676:10;1672:90;;;1709:42;1723:17;1742:8;1709:13;:42::i;:::-;1702:49;;;;;;1672:90;1778:45;1795:17;1814:8;1778:16;:45::i;8887:263:91:-;8981:5;8999:24;9025:15;9044:41;9069:5;9076:8;9044:24;:41::i;:::-;8998:87;;;;9102:41;9115:17;9134:8;9102:12;:41::i;22427:496::-;22481:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;22481:5;;22694:95;21018:32;21075:16;21018:32;21075:16;22694:33;:95::i;15741:248::-;15825:7;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;15921:61;21018:32;21075:16;15973:8;15921:22;:61::i;33539:760::-;33590:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;33762:13;;;33758:56;;-1:-1:-1;33798:5:91;;33539:760;-1:-1:-1;;33539:760:91:o;33758:56::-;33824:8;33834:15;33853:66;33891:17;33910:8;33853:37;:66::i;:::-;33823:96;;;;33953:1;33933:17;:21;:38;;;;-1:-1:-1;33958:13:91;;;33933:38;33929:283;;;34144:57;34178:1;34181:8;-1:-1:-1;;;;;34144:33:91;:57::i;:::-;34128:73;-1:-1:-1;34128:73:91;-1:-1:-1;33929:283:91;34221:12;34236:33;34257:1;34260:8;34236:20;:33::i;34446:1052::-;34496:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;34668:13;;;34664:56;;-1:-1:-1;34704:5:91;;34446:1052;-1:-1:-1;;34446:1052:91:o;34664:56::-;34730:8;34740:15;34759:66;34797:17;34816:8;34759:37;:66::i;:::-;34729:96;;;;34911:8;34923:1;34911:13;34907:503;;-1:-1:-1;34947:5:91;;34446:1052;-1:-1:-1;;;;34446:1052:91:o;34907:503::-;35309:1;35298:8;:12;35294:116;;;35342:57;35376:1;35379:8;-1:-1:-1;;;;;35342:33:91;:57::i;31811:431::-;31865:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;32072:106;21018:32;21075:16;21018:32;21075:16;32072:44;:106::i;:::-;-1:-1:-1;32195:40:91;;31811:431;-1:-1:-1;;;;;;;31811:431:91:o;24336:502::-;24385:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;24477:21;;;24473:148;;;24546:64;24582:17;24601:8;24546:35;:64::i;24473:148::-;24744:12;24759:49;24780:17;24799:8;24759:20;:49::i;30955:431::-;31009:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;31216:106;21018:32;21075:16;21018:32;21075:16;31216:44;:106::i;:::-;-1:-1:-1;31339:40:91;;30955:431;-1:-1:-1;;;;;;;30955:431:91:o;30119:429::-;30172:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;30379:106;21018:32;21075:16;21018:32;21075:16;30379:44;:106::i;:::-;-1:-1:-1;;30119:429:91;-1:-1:-1;;;;;;;30119:429:91:o;26050:535::-;26104:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;26104:5;;26315:95;21018:32;21075:16;21018:32;21075:16;26315:33;:95::i;41961:101::-;42015:5;42039:8;42042:1;42045;42039:2;:8::i;8905:1711:95:-;9120:10;;8974:6;;;;9084:4;9075:14;;;;9109:22;;;8974:6;;;;9246:35;9075:14;9109:22;9246:23;:35::i;:::-;9150:131;;-1:-1:-1;9150:131:95;;-1:-1:-1;9150:131:95;-1:-1:-1;9150:131:95;-1:-1:-1;;;;;;;9295:18:95;;9312:1;9295:18;9291:1319;;9343:3;9333:6;:13;9329:1098;;9951:12;9965:13;9982:54;10008:17;10027:8;9982:25;:54::i;:::-;9950:86;;;;10059:8;10054:179;;-1:-1:-1;;;;10099:34:95;10146:1;;-1:-1:-1;8905:1711:95;-1:-1:-1;;;;;;;;;8905:1711:95:o;10054:179::-;-1:-1:-1;10204:1:95;;10207:6;;-1:-1:-1;8905:1711:95;-1:-1:-1;;;;;;;;8905:1711:95:o;9329:1098::-;-1:-1:-1;;;;10354:42:95;10409:1;;-1:-1:-1;8905:1711:95;-1:-1:-1;;;;;;;8905:1711:95:o;9291:1319::-;-1:-1:-1;10570:13:95;;10596:1;;-1:-1:-1;8905:1711:95;-1:-1:-1;;;;;;8905:1711:95:o;29343:430:91:-;29396:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;29603:106;21018:32;21075:16;21018:32;21075:16;29603:44;:106::i;:::-;-1:-1:-1;;29343:430:91;-1:-1:-1;;;;;;;29343:430:91:o;21591:489::-;21645:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;21645:5;;21856:95;21018:32;21075:16;21018:32;21075:16;21856:33;:95::i;23273:418::-;23324:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;23443:64;21018:32;21075:16;23443:35;:64::i;32498:358::-;32551:5;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;32551:5;32702:66;21018:32;21075:16;32702:37;:66::i;:::-;32688:80;;;32778:12;32793:33;32814:1;32817:8;32793:20;:33::i;7483:353::-;7574:5;7581:4;7598:24;7624:15;7641:13;7658:38;7680:5;7687:8;7658:21;:38::i;:::-;7597:99;;;;;;7707:11;7720:17;7741:38;7751:17;7770:8;7741:9;:38::i;:::-;7706:73;;;;7797:5;7804:8;:24;;;;;7816:12;7804:24;7789:40;;;;;;;;;7483:353;;;;;:::o;35535:162:94:-;35614:6;35622;35647:43;-1:-1:-1;;;;;35662:17:94;35681:8;35647:3;:43::i;20082:338:91:-;20178:5;20196:7;20205:13;20222:38;20232:17;20251:8;20222:9;:38::i;:::-;20195:65;;;;20275:8;20274:9;:42;;;;-1:-1:-1;20287:29:91;;20274:42;20270:126;;;20339:46;;-1:-1:-1;;;20339:46:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;20339:46:91;4929:302:543;20270:126:91;-1:-1:-1;20412:1:91;20082:338;-1:-1:-1;;;20082:338:91:o;9995:3701::-;10130:7;10139:4;10262:1;10242:17;:21;10238:3452;;;10286:59;;-1:-1:-1;;;10286:59:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;10286:59:91;4929:302:543;10238:3452:91;10444:17;10465:1;10444:22;10440:3250;;-1:-1:-1;10490:1:91;;-1:-1:-1;10493:4:91;10482:16;;10440:3250;10708:17;10989;;;10971:36;;11029:24;;;11025:123;;;11084:45;;-1:-1:-1;;;11084:45:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;11084:45:91;4929:302:543;11025:123:91;11176:13;11203:20;11257:1;11241:13;:17;11237:2443;;;-1:-1:-1;;11519:13:91;:19;11515:91;;;11574:1;11577:5;11566:17;;;;;;;;;;11515:91;11966:13;11965:14;;11951:2;:29;11943:37;;12039:5;12017:19;:27;;;;;:::i;:::-;;;-1:-1:-1;;12302:20:91;;:43;;;;-1:-1:-1;12280:66:91;;-1:-1:-1;12280:66:91;11237:2443;12405:1;12389:13;:17;12385:1295;;;12684:2;12668:13;:18;12664:139;;;12721:59;;-1:-1:-1;;;12721:59:91;;;;;5811:25:543;;;5852:18;;;5845:34;;;5927:4;5915:17;;5895:18;;;5888:45;5784:18;;12721:59:91;5617:322:543;12664:139:91;13030:13;13016:2;:28;13008:36;;13340:5;-1:-1:-1;;13320:25:91;;;;;:::i;:::-;;13298:19;:47;13294:168;;;13380:59;;-1:-1:-1;;;13380:59:91;;;;;5811:25:543;;;5852:18;;;5845:34;;;5927:4;5915:17;;5895:18;;;5888:45;5784:18;;13380:59:91;5617:322:543;13294:168:91;-1:-1:-1;13498:27:91;;;;;-1:-1:-1;13569:4:91;;-1:-1:-1;13547:27:91;;-1:-1:-1;13547:27:91;12385:1295;-1:-1:-1;13639:19:91;;-1:-1:-1;13660:4:91;;-1:-1:-1;;;10440:3250:91;9995:3701;;;;;;:::o;43384:1993:94:-;43517:6;43525;43571:1;43551:17;:21;43547:271;;;43620:34;43626:17;43645:8;43620:5;:34::i;:::-;43588:66;;-1:-1:-1;43588:66:94;-1:-1:-1;43700:54:94;43706:18;43588:66;;43700:5;:54::i;:::-;43668:86;;-1:-1:-1;43668:86:94;-1:-1:-1;43775:32:94;43668:86;;43775:3;:32::i;:::-;43768:39;;;;;;43547:271;43854:21;43877:22;43903:36;43911:17;43930:8;43903:7;:36::i;:::-;43853:86;;-1:-1:-1;43853:86:94;-1:-1:-1;43981:8:94;43949:29;;;44060:36;43853:86;43981:8;44060:9;:36::i;:::-;44013:83;;-1:-1:-1;44013:83:94;-1:-1:-1;44013:83:94;-1:-1:-1;44257:4:94;44298:5;782:27:96;808:1;44298:5:94;782:27:96;:::i;:::-;44321:3:94;:29;44317:252;;44485:69;44508:18;44536:3;44542:11;44485:22;:69::i;:::-;44370:184;;-1:-1:-1;44370:184:94;-1:-1:-1;44317:252:94;44586:11;44582:664;;;44676:15;44695:7;:3;44701:1;44695:7;:::i;:::-;44676:27;;44753:154;44790:8;44781:5;44772;44761:8;:16;44760:26;;;;;:::i;:::-;;:38;44753:154;;44835:2;44826:11;;;-1:-1:-1;44882:2:94;44863:21;;;;44753:154;;;44975:153;45020:11;45026:5;45020:3;:11;:::i;:::-;45033:15;45050:16;45061:5;45050:8;:16;:::i;:::-;45068:8;45078:13;45093;-1:-1:-1;;44975:23:94;:153::i;:::-;44943:185;;-1:-1:-1;44943:185:94;-1:-1:-1;44582:664:94;;-1:-1:-1;44582:664:94;;45187:13;45167:33;;-1:-1:-1;;45218:13:94;;44582:664;43999:1257;;;;;45274:17;45308:61;45327:14;45343:22;45367:1;45308:18;:61::i;:::-;45293:12;45297:8;45293:1;:12;:::i;:::-;:76;;;;:::i;:::-;45266:104;;;;;;;43384:1993;;;;;;:::o;37791:5059::-;37924:6;;38000:17;38060:8;38114:41;38000:17;38060:8;38114:12;:41::i;:::-;38082:73;;-1:-1:-1;38082:73:94;-1:-1:-1;38195:1:94;38174:22;;38170:259;;38220:17;38241:1;38220:22;38216:199;;38273:11;;-1:-1:-1;;;38273:11:94;;;;;;;;;;;38216:199;38338:58;;-1:-1:-1;;;38338:58:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;38338:58:94;4929:302:543;38216:199:94;37954:485;;38519:17;-1:-1:-1;;;38519:25:94;38515:81;;38568:13;:8;38579:2;38568:13;:::i;:::-;38583:1;38560:25;;;;;;38515:81;-1:-1:-1;;;38625:25:94;;;;38739:24;;-1:-1:-1;;38739:24:94;;;-1:-1:-1;;38739:24:94;38726:38;;:8;:38;38722:4122;;38780:20;38814;38848;38882;39533:17;39571:12;:38;;39606:2;39571:38;;;39593:2;39571:38;39553:57;;:8;:57;:::i;:::-;39533:77;;39672:11;39763:13;39779:12;:26;;39801:4;39779:26;;;39794:4;39779:26;-1:-1:-1;;;;;39763:42:94;;;40381:5;40354:17;:33;;;;;:::i;:::-;;40941:29;;;;-1:-1:-1;41478:29:94;;;;-1:-1:-1;;;40685:20:94;;-1:-1:-1;41582:42:94;41600:18;40685:20;41582:17;:42::i;:::-;41575:4;:49;41552:73;;41663:13;41647:29;;41830:17;41813:13;:34;41809:270;;513:32:96;41891:30:94;;:165;;42009:46;42027:18;42047:3;42053:1;42047:7;42009:17;:46::i;:::-;42002:4;:53;41891:165;;;-1:-1:-1;;;41891:165:94;41875:181;;41809:270;39654:2457;42157:256;42198:13;42229:17;42264:13;42295:8;42321:13;42352;-1:-1:-1;;42157:23:94;:256::i;:::-;42125:288;;-1:-1:-1;42125:288:94;-1:-1:-1;42434:47:94;42125:288;;42467:10;42479:1;42434:3;:47::i;:::-;42427:54;;;;;;;;;;;;38722:4122;42646:32;42650:17;42669:8;42646:3;:32::i;:::-;42614:64;;-1:-1:-1;42614:64:94;-1:-1:-1;42724:54:94;42730:18;42614:64;;42724:5;:54::i;:::-;42692:86;;-1:-1:-1;42692:86:94;-1:-1:-1;42799:34:94;42692:86;;42799:5;:34::i;:::-;42792:41;;;;;;;38722:4122;37944:4906;37791:5059;;;;;;:::o;55832:852::-;55915:14;55931:11;56120:1;56108:8;:13;56104:81;;-1:-1:-1;56149:17:94;;-1:-1:-1;56168:1:94;56141:29;;56104:81;-1:-1:-1;;56340:8:94;:14;56336:82;;;-1:-1:-1;56382:1:94;;-1:-1:-1;56385:17:94;56374:29;;56336:82;56528:11;56563:9;;;56549:2;:24;;56595:17;56549:24;56595;;;;:::i;:::-;;56643;;;;;55832:852;-1:-1:-1;;;;55832:852:94:o;53784:1452::-;53925:6;53987:14;53975:8;:26;53971:1249;;-1:-1:-1;54028:17:94;54021:24;;53971:1249;54087:8;54070:14;:25;54066:1154;;;54137:25;;;54199:2;54184:17;;;:38;;;54221:1;54205:12;:17;;54184:38;54180:127;;;1408:1;54246:42;;;;;54180:127;54478:12;54464:2;:27;54437:17;:55;;;;;:::i;:::-;;54430:62;;;;;54066:1154;54553:25;;;54615:2;54600:17;;;:38;;;54637:1;54621:12;:17;;54600:38;54596:163;;;54669:71;;-1:-1:-1;;;54669:71:94;;;;;6940:25:543;;;6981:18;;;6974:34;;;7024:18;;;7017:34;;;6913:18;;54669:71:94;6744:313:543;54596:163:94;54904:2;:27;;;54968:25;;;:17;54904:27;54968:25;54904:27;55015:16;;;;:::i;:::-;;:37;55011:162;;55083:71;;-1:-1:-1;;;55083:71:94;;;;;6940:25:543;;;6981:18;;;6974:34;;;7024:18;;;7017:34;;;6913:18;;55083:71:94;6744:313:543;55011:162:94;55197:8;-1:-1:-1;55190:15:94;;-1:-1:-1;;55190:15:94;7193:2230;7343:24;;7473:26;;7501;;7470:58;7547:1870;;;;1408:1;7690:53;;1495:1;7757:34;;7547:1870;;;7833:21;7845:9;7833;:21;:::i;:::-;7822:32;;7989:29;8021:48;8050:18;8021:28;:48::i;:::-;7989:80;;8083:29;8115:48;8144:18;8115:28;:48::i;:::-;8083:80;;8179:13;8197:52;8204:21;8227;8197:6;:52::i;:::-;8178:71;;;8264:22;8344:4;8336:5;:12;8332:114;;;8381:4;8372:13;;;-1:-1:-1;8425:2:94;8407:20;8332:114;8475:4;8467:5;:12;8463:114;;;8512:4;8503:13;;;-1:-1:-1;8556:2:94;8538:20;8463:114;8606:3;8598:5;:11;8594:111;;;8642:3;8633:12;;;-1:-1:-1;8685:1:94;8667:19;8594:111;8734:3;8726:5;:11;8722:111;;;8770:3;8761:12;;;-1:-1:-1;8813:1:94;8795:19;8722:111;8857:9;;8850:108;;8899:2;8890:11;;;-1:-1:-1;8923:16:94;;8850:108;;;9086:34;9105:14;9086:34;;:::i;:::-;;-1:-1:-1;9167:239:94;9211:18;9247;9283:83;9290:21;9313;9336:29;9351:14;9344:2;9336:29;:::i;:::-;9283:6;:83::i;:::-;9384:8;9167:26;:239::i;:::-;9135:271;;-1:-1:-1;9135:271:94;-1:-1:-1;;;;;7547:1870:94;7390:2033;7193:2230;;;;;;;:::o;12966:8769::-;13116:6;13124;13150:18;13172:1;13150:23;13146:8583;;13196:45;;-1:-1:-1;;;13196:45:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;13196:45:94;4929:302:543;13146:8583:94;13262:18;13284:1;13262:23;13258:8471;;-1:-1:-1;1408:1:94;;-1:-1:-1;1408:1:94;13301:67;;13258:8471;13399:24;13437:15;13466:10;13490;13697:39;13706:18;13726:9;13697:8;:39::i;:::-;13656:80;;-1:-1:-1;13656:80:94;-1:-1:-1;13656:80:94;-1:-1:-1;13791:39:94;13800:18;13820:9;13791:8;:39::i;:::-;13750:80;;-1:-1:-1;13750:80:94;-1:-1:-1;13750:80:94;-1:-1:-1;13965:29:94;13997:48;14026:18;13997:28;:48::i;:::-;13965:80;;14059:29;14091:48;14120:18;14091:28;:48::i;:::-;14059:80;-1:-1:-1;;;;14212:2:94;14663:29;;;14659:4460;;;14716:5;14712:4269;;;-1:-1:-1;;;;14753:4:94;-1:-1:-1;14796:2:94;14712:4269;;;14873:4;14849:21;:28;14845:3675;;;14933:4;14909:21;:28;14905:1781;;;14997:4;14973:21;:28;14969:813;;;15065:3;15041:21;:27;15037:321;;;-1:-1:-1;15116:3:94;;-1:-1:-1;15174:1:94;14845:3675;;15037:321;-1:-1:-1;15262:4:94;;-1:-1:-1;15321:2:94;14845:3675;;14969:813;15456:4;15432:21;:28;15428:324;;;-1:-1:-1;15508:4:94;;-1:-1:-1;15567:2:94;14845:3675;;15428:324;-1:-1:-1;15656:4:94;;-1:-1:-1;15715:2:94;14845:3675;;14905:1781;15872:4;15848:21;:28;15844:816;;;15940:4;15916:21;:28;15912:324;;;-1:-1:-1;15992:4:94;;-1:-1:-1;16051:2:94;14845:3675;;15912:324;-1:-1:-1;16140:4:94;;-1:-1:-1;16199:2:94;14845:3675;;15844:816;16334:4;16310:21;:28;16306:324;;;-1:-1:-1;16386:4:94;;-1:-1:-1;16445:2:94;14845:3675;;16306:324;-1:-1:-1;16534:4:94;;-1:-1:-1;16593:2:94;14845:3675;;;16768:4;16744:21;:28;16740:1758;;;16832:4;16808:21;:28;16804:816;;;16900:4;16876:21;:28;16872:324;;;-1:-1:-1;16952:4:94;;-1:-1:-1;17011:2:94;14845:3675;;16872:324;-1:-1:-1;17100:4:94;;-1:-1:-1;17159:2:94;16740:1758;;16804:816;17294:4;17270:21;:28;17266:324;;;-1:-1:-1;17346:4:94;;-1:-1:-1;17405:2:94;14845:3675;;17266:324;-1:-1:-1;17494:4:94;;-1:-1:-1;17553:2:94;16740:1758;;;17710:4;17686:21;:28;17682:790;;;17778:4;17754:21;:28;17750:324;;;-1:-1:-1;17830:4:94;;-1:-1:-1;17889:2:94;17682:790;;17750:324;-1:-1:-1;17978:4:94;;-1:-1:-1;18037:2:94;17682:790;;;18172:4;18148:21;:28;18144:298;;;-1:-1:-1;18224:4:94;;-1:-1:-1;18283:2:94;18144:298;18641:5;18616:21;:30;18609:214;;18723:2;18714:11;;;-1:-1:-1;;;18755:19:94;18609:214;;;18848:5;18857:1;18848:10;18844:119;;18893:47;;-1:-1:-1;;;18893:47:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;18893:47:94;4929:302:543;18844:119:94;19003:5;18998:107;;19039:47;;-1:-1:-1;;;19039:47:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;19039:47:94;4929:302:543;18998:107:94;19587:14;-1:-1:-1;;;19568:33:94;19555:9;:46;19551:623;;19638:14;19625:27;;;;19551:623;;;-1:-1:-1;;;19729:16:94;19699:46;;;;19839:1;19822:18;;19818:338;;;19904:14;-1:-1:-1;;;;;19885:33:94;19872:9;:46;19868:266;;19950:27;;;;19868:266;;;1408:1;1495;20040:67;;;;;;;;;;;;;;19868:266;20202:26;20352:1;20340:9;:13;:30;;;;;20369:1;20357:9;:13;20340:30;20336:222;;;-1:-1:-1;;;20412:28:94;;20484:20;;;:55;;20537:1;20484:55;;;20519:8;20507:9;:20;20484:55;20462:77;;20372:186;20336:222;20621:9;20599:19;20587:9;:31;:43;20576:54;;20681:235;20729:18;20769;20809:59;20816:21;20839:5;20846:21;20809:6;:59::i;:::-;20890:8;20681:26;:235::i;:::-;20649:267;;-1:-1:-1;20649:267:94;-1:-1:-1;20961:1:94;20939:23;;20935:716;;;21012:2;20990:19;:24;20986:308;;;1408:1;1495;21204:67;;;;;;;;;;;;;;;20986:308;21479:19;21465:2;:34;21437:63;;;;;;:::i;:::-;;;;21526:17;21547:1;21526:22;21522:111;;1495:1;21576:34;;21522:111;-1:-1:-1;21676:17:94;;-1:-1:-1;21695:8:94;;-1:-1:-1;21668:36:94;;-1:-1:-1;;;;;;21668:36:94;13258:8471;12966:8769;;;;;;;:::o;34854:365::-;35003:4;35078:76;35093:18;35113:9;35124:18;35144:9;35078:14;:76::i;:::-;35172:40;;34854:365;-1:-1:-1;;;;;34854:365:94:o;2112:2562:93:-;2200:13;2257:71;2300:17;2319:8;2257:42;:71::i;:::-;2225:103;;-1:-1:-1;2225:103:93;-1:-1:-1;2339:13:93;;2397:24;-1:-1:-1;;;2225:103:93;2397:24;:::i;:::-;:29;2393:179;;-1:-1:-1;;;;2482:4:93;-1:-1:-1;2458:2:93;2393:179;;;-1:-1:-1;;;;2557:4:93;-1:-1:-1;2533:2:93;2393:179;2719:15;2737:33;2764:5;2737:17;:33;:::i;:::-;2719:51;-1:-1:-1;2917:17:93;2937:33;2964:5;2937:17;:33;:::i;:::-;2917:53;;2981:10;3024:1;3013:8;:12;3009:89;;;-1:-1:-1;3049:4:93;3078:9;3079:8;3078:9;:::i;:::-;3067:20;;3009:89;3124:1;3111:10;:14;3107:95;;;-1:-1:-1;3149:4:93;3180:11;3181:10;3180:11;:::i;:::-;3167:24;;3107:95;3212:35;;;;;;;;;:30;:35;;3261:15;;3257:819;;3292:24;;3354:10;3362:2;3354:5;:10;:::i;:::-;3334:30;;3518:128;3525:30;3545:9;3525:10;:30;:::i;:::-;3559:1;3525:35;3518:128;;3580:15;3593:2;3580:15;;:::i;:::-;;-1:-1:-1;3613:18:93;;;;:::i;:::-;;;;3518:128;;;3660:41;;;;;;;;;:36;:41;;;3715:147;3739:16;3735:1;:20;3715:147;;;3819:22;3805:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3805:42:93;;;;;;;;;;-1:-1:-1;3757:3:93;;3715:147;;;;3876:78;3883:15;3896:2;3883:10;:15;:::i;:::-;3902:1;3883:20;3876:78;;3923:16;3937:2;3923:16;;:::i;:::-;;;3876:78;;;4006:22;4030:34;4053:10;4030:22;:34::i;:::-;3987:78;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3968:97;;3278:798;;;3257:819;4086:28;4117:32;4140:8;4117:22;:32::i;:::-;4086:63;-1:-1:-1;4333:22:93;4358:32;4376:13;4358:8;:32;:::i;:::-;4333:57;-1:-1:-1;4400:28:93;4443:20;;:87;;4490:39;4513:15;4490:22;:39::i;:::-;4471:59;;;;;;;;:::i;:::-;;;;;;;;;;;;;4443:87;;;;;;;;;;;;;;;;4400:130;;4540:20;4563:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4563:16:93;;;;4540:39;;4610:6;4618:14;4634:16;4652:14;4596:71;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4589:78;;;;;;;;;;;;2112:2562;;;;:::o;5044:3560::-;5135:13;1062:4;5164:8;:38;:81;;;-1:-1:-1;5217:28:93;1062:4;5217:28;:::i;:::-;5206:8;:39;5164:81;5160:149;;;5268:30;;-1:-1:-1;;;5268:30:93;;;;;399:25:543;;;372:18;;5268:30:93;226:204:543;5160:149:93;5319:10;5332:21;;;;5388:495;;;;5626:18;5627:17;5626:18;:::i;:::-;5608:37;;5388:495;;;-1:-1:-1;5854:17:93;5388:495;5893:19;5921:25;5938:7;5921:16;:25::i;:::-;5969:13;;5893:54;;-1:-1:-1;5957:9:93;6232:106;6255:1;6239:13;:17;:57;;;;-1:-1:-1;6260:6:93;6275:13;6267:5;6271:1;6267;:5;:::i;:::-;:21;;;;:::i;:::-;6260:29;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;6260:29:93;-1:-1:-1;;;6260:36:93;6239:57;6232:106;;;6312:15;;;;:::i;:::-;;;;6232:106;;;6347:12;6362:17;6366:13;6362:1;:17;:::i;:::-;6347:32;-1:-1:-1;6556:13:93;6572:32;6590:13;6572:8;:32;:::i;:::-;6556:48;;6615:20;6638:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6638:16:93;;;;6615:39;;6679:1;6669:6;:11;6665:594;;6926:6;6900:15;6976:14;6926:6;6976:4;:14;:::i;:::-;6966:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6966:25:93;;6947:44;;7010:9;7005:86;7029:4;7025:1;:8;7005:86;;;7067:6;7074:1;7067:9;;;;;;;;:::i;:::-;;;;;;;;;7058:3;7062:1;7058:6;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;7058:18:93;;;;;;;;-1:-1:-1;7035:3:93;;7005:86;;;;7109:9;7104:90;7128:7;7124:1;:11;7104:90;;;-1:-1:-1;;;7160:3:93;7164:8;7171:1;7164:4;:8;:::i;:::-;7160:13;;;;;;;;:::i;:::-;;;;:19;-1:-1:-1;;;;;7160:19:93;;;;;;;;-1:-1:-1;7137:3:93;;7104:90;;;;7228:6;7243:3;7214:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7207:41;;;;;;;;;;;;;;6665:594;7472:17;7500:7;7501:6;7500:7;:::i;:::-;7472:36;;7530:9;7523:4;:16;7519:1079;;;7620:15;7638:16;7645:9;7638:4;:16;:::i;:::-;7620:34;-1:-1:-1;7668:16:93;7697:8;:4;7704:1;7697:8;:::i;:::-;7687:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7687:19:93;;7668:38;;7725:9;7720:89;7744:7;7740:1;:11;7720:89;;;7785:6;7792:1;7785:9;;;;;;;;:::i;:::-;;;;;;;;;7776:3;7780:1;7776:6;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;7776:18:93;;;;;;;;-1:-1:-1;7753:3:93;;7720:89;;;;-1:-1:-1;;;7822:3:93;7826:7;7822:12;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;7822:18:93;;;;;;;;;7859:9;7854:115;7878:9;7874:1;:13;7854:115;;;7935:6;7942:11;7952:1;7942:7;:11;:::i;:::-;7935:19;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;7935:19:93;7912:3;7930:1;7916:11;:7;7926:1;7916:11;:::i;:::-;:15;;;;:::i;:::-;7912:20;;;;;;;;:::i;:::-;;;;:42;-1:-1:-1;;;;;7912:42:93;;;;;;;;-1:-1:-1;7889:3:93;;7854:115;;;;8003:6;8018:3;7989:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7982:41;;;;;;;;;;;;;;;7519:1079;8131:25;8159:16;8171:4;8159:9;:16;:::i;:::-;8131:44;-1:-1:-1;8189:16:93;8242:4;8218:21;8131:44;8218:1;:21;:::i;:::-;:28;;;;:::i;:::-;8208:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8208:39:93;;8189:58;;-1:-1:-1;;;8261:3:93;8265:1;8261:6;;;;;;;;:::i;:::-;;;;:12;-1:-1:-1;;;;;8261:12:93;;;;;;;;;-1:-1:-1;;;8287:3:93;8291:1;8287:6;;;;;;;;:::i;:::-;;;;:12;-1:-1:-1;;;;;8287:12:93;;;;;;;;;8318:9;8313:97;8337:17;8333:1;:21;8313:97;;;-1:-1:-1;;;8379:3:93;8383:5;8387:1;8383;:5;:::i;:::-;8379:10;;;;;;;;:::i;:::-;;;;:16;-1:-1:-1;;;;;8379:16:93;;;;;;;;-1:-1:-1;8356:3:93;;8313:97;;;;8428:9;8423:110;8447:4;8443:1;:8;8423:110;;;8509:6;8516:1;8509:9;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;8509:9:93;8476:3;8504:1;8480:21;8484:17;8480:1;:21;:::i;:::-;:25;;;;:::i;:::-;8476:30;;;;;;;;:::i;:::-;;;;:42;-1:-1:-1;;;;;8476:42:93;;;;;;;;-1:-1:-1;8453:3:93;;8423:110;;8180:373:91;8268:6;8276;8295:24;8321:15;8338:13;8355:38;8377:5;8384:8;8355:21;:38::i;:::-;8294:99;;;;;;8408:8;8403:98;;8439:51;;-1:-1:-1;;;8439:51:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;8439:51:91;4929:302:543;8403:98:91;-1:-1:-1;8518:17:91;;;;-1:-1:-1;8180:373:91;-1:-1:-1;;;8180:373:91:o;19156:299::-;19244:5;19262:7;19271:13;19288:38;19298:17;19317:8;19288:9;:38::i;:::-;19261:65;;;;19341:8;19336:95;;19372:48;;-1:-1:-1;;;19372:48:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;19372:48:91;4929:302:543;33785:339:94;33935:6;33943;33999:36;34005:18;34025:9;33999:5;:36::i;:::-;33965:70;;-1:-1:-1;33965:70:94;-1:-1:-1;34052:65:94;34056:18;34076:9;33965:70;;34052:3;:65::i;:::-;34045:72;;;;33785:339;;;;;;;:::o;14844:390:91:-;14982:7;15006:13;15021;15038:58;15058:17;15077:8;15087;15038:19;:58::i;:::-;15005:91;;;;15111:8;15106:100;;15142:53;;-1:-1:-1;;;15142:53:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;15142:53:91;4929:302:543;15106:100:91;-1:-1:-1;15222:5:91;14844:390;-1:-1:-1;;;;14844:390:91:o;29621:3681:94:-;29771:6;;30037:26;;30065;;30034:58;30111:217;;;;30145:18;30167:1;30145:23;30141:177;;30196:18;30216:9;30188:38;;;;;;;30141:177;30273:18;30293:9;30265:38;;;;;;;30141:177;30565:43;30578:18;30598:9;30565:12;:43::i;:::-;30531:77;;-1:-1:-1;30531:77:94;-1:-1:-1;30652:43:94;30665:18;30685:9;30652:12;:43::i;:::-;30618:77;;-1:-1:-1;30618:77:94;-1:-1:-1;30816:21:94;;;30812:268;;;30919:18;;31031:9;;30866:18;;30812:268;31764:21;;;824:2;31948:45;;31944:122;;;32021:18;32041:9;32013:38;;;;;;;;31944:122;32285:21;32279:2;:27;32250:57;;;;;;:::i;:::-;;;-1:-1:-1;;32400:39:94;;;32658:26;;;32555:4;32648:37;;;32641:45;32734:18;32561:43;;;32551:54;;;32544:62;32718:35;32826:412;;;;32885:9;-1:-1:-1;;;;;32865:29:94;32861:130;;32925:47;;-1:-1:-1;;;32925:47:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;32925:47:94;4929:302:543;32861:130:94;33031:2;33051:24;;;;33009;;;;33122:40;;;33093:11;;;;;;32826:412;;;33222:1;33201:22;;32826:412;-1:-1:-1;33265:18:94;;33285:9;;-1:-1:-1;;;;;;29621:3681:94:o;50744:2689::-;50905:6;;51455:26;;51483;;51452:58;51601:26;;;51629;;;51597:59;51374:308;51761:24;;;51346:461;51842:105;;;;51889:18;51909;51881:47;;;;;;;51842:105;51232:729;51975:12;52025:9;52013;:21;52009:329;;;-1:-1:-1;52124:18:94;;52248:9;;52067:18;;52319:4;52009:329;52374:21;;;52352:19;52500:20;;52540:2;52522:21;;52497:47;52571:210;;;;52610:7;52606:161;;;52649:1;52652:18;52641:30;;;;;;;;;52606:161;52726:18;52746:1;52718:30;;;;;;;;;52606:161;52914:2;:27;;;52974:26;;;:18;52914:27;52974:26;52914:27;53019:16;;;;:::i;:::-;;:38;53015:402;;53081:7;53077:161;;;53120:1;53123:18;53112:30;;;;;;;;;;;53077:161;53197:18;53217:1;53189:30;;;;;;;;;;;53015:402;53262:7;53258:159;;;53297:18;;-1:-1:-1;53317:8:94;-1:-1:-1;53289:37:94;;-1:-1:-1;;;;53289:37:94;53258:159;53373:8;-1:-1:-1;53383:18:94;;-1:-1:-1;53365:37:94;;-1:-1:-1;;;;53365:37:94;2977:541;3058:6;3066;-1:-1:-1;;;3184:17:94;:37;3180:271;;-1:-1:-1;;;;;3245:8:94;:28;3241:127;;3304:45;;-1:-1:-1;;;3304:45:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;3304:45:94;4929:302:543;3241:127:94;3406:2;3385:23;;;;3426:10;;;;;3180:271;-1:-1:-1;;3472:18:94;;;;;;2977:541::o;1751:6678:95:-;1859:20;1987:5;1859:20;;2015:55;1987:5;2045:3;7516:41:121;2015:21:95;:55::i;:::-;2006:64;-1:-1:-1;2102:15:95;;;;2006:64;2201:53;2006:64;2231:3;20378:131:121;2201:21:95;:53::i;:::-;2192:62;;2286:8;2276:6;:18;2272:120;;-1:-1:-1;;;;2326:32:95;-1:-1:-1;2368:1:95;;-1:-1:-1;2368:1:95;;-1:-1:-1;2318:55:95;;-1:-1:-1;2318:55:95;2272:120;2411:37;2450:27;2501:61;2548:5;2555:6;2501:46;:61::i;:::-;2410:152;;-1:-1:-1;2410:152:95;-1:-1:-1;;;;;;;2584:35:95;;;2580:135;;-1:-1:-1;2651:30:95;-1:-1:-1;2691:1:95;;-1:-1:-1;2691:1:95;;-1:-1:-1;2643:53:95;;-1:-1:-1;;2643:53:95;2580:135;1870:13:122;;2752:20:95;;-1:-1:-1;7662:41:121;1886:1:122;2801:16:95;1862:22:122;;;;1858:30;;;;1854:41;1847:49;1840:57;1823:15;;;1819:79;;-1:-1:-1;;2899:14:95;;2895:3973;;-1:-1:-1;2964:8:95;;;;;2945:1;2964:8;3043:53;2964:8;3073:3;20378:131:121;3043:21:95;:53::i;:::-;3034:62;;3128:9;3118:6;:19;3114:119;;-1:-1:-1;;;;3169:30:95;-1:-1:-1;3209:1:95;;-1:-1:-1;3209:1:95;;-1:-1:-1;3161:53:95;;-1:-1:-1;;3161:53:95;3114:119;3406:6;3430:125;-1:-1:-1;;3457:17:95;;1870:13:122;;1823:15;;-1:-1:-1;1886:1:122;1688:14;1862:22;;;;1858:30;;;;7945:41:121;1854::122;1847:49;1840:57;1819:79;3496:1:95;3437:60;3430:125;;-1:-1:-1;;3521:15:95;3430:125;;;3594:9;3577:13;:26;3573:403;;3628:24;3654:19;3701:72;3748:9;3759:13;3701:46;:72::i;:::-;3627:146;;-1:-1:-1;3627:146:95;-1:-1:-1;;;;;;;3799:22:95;;;3795:117;;-1:-1:-1;3857:17:95;-1:-1:-1;3884:1:95;;-1:-1:-1;3884:1:95;;-1:-1:-1;3849:40:95;;-1:-1:-1;;;;3849:40:95;3795:117;3945:12;-1:-1:-1;;3573:403:95;4079:1;4067:9;:13;4063:113;;;-1:-1:-1;;;;4112:30:95;-1:-1:-1;4152:1:95;;-1:-1:-1;4152:1:95;;-1:-1:-1;4104:53:95;;-1:-1:-1;;;4104:53:95;4063:113;4197:10;4193:79;;;4244:9;4243:10;;4231:22;;4193:79;4724:13;4704:9;4697:41;4686:52;;4843:1;4832:8;:12;4828:114;;;-1:-1:-1;;;;4876:32:95;-1:-1:-1;4918:1:95;;-1:-1:-1;4918:1:95;;-1:-1:-1;4868:55:95;;-1:-1:-1;;;4868:55:95;4828:114;4964:17;4985:1;4964:22;4960:1894;;5030:9;5010:29;;4960:1894;;;5210:13;5234:9;;;5717:2;5709:10;;5705:122;;;-1:-1:-1;;;;5755:34:95;-1:-1:-1;5799:1:95;;-1:-1:-1;5799:1:95;;-1:-1:-1;5747:57:95;;-1:-1:-1;;;;5747:57:95;5705:122;5856:2;:11;6024:33;;;5998:23;6024:17;5856:11;6024:33;5856:11;6241:32;;;;:::i;:::-;;:53;;;-1:-1:-1;6556:44:95;;;;;;;6241:53;;6626:32;;;6644:14;6626:32;6622:144;;;-1:-1:-1;;;;6694:34:95;-1:-1:-1;6738:1:95;;-1:-1:-1;6738:1:95;;-1:-1:-1;6686:57:95;;-1:-1:-1;;;;;;;6686:57:95;6622:144;-1:-1:-1;;6807:28:95;;;-1:-1:-1;;4960:1894:95;2915:3953;;2895:3973;1870:13:122;;20571:29:121;1886:1:122;6882:13:95;1862:22:122;;;;1858:30;;;;1854:41;1847:49;1840:57;1823:15;;;1819:79;6974:11:95;;6970:1209;;7005:8;;;;;;7081:55;7005:8;7111:3;7516:41:121;7081:21:95;:55::i;:::-;7072:64;-1:-1:-1;7072:64:95;7235:53;7072:64;7265:3;20378:131:121;7235:21:95;:53::i;:::-;7226:62;;7324:11;7314:6;:21;7310:131;;-1:-1:-1;;;;7371:32:95;-1:-1:-1;7413:1:95;;-1:-1:-1;7413:1:95;;-1:-1:-1;7363:55:95;;-1:-1:-1;;;;7363:55:95;7310:131;7154:305;7500:21;7523:16;7567:62;7614:6;7622;7567:46;:62::i;:::-;7499:130;;-1:-1:-1;7499:130:95;-1:-1:-1;;;;;;;7655:19:95;;;7651:111;;-1:-1:-1;7710:14:95;-1:-1:-1;7734:1:95;;-1:-1:-1;7734:1:95;;-1:-1:-1;7702:37:95;;-1:-1:-1;;;;7702:37:95;7651:111;7792:9;-1:-1:-1;;7881:17:95;;;7860:18;7925:10;;:36;;;;;7953:8;7939:11;:22;7925:36;7924:80;;;;7976:1;7967:6;:10;:36;;;;;7995:8;7981:11;:22;7967:36;7920:183;;;-1:-1:-1;;;;8040:25:95;-1:-1:-1;8075:1:95;;-1:-1:-1;8075:1:95;;-1:-1:-1;8032:48:95;;-1:-1:-1;;;;8032:48:95;7920:183;8135:11;-1:-1:-1;;6970:1209:95;8197:17;8218:1;8197:22;8193:220;;8397:1;8386:12;;8193:220;1954:6469;;;1751:6678;;;;;;;;:::o;16515:2402:91:-;16600:11;17032:46;;;;;;16696:17;16752:8;17032:46;17356:668;;17413:4;17393:17;:24;:29;17389:135;;17467:3;17446:24;;;;17504:1;17492:13;;;;17389:135;17763:17;17741;17734:46;;;17727:151;;17825:2;17804:23;;;;17849:10;;;;;17727:151;;;17356:668;;;17920:17;17941:1;17920:22;17916:94;;-1:-1:-1;3702:1:91;;-1:-1:-1;17986:4:91;;-1:-1:-1;17966:25:91;;-1:-1:-1;17966:25:91;17916:94;18234:8;18221;18215:27;;;18211:393;;18436:1;18425:8;:12;18421:85;;;-1:-1:-1;3702:1:91;;-1:-1:-1;3702:1:91;;-1:-1:-1;18461:26:91;;-1:-1:-1;18461:26:91;18421:85;18530:59;;-1:-1:-1;;;18530:59:91;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;18530:59:91;4929:302:543;18211:393:91;-1:-1:-1;;;;;;;18837:28:91;;18871:4;18867:19;;;18834:53;;-1:-1:-1;16515:2402:91;;;;;:::o;6103:800::-;6188:6;;;6270:17;;;6262:26;;-1:-1:-1;;;;;6419:33:91;;6415:472;;;6632:2;6624:5;:10;6648:1;6637:12;;6659:2;6651:5;:10;6665:1;6651:15;6609:58;;;;;;;;;6415:472;6849:5;;-1:-1:-1;6857:8:91;-1:-1:-1;6867:4:91;;-1:-1:-1;6103:800:91;;;;;;:::o;57066:978:94:-;57151:6;57159:4;57165:6;57211:8;-1:-1:-1;;57211:14:94;57207:821;;-1:-1:-1;57253:17:94;;-1:-1:-1;57272:5:94;;-1:-1:-1;57279:1:94;57245:36;;57207:821;-1:-1:-1;;57306:8:94;:13;57302:726;;;-1:-1:-1;;57343:8:94;:14;57339:98;;;-1:-1:-1;57389:1:94;;-1:-1:-1;;57392:22:94;;;57416:1;57381:37;;57339:98;57454:12;57492:8;57503:1;57492:12;57490:15;;57476:2;:30;57454:53;;57592:15;57630:5;57610:17;:25;;;;;:::i;:::-;;;-1:-1:-1;;57671:16:94;;;:37;;;;-1:-1:-1;57682:5:94;-1:-1:-1;57653:63:94;;57302:726;57753:1;57741:8;:13;57737:291;;-1:-1:-1;57782:1:94;;-1:-1:-1;57782:1:94;;-1:-1:-1;57792:1:94;57774:20;;57737:291;-1:-1:-1;;;57988:1:94;:12;;57974:2;:27;57947:55;;58004:5;58011:1;57939:74;;58539:1243;58674:20;;;1447:3:96;1145:33;1176:2;397:4;1145:33;:::i;:::-;;1176:2;397:4;1145:33;:::i;:::-;1294:23;;1316:1;1294:23;:::i;:::-;58911:24:94;;:1;:24;:::i;:::-;:46;;;;:::i;:::-;:79;;;;:::i;:::-;58890:100;;59102:477;;;59187:1;59184;59177:12;59267:1;59262;59257:2;59250:5;59246:14;59242:22;59234:6;59230:35;59226:2;59218:6;59206:63;59152:6;59312:1;59306:8;59354:24;59346:6;59342:37;59332:47;;59406:1;59403;59396:12;59509:1;59502:2;59495:5;59491:14;59486:2;59480:3;59473:5;59469:15;59465:24;59461:45;59453:6;59449:58;59445:2;59437:6;59425:86;59562:1;59556:8;59538:27;;59102:477;-1:-1:-1;;;;59102:477:94:o;:::-;59610:51;59657:3;59645:10;59625:18;59610:51;:::i;:::-;59593:68;;59677:8;59674:92;;;59705:59;59761:1;59756:3;59752:11;59740:10;59720:18;59705:59;:::i;:::-;59688:76;;59025:751;58539:1243;;;;;;:::o;60320:1618::-;60583:6;60591;60691:13;60675:12;:29;60671:93;;-1:-1:-1;60728:13:94;;-1:-1:-1;60743:9:94;60720:33;;60671:93;60773:33;60816:24;60888;60914:21;60939:54;60943:12;60957:9;60968:13;60983:9;60939:3;:54::i;:::-;60887:106;;;;61032:23;61057:20;61081:55;61085:13;61100:9;61111:13;61126:9;61081:3;:55::i;:::-;61031:105;;;;61253:71;61257:17;61276:14;61292:16;61310:13;61253:3;:71::i;:::-;61187:137;;;;;;;;60851:484;;;;61365:24;61391:21;61416:55;61420:13;61435:9;61446:13;61461:9;61416:3;:55::i;:::-;61364:107;;;;61529:33;61564:24;61604:85;61608:26;61636:17;61655;61674:14;61604:3;:85::i;:::-;61528:161;;;;61752:24;61778:15;61809:76;61813:26;61841:17;61860:13;61875:9;61809:3;:76::i;:::-;61751:134;;-1:-1:-1;61751:134:94;-1:-1:-1;;;;;;;;;60320:1618:94;;;;;;;;;;;:::o;48286:370::-;48374:6;48382;48401:27;48430:18;48450:9;48463:37;48472:17;48491:8;48463;:37::i;:::-;48400:100;;;;;;48515:4;48510:88;;48542:45;;-1:-1:-1;;;48542:45:94;;;;;5157:25:543;;;5198:18;;;5191:34;;;5130:18;;48542:45:94;4929:302:543;35925:1328:94;36006:14;;1145:33:96;1176:2;397:4;1145:33;:::i;:::-;1294:23;;1316:1;1294:23;:::i;:::-;36104:24:94;;36127:1;36104:24;:::i;:::-;36077:51;-1:-1:-1;36138:24:94;1145:33:96;1176:2;397:4;1145:33;:::i;:::-;36138:46:94;;36537:1;36532:2;36525:5;36521:14;36517:22;36514:1;36510:30;36563:1;36560;36553:12;36614:1;36602:10;36598:2;36590:6;36578:38;;36655:1;36649:8;36699:6;36685:12;36681:25;36671:35;;36754:6;36740:12;36736:25;36729:33;36719:136;;36802:39;;;;36719:136;;36879:1;36876;36869:12;37191:1;37184:2;37177:5;37173:14;37168:2;37162:3;37155:5;37151:15;37147:24;37143:45;37125:16;37121:68;37117:2;37109:6;37097:96;-1:-1:-1;;37234:1:94;37228:8;37216:21;;35925:1328;-1:-1:-1;;35925:1328:94:o;3731:701::-;3818:7;3885:1;3865:17;:21;3861:555;;;-1:-1:-1;;;3910:17:94;:37;3906:316;;-1:-1:-1;;;;3978:29:94;3731:701;-1:-1:-1;3731:701:94:o;3906:316::-;-1:-1:-1;4184:18:94;;;3731:701::o;3861:555::-;-1:-1:-1;4383:17:94;3731:701::o;3861:555::-;3731:701;;;:::o;21872:550::-;21933:12;;-1:-1:-1;;22316:1:94;22313;22306:20;22346:9;;;;22394:11;;;22380:12;;;;22376:30;;;;;21872:550;-1:-1:-1;;21872:550:94:o;22585:4048::-;22667:14;22694:13;22709;22726:12;22733:1;22736;22726:6;:12::i;:::-;22693:45;;;;22812:5;22821:1;22812:10;22808:109;;22881:11;22873:5;:19;;;;;:::i;:::-;;22866:26;;;;;;22808:109;23024:11;23015:5;:20;23011:91;;23058:33;;-1:-1:-1;;;23058:33:94;;;;;6940:25:543;;;6981:18;;;6974:34;;;7024:18;;;7017:34;;;6913:18;;23058:33:94;6744:313:543;23011:91:94;23394:17;23553:11;23550:1;23547;23540:25;24154:1;24139:12;;:16;;24124:32;;24393:25;;;;;25554:1;25535;:15;;25534:21;;25787;;;25783:25;;25772:36;25856:21;;;25852:25;;25841:36;25926:21;;;25922:25;;25911:36;25996:21;;;25992:25;;25981:36;26066:21;;;26062:25;;26051:36;26137:21;;;26133:25;;;26122:36;24106:15;25003;;;24999:29;;;24995:37;;;23659:20;;;23648:32;;;25121:22;;;;23702:21;;;;24565:19;;;;25112:31;;;;26601:15;;-1:-1:-1;;22585:4048:94;;;;;:::o;5040:1698::-;5190:6;5198;5312:1;5307;5303;:5;5302:11;5298:1434;;;-1:-1:-1;;;;;5333:20:94;:48;5329:830;;;5429:29;-1:-1:-1;;;;;5457:1:94;5429:29;:::i;:::-;5405:20;:53;5401:529;;-1:-1:-1;;;;5600:16:94;-1:-1:-1;5618:8:94;5592:35;;5401:529;5870:25;5893:2;5870:20;:25;:::i;:::-;5862:34;;;:::i;:::-;5898:12;:8;5909:1;5898:12;:::i;:::-;5854:57;;;;;;5329:830;6104:29;6112:20;6104:29;:::i;:::-;6135:8;6096:48;;;;;;5298:1434;-1:-1:-1;;;;;6193:20:94;:48;6189:533;;;6444:25;6467:2;6444:20;:25;:::i;6189:533::-;-1:-1:-1;6675:20:94;;-1:-1:-1;6698:8:94;6660:47;;45918:1994;46002:6;46010;46018:4;46062:17;46083:1;46062:22;46058:134;;-1:-1:-1;1408:1:94;;-1:-1:-1;1408:1:94;;-1:-1:-1;46172:4:94;46104:73;;46058:134;-1:-1:-1;;;46311:17:94;:24;46339:1;46311:29;46307:1005;;46384:4;46364:17;:24;:29;:66;;;;-1:-1:-1;46409:21:94;46397:33;;;46364:66;46360:174;;;46475:4;46454:25;;;;46513:2;46501:14;;;;46360:174;46576:4;46556:17;:24;:29;:66;;;;-1:-1:-1;46601:21:94;46589:33;;;46556:66;46552:174;;;46667:4;46646:25;;;;46705:2;46693:14;;;;46552:174;46768:4;46748:17;:24;:29;:66;;;;-1:-1:-1;46793:21:94;46781:33;;;46748:66;46744:174;;;46859:4;46838:25;;;;46897:2;46885:14;;;;46744:174;46963:4;46943:17;:24;:29;:65;;;;-1:-1:-1;46988:20:94;46976:32;;;46943:65;46936:174;;;47053:3;47032:24;;;;47090:1;47078:13;;;;46936:174;;;-1:-1:-1;;;47132:17:94;:24;:29;:65;;;;-1:-1:-1;;;;;;47165:32:94;;;47132:65;47128:170;;;47242:2;47221:23;;;;47278:1;47266:13;;;;47128:170;47606:2;47586:22;;;;;47647:25;47626:17;:46;:82;;;;-1:-1:-1;;;;;;47676:32:94;;;47626:82;47622:192;;;47748:20;47728:40;;47798:1;47786:13;;;;47622:192;-1:-1:-1;47836:17:94;;47855:8;;-1:-1:-1;;;;;;47865:24:94;;:29;;;45918:1994::o;1985:168:21:-;2046:13;2100:1;2092:5;:9;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2092:20:21;;;;2114:31;2436:3:30;2431:8;;;2576;;;2575:17;2114:8:21;:31::i;:::-;2078:68;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2071:75;;1985:168;;;:::o;1251:634::-;1307:13;1356:14;1373:17;1384:5;1373:10;:17::i;:::-;1393:1;1373:21;1356:38;;1408:20;1442:6;1431:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1431:18:21;-1:-1:-1;1408:41:21;-1:-1:-1;1538:30:21;;;1554:4;1538:30;1595:247;-1:-1:-1;;1626:5:21;1730:10;1725:2;1714:14;;1709:32;1626:5;1696:46;1786:2;1777:11;;;-1:-1:-1;1806:21:21;1595:247;1806:21;-1:-1:-1;1862:6:21;1251:634;-1:-1:-1;;;1251:634:21:o;835:346:122:-;919:7;1033:109;1107:1;1100:4;1096:1;1086:6;1080:13;1077:1;1072:22;1068:30;1064:41;1061:48;1055:3;1047:6;1044:15;1040:70;1033:109;;;1135:1;1127:6;1123:14;1113:24;;1033:109;;;-1:-1:-1;1168:6:122;;835:346;-1:-1:-1;;835:346:122:o;5044:1463:123:-;1870:13:122;;5135:6:123;;;;7516:41:121;1886:1:122;1862:22;;;1858:30;;;;1854:41;1847:49;1840:57;1823:15;;;1819:79;5304:15:123;;;;5135:6;;5374:53;5304:15;1823::122;5374:40:123;:53::i;:::-;5334:93;;-1:-1:-1;5334:93:123;-1:-1:-1;;;;;;;5476:26:123;;;5472:90;;-1:-1:-1;5530:13:123;-1:-1:-1;5545:1:123;;-1:-1:-1;5522:25:123;;-1:-1:-1;;5522:25:123;5472:90;5618:5;5627:1;5618:10;5614:341;;-1:-1:-1;;;;;5847:5:123;:33;:77;;5922:1;5847:77;;;-1:-1:-1;;;5847:77:123;5839:101;-1:-1:-1;5933:5:123;-1:-1:-1;5839:101:123;;-1:-1:-1;;;5839:101:123;5614:341;-1:-1:-1;;;6392:37:123;;:81;;6471:1;6392:81;;;-1:-1:-1;;;6392:81:123;6384:106;-1:-1:-1;6475:14:123;;;-1:-1:-1;;;;5044:1463:123;;;;;:::o;29471:916:28:-;29524:7;;29608:8;29599:17;;29595:103;;29645:8;29636:17;;;-1:-1:-1;29681:2:28;29671:12;29595:103;29724:8;29715:5;:17;29711:103;;29761:8;29752:17;;;-1:-1:-1;29797:2:28;29787:12;29711:103;29840:8;29831:5;:17;29827:103;;29877:8;29868:17;;;-1:-1:-1;29913:2:28;29903:12;29827:103;29956:7;29947:5;:16;29943:100;;29992:7;29983:16;;;-1:-1:-1;30027:1:28;30017:11;29943:100;30069:7;30060:5;:16;30056:100;;30105:7;30096:16;;;-1:-1:-1;30140:1:28;30130:11;30056:100;30182:7;30173:5;:16;30169:100;;30218:7;30209:16;;;-1:-1:-1;30253:1:28;30243:11;30169:100;30295:7;30286:5;:16;30282:66;;30332:1;30322:11;30374:6;29471:916;-1:-1:-1;;29471:916:28:o;1114:3326:123:-;1199:6;1207:7;1263:3;1254:5;:12;1250:95;;-1:-1:-1;;;;1294:32:123;-1:-1:-1;1328:1:123;1286:44;;1250:95;1511:5;1520:1;1511:10;1507:80;;1548:24;;-1:-1:-1;;;1548:24:123;;;;;;;;;;;1507:80;1808:18;1778:19;-1:-1:-1;;1912:7:123;;1778:19;2083:486;2100:5;2090:6;:15;;:32;;;;;2120:2;2109:8;:13;2090:32;2083:486;;;2434:13;;2518:10;;;;-1:-1:-1;;2546:8:123;;;;2468:2;2464:17;2431:1;2426:22;;;;2422:40;;;2418:64;2407:76;2083:486;;;2785:5;2775:6;:15;2771:1613;;2939:13;;2832;2931:22;2927:40;;;3167:1;3159:9;;3155:393;;;-1:-1:-1;;;;3204:29:123;-1:-1:-1;3235:1:123;;-1:-1:-1;3196:41:123;;-1:-1:-1;;;;3196:41:123;3155:393;3318:2;:14;;;3309:24;;3363:14;;;:22;-1:-1:-1;3359:126:123;;;-1:-1:-1;;;;3425:29:123;-1:-1:-1;3456:1:123;;-1:-1:-1;3417:41:123;;-1:-1:-1;;;;;3417:41:123;3359:126;3510:15;;;;;-1:-1:-1;;;3569:8:123;;;;3760:592;3777:5;3767:6;:15;3760:592;;4007:13;;3876:23;3999:22;4177:18;4150:46;;4146:150;;-1:-1:-1;;;;4236:29:123;-1:-1:-1;4267:1:123;;-1:-1:-1;4228:41:123;;-1:-1:-1;;;;4228:41:123;4146:150;-1:-1:-1;;;4321:8:123;;;;3760:592;;;4413:1;;4417:5;;-1:-1:-1;1114:3326:123;-1:-1:-1;;;;;;1114:3326:123:o;14:207:543:-;100:6;153:2;141:9;132:7;128:23;124:32;121:52;;;169:1;166;159:12;121:52;-1:-1:-1;192:23:543;;14:207;-1:-1:-1;14:207:543:o;435:302::-;557:6;565;618:2;606:9;597:7;593:23;589:32;586:52;;;634:1;631;624:12;586:52;-1:-1:-1;;657:23:543;;;727:2;712:18;;;699:32;;-1:-1:-1;435:302:543:o;742:156::-;808:20;;868:4;857:16;;847:27;;837:55;;888:1;885;878:12;903:277;996:6;1004;1057:2;1045:9;1036:7;1032:23;1028:32;1025:52;;;1073:1;1070;1063:12;1025:52;1109:9;1096:23;1086:33;;1138:36;1170:2;1159:9;1155:18;1138:36;:::i;:::-;1128:46;;903:277;;;;;:::o;1640:368::-;1732:6;1740;1793:2;1781:9;1772:7;1768:23;1764:32;1761:52;;;1809:1;1806;1799:12;1761:52;1845:9;1832:23;1822:33;;1905:2;1894:9;1890:18;1877:32;1952:5;1945:13;1938:21;1931:5;1928:32;1918:60;;1974:1;1971;1964:12;1918:60;1997:5;1987:15;;;1640:368;;;;;:::o;2013:418::-;2162:2;2151:9;2144:21;2125:4;2194:6;2188:13;2237:6;2232:2;2221:9;2217:18;2210:34;2296:6;2291:2;2283:6;2279:15;2274:2;2263:9;2259:18;2253:50;2352:1;2347:2;2338:6;2327:9;2323:22;2319:31;2312:42;2422:2;2415;2411:7;2406:2;2398:6;2394:15;2390:29;2379:9;2375:45;2371:54;2363:62;;;2013:418;;;;:::o;2873:127::-;2934:10;2929:3;2925:20;2922:1;2915:31;2965:4;2962:1;2955:15;2989:4;2986:1;2979:15;3005:922;3074:6;3127:2;3115:9;3106:7;3102:23;3098:32;3095:52;;;3143:1;3140;3133:12;3095:52;3183:9;3170:23;3212:18;3253:2;3245:6;3242:14;3239:34;;;3269:1;3266;3259:12;3239:34;3307:6;3296:9;3292:22;3282:32;;3352:7;3345:4;3341:2;3337:13;3333:27;3323:55;;3374:1;3371;3364:12;3323:55;3410:2;3397:16;3432:2;3428;3425:10;3422:36;;;3438:18;;:::i;:::-;3513:2;3507:9;3481:2;3567:13;;-1:-1:-1;;3563:22:543;;;3587:2;3559:31;3555:40;3543:53;;;3611:18;;;3631:22;;;3608:46;3605:72;;;3657:18;;:::i;:::-;3697:10;3693:2;3686:22;3732:2;3724:6;3717:18;3772:7;3767:2;3762;3758;3754:11;3750:20;3747:33;3744:53;;;3793:1;3790;3783:12;3744:53;3849:2;3844;3840;3836:11;3831:2;3823:6;3819:15;3806:46;3894:1;3872:15;;;3889:2;3868:24;3861:35;;;;-1:-1:-1;3876:6:543;3005:922;-1:-1:-1;;;;;3005:922:543:o;4237:397::-;4395:6;4403;4411;4464:2;4452:9;4443:7;4439:23;4435:32;4432:52;;;4480:1;4477;4470:12;4432:52;-1:-1:-1;;4503:23:543;;;4573:2;4558:18;;4545:32;;-1:-1:-1;4624:2:543;4609:18;;;4596:32;;4237:397;-1:-1:-1;4237:397:543:o;5485:127::-;5546:10;5541:3;5537:20;5534:1;5527:31;5577:4;5574:1;5567:15;5601:4;5598:1;5591:15;5944:127;6005:10;6000:3;5996:20;5993:1;5986:31;6036:4;6033:1;6026:15;6060:4;6057:1;6050:15;6076:200;6142:9;;;6115:4;6170:9;;6198:10;;6210:12;;;6194:29;6233:12;;;6225:21;;6191:56;6188:82;;;6250:18;;:::i;:::-;6188:82;6076:200;;;;:::o;6281:216::-;6345:9;;;6373:11;;;6320:3;6403:9;;6431:10;;6427:19;;6456:10;;6448:19;;6424:44;6421:70;;;6471:18;;:::i;:::-;6421:70;;6281:216;;;;:::o;6502:237::-;6574:9;;;6541:7;6599:9;;-1:-1:-1;;;6610:18:543;;6595:34;6592:60;;;6632:18;;:::i;:::-;6705:1;6696:7;6691:16;6688:1;6685:23;6681:1;6674:9;6671:38;6661:72;;6713:18;;:::i;7062:416::-;7151:1;7188:5;7151:1;7202:270;7223:7;7213:8;7210:21;7202:270;;;7282:4;7278:1;7274:6;7270:17;7264:4;7261:27;7258:53;;;7291:18;;:::i;:::-;7341:7;7331:8;7327:22;7324:55;;;7361:16;;;;7324:55;7440:22;;;;7400:15;;;;7202:270;;;7206:3;7062:416;;;;;:::o;7483:806::-;7532:5;7562:8;7552:80;;-1:-1:-1;7603:1:543;7617:5;;7552:80;7651:4;7641:76;;-1:-1:-1;7688:1:543;7702:5;;7641:76;7733:4;7751:1;7746:59;;;;7819:1;7814:130;;;;7726:218;;7746:59;7776:1;7767:10;;7790:5;;;7814:130;7851:3;7841:8;7838:17;7835:43;;;7858:18;;:::i;:::-;-1:-1:-1;;7914:1:543;7900:16;;7929:5;;7726:218;;8028:2;8018:8;8015:16;8009:3;8003:4;8000:13;7996:36;7990:2;7980:8;7977:16;7972:2;7966:4;7963:12;7959:35;7956:77;7953:159;;;-1:-1:-1;8065:19:543;;;8097:5;;7953:159;8144:34;8169:8;8163:4;8144:34;:::i;:::-;8214:6;8210:1;8206:6;8202:19;8193:7;8190:32;8187:58;;;8225:18;;:::i;:::-;8263:20;;7483:806;-1:-1:-1;;;7483:806:543:o;8294:131::-;8354:5;8383:36;8410:8;8404:4;8383:36;:::i;8430:193::-;8469:1;8495;8485:35;;8500:18;;:::i;:::-;-1:-1:-1;;;8536:18:543;;-1:-1:-1;;8556:13:543;;8532:38;8529:64;;;8573:18;;:::i;:::-;-1:-1:-1;8607:10:543;;8430:193::o;8628:112::-;8659:1;8685;8675:35;;8690:18;;:::i;:::-;-1:-1:-1;8724:10:543;;8628:112::o;8745:136::-;8780:3;-1:-1:-1;;;8801:22:543;;8798:48;;8826:18;;:::i;8886:120::-;8926:1;8952;8942:35;;8957:18;;:::i;:::-;-1:-1:-1;8991:9:543;;8886:120::o;9011:135::-;9050:3;9071:17;;;9068:43;;9091:18;;:::i;:::-;-1:-1:-1;9138:1:543;9127:13;;9011:135::o;9151:212::-;9193:3;9231:5;9225:12;9275:6;9268:4;9261:5;9257:16;9252:3;9246:36;9337:1;9301:16;;9326:13;;;-1:-1:-1;9301:16:543;;9151:212;-1:-1:-1;9151:212:543:o;9368:344::-;9589:3;9620:30;9646:3;9638:6;9620:30;:::i;:::-;-1:-1:-1;;;9659:18:543;;9704:1;9693:13;;9368:344;-1:-1:-1;;;9368:344:543:o;9717:390::-;-1:-1:-1;;;10011:3:543;10004:16;9986:3;10036:65;10062:38;10097:1;10092:3;10088:11;10080:6;10062:38;:::i;:::-;10054:6;10036:65;:::i;:::-;10029:72;9717:390;-1:-1:-1;;;;9717:390:543:o;10112:315::-;-1:-1:-1;;;10358:3:543;10351:16;10333:3;10383:38;10418:1;10413:3;10409:11;10401:6;10383:38;:::i;10432:417::-;10707:3;10732:111;10758:84;10784:57;10810:30;10836:3;10828:6;10810:30;:::i;:::-;10802:6;10784:57;:::i;:::-;10776:6;10758:84;:::i;11034:128::-;11101:9;;;11122:11;;;11119:37;;;11136:18;;:::i;11167:127::-;11228:10;11223:3;11219:20;11216:1;11209:31;11259:4;11256:1;11249:15;11283:4;11280:1;11273:15;11299:125;11364:9;;;11385:10;;;11382:36;;;11398:18;;:::i;11429:267::-;11608:3;11633:57;11659:30;11685:3;11677:6;11659:30;:::i;11701:168::-;11774:9;;;11805;;11822:15;;;11816:22;;11802:37;11792:71;;11843:18;;:::i","linkReferences":{}},"methodIdentifiers":{"FORMAT_DEFAULT_SCIENTIFIC_MAX()":"9b4afd99","FORMAT_DEFAULT_SCIENTIFIC_MIN()":"d35273a7","abs(bytes32)":"81a82272","add(bytes32,bytes32)":"d1de592a","ceil(bytes32)":"719cd99d","div(bytes32,bytes32)":"30297400","e()":"ffae15ba","eq(bytes32,bytes32)":"3447c030","floor(bytes32)":"5ca0e7a4","format(bytes32)":"a100a3d9","format(bytes32,bool)":"371493ce","format(bytes32,bytes32,bytes32)":"e5526ecd","frac(bytes32)":"28fa1f01","fromFixedDecimalLossless(uint256,uint8)":"3b3bd868","fromFixedDecimalLossy(uint256,uint8)":"e75f991f","gt(bytes32,bytes32)":"8dc29807","gte(bytes32,bytes32)":"73bfb283","integer(bytes32)":"e0db5888","inv(bytes32)":"04327dc5","isZero(bytes32)":"dd646917","log10(bytes32)":"25388350","lt(bytes32,bytes32)":"d102b4d3","lte(bytes32,bytes32)":"81f7e2f5","max(bytes32,bytes32)":"078b665b","maxNegativeValue()":"602c35fc","maxPositiveValue()":"cb09682b","min(bytes32,bytes32)":"a90d041a","minNegativeValue()":"cde72ef3","minPositiveValue()":"a19684b7","minus(bytes32)":"d3d6ffa8","mul(bytes32,bytes32)":"96ce1ec7","parse(string)":"bc62d8d8","pow(bytes32,bytes32)":"3004fa41","pow10(bytes32)":"1ee62f11","sqrt(bytes32)":"146e82ad","sub(bytes32,bytes32)":"41aa0080","toFixedDecimalLossless(bytes32,uint8)":"5b23771d","toFixedDecimalLossy(bytes32,uint8)":"0b6429bc","zero()":"bc1b392d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"CoefficientOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"DivisionByZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"ExponentOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"ExponentUnderflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"FixedDecimalOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"Log10Negative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Log10Zero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tablesAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"expectedCodehash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"actualCodehash\",\"type\":\"bytes32\"}],\"name\":\"LogTablesNotDeployed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"LossyConversionFromFloat\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"LossyConversionToFloat\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"MaximizeOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"NegativeFixedDecimalConversion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"PowNegativeBase\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"scientificMin\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"scientificMax\",\"type\":\"bytes32\"}],\"name\":\"ScientificMinNotLessThanMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"UnformatableExponent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"targetExponent\",\"type\":\"int256\"}],\"name\":\"WithTargetExponentOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"ZeroNegativePower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroStringStartPointer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FORMAT_DEFAULT_SCIENTIFIC_MAX\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FORMAT_DEFAULT_SCIENTIFIC_MIN\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"abs\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"add\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"ceil\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"div\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"e\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"eq\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"floor\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"scientific\",\"type\":\"bool\"}],\"name\":\"format\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"format\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"scientificMin\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"scientificMax\",\"type\":\"bytes32\"}],\"name\":\"format\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"frac\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"fromFixedDecimalLossless\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"fromFixedDecimalLossy\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"gt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"gte\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"integer\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"inv\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"isZero\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"log10\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"lt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"lte\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"max\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxNegativeValue\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPositiveValue\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"min\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minNegativeValue\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minPositiveValue\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"minus\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"mul\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"parse\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"pow\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"pow10\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"}],\"name\":\"sqrt\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"a\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"b\",\"type\":\"bytes32\"}],\"name\":\"sub\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"float\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"toFixedDecimalLossless\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"float\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"toFixedDecimalLossy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zero\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CoefficientOverflow(int256,int256)\":[{\"details\":\"Thrown when a coefficient overflows.\"}],\"DivisionByZero(int256,int256)\":[{\"details\":\"Thrown when dividing by zero.\",\"params\":{\"exponent\":\"The exponent of the numerator.\",\"signedCoefficient\":\"The signed coefficient of the numerator.\"}}],\"ExponentOverflow(int256,int256)\":[{\"details\":\"Thrown when an exponent overflows.\"}],\"ExponentUnderflow(int256,int256)\":[{\"details\":\"Thrown when an exponent underflows. Exponent underflow means the magnitude is smaller than any representable Float. Without this revert, arithmetic ops that compose to underflow (e.g. `mul` with two operands whose exponents sum below `int32.min`) would silently return `FLOAT_ZERO`, breaking downstream code that branches on `result == 0`.\"}],\"FixedDecimalOverflow(int256,int256,uint8)\":[{\"details\":\"Thrown when converting a Float to a fixed-decimal uint256 and the scaled value exceeds `uint256.max`. Returning a silent zero with `lossless=false` would decapitate the high bits of the value; reverting surfaces the overflow with the original inputs so callers can rescale or reject.\"}],\"Log10Negative(int256,int256)\":[{\"details\":\"Thrown when attempting to calculate the log of a negative number.\"}],\"Log10Zero()\":[{\"details\":\"Thrown when attempting to calculate the log of 0.\"}],\"LogTablesNotDeployed(address,bytes32,bytes32)\":[{\"details\":\"Thrown when constructing a `DecimalFloat` on a chain where the log tables data contract is not deployed at the expected address with the expected codehash. Without this check, transcendental functions (`pow10`/`log10`/`pow`/`sqrt`) would silently `extcodecopy` zero bytes and return garbage.\",\"params\":{\"actualCodehash\":\"The codehash currently at `tablesAddress` (zero if no contract is deployed there).\",\"expectedCodehash\":\"The codehash the deployed table contract is expected to have.\",\"tablesAddress\":\"The address `DecimalFloat` was compiled to read log tables from.\"}}],\"LossyConversionFromFloat(int256,int256)\":[{\"details\":\"Thrown when converting a float to some value when the conversion is lossy.\"}],\"LossyConversionToFloat(int256,int256)\":[{\"details\":\"Thrown when converting some value to a float when the conversion is lossy.\"}],\"MaximizeOverflow(int256,int256)\":[{\"details\":\"Thrown when a maximize overflows where it is not appropriate.\"}],\"MulDivOverflow(uint256,uint256,uint256)\":[{\"details\":\"Thrown when mulDiv internal to division overflows.\"}],\"NegativeFixedDecimalConversion(int256,int256)\":[{\"details\":\"Thrown when attempting to convert a negative number to an unsigned fixed-point number.\"}],\"PowNegativeBase(int256,int256)\":[{\"details\":\"Thrown when attempting to exponentiate a negative base.\"}],\"ScientificMinNotLessThanMax(bytes32,bytes32)\":[{\"details\":\"Thrown when scientificMin is not less than scientificMax in format.\",\"params\":{\"scientificMax\":\"The maximum threshold for scientific notation.\",\"scientificMin\":\"The minimum threshold for scientific notation.\"}}],\"UnformatableExponent(int256)\":[{\"details\":\"Thrown when the exponent cannot be formatted.\",\"params\":{\"exponent\":\"The exponent that cannot be formatted.\"}}],\"WithTargetExponentOverflow(int256,int256,int256)\":[{\"details\":\"Thrown when attempting to rescale a coefficient to a target exponent\"}],\"ZeroNegativePower(bytes32)\":[{\"details\":\"Thrown when attempting to exponentiate 0^b where b is negative.\"}]},\"kind\":\"dev\",\"methods\":{\"abs(bytes32)\":{\"params\":{\"a\":\"The float to get the absolute value of.\"},\"returns\":{\"_0\":\"The absolute value of the float.\"}},\"add(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to add.\",\"b\":\"The second float to add.\"},\"returns\":{\"_0\":\"The sum of the two floats.\"}},\"ceil(bytes32)\":{\"params\":{\"a\":\"The float to get the ceiling of.\"},\"returns\":{\"_0\":\"The ceiled float.\"}},\"div(bytes32,bytes32)\":{\"params\":{\"a\":\"The dividend (numerator).\",\"b\":\"The divisor (denominator).\"},\"returns\":{\"_0\":\"The quotient of the two floats.\"}},\"e()\":{\"returns\":{\"_0\":\"The constant value of Euler's number as a Float.\"}},\"eq(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the two floats are equal, false otherwise.\"}},\"floor(bytes32)\":{\"params\":{\"a\":\"The float to get the floor of.\"},\"returns\":{\"_0\":\"The floored float.\"}},\"format(bytes32)\":{\"params\":{\"a\":\"The float to format.\"},\"returns\":{\"_0\":\"The string representation of the float.\"}},\"format(bytes32,bool)\":{\"params\":{\"a\":\"The float to format.\",\"scientific\":\"Whether to format the float in scientific notation.\"},\"returns\":{\"_0\":\"The string representation of the float.\"}},\"format(bytes32,bytes32,bytes32)\":{\"params\":{\"a\":\"The float to format. The absolute value of `a` is used to determine if scientific notation is used, this allows negative numbers to be formatted consistently with their positive counterparts.\",\"scientificMax\":\"The largest number that won't be formatted in scientific notation.\",\"scientificMin\":\"The smallest number that won't be formatted in scientific notation.\"},\"returns\":{\"_0\":\"The string representation of the float.\"}},\"frac(bytes32)\":{\"params\":{\"a\":\"The float to get the fractional part of.\"},\"returns\":{\"_0\":\"The fractional part of the float.\"}},\"fromFixedDecimalLossless(uint256,uint8)\":{\"params\":{\"decimals\":\"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.\",\"value\":\"The fixed point decimal value to convert.\"},\"returns\":{\"_0\":\"float The Float struct containing the signed coefficient and exponent.\"}},\"fromFixedDecimalLossy(uint256,uint8)\":{\"params\":{\"decimals\":\"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.\",\"value\":\"The fixed point decimal value to convert.\"},\"returns\":{\"_0\":\"float The Float struct containing the signed coefficient and exponent.\",\"_1\":\"lossless True if the conversion was lossless, false otherwise.\"}},\"gt(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the first float is greater than the second, false otherwise.\"}},\"gte(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the first float is greater than or equal to the second, false otherwise.\"}},\"integer(bytes32)\":{\"params\":{\"a\":\"The float to get the integer part of.\"},\"returns\":{\"_0\":\"The integer part of the float.\"}},\"inv(bytes32)\":{\"params\":{\"a\":\"The float to invert.\"},\"returns\":{\"_0\":\"The inverted float.\"}},\"isZero(bytes32)\":{\"params\":{\"a\":\"The float to check.\"},\"returns\":{\"_0\":\"True if the float is zero, false otherwise.\"}},\"log10(bytes32)\":{\"params\":{\"a\":\"The float to take the logarithm of.\"},\"returns\":{\"_0\":\"The logarithm of the float.\"}},\"lt(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the first float is less than the second, false otherwise.\"}},\"lte(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"True if the first float is less than or equal to the second, false otherwise.\"}},\"max(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"The larger of the two floats.\"}},\"maxNegativeValue()\":{\"returns\":{\"_0\":\"The maximum negative value of a Float.\"}},\"maxPositiveValue()\":{\"returns\":{\"_0\":\"The maximum positive value of a Float.\"}},\"min(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to compare.\",\"b\":\"The second float to compare.\"},\"returns\":{\"_0\":\"The smaller of the two floats.\"}},\"minNegativeValue()\":{\"returns\":{\"_0\":\"The minimum negative value of a Float.\"}},\"minPositiveValue()\":{\"returns\":{\"_0\":\"The minimum positive value of a Float.\"}},\"minus(bytes32)\":{\"params\":{\"a\":\"The float to negate.\"},\"returns\":{\"_0\":\"The negated float.\"}},\"mul(bytes32,bytes32)\":{\"params\":{\"a\":\"The first float to multiply.\",\"b\":\"The second float to multiply.\"},\"returns\":{\"_0\":\"The product of the two floats.\"}},\"parse(string)\":{\"params\":{\"str\":\"The string to parse.\"},\"returns\":{\"_0\":\"errorSelector The selector of the error if parsing failed. `0` if parsing succeeded.\",\"_1\":\"parsed The parsed float. Caller MUST check `errorSelector` to determine if parsing succeeded.\"}},\"pow(bytes32,bytes32)\":{\"params\":{\"a\":\"The base float.\",\"b\":\"The exponent float.\"},\"returns\":{\"_0\":\"The result of raising the base float to the power of the exponent\"}},\"pow10(bytes32)\":{\"params\":{\"a\":\"The exponent to raise 10 to.\"},\"returns\":{\"_0\":\"The result of 10^a.\"}},\"sqrt(bytes32)\":{\"params\":{\"a\":\"The float to take the square root of.\"},\"returns\":{\"_0\":\"The square root of the float.\"}},\"sub(bytes32,bytes32)\":{\"params\":{\"a\":\"The float to subtract from.\",\"b\":\"The float to subtract.\"},\"returns\":{\"_0\":\"The difference of the two floats.\"}},\"toFixedDecimalLossless(bytes32,uint8)\":{\"params\":{\"decimals\":\"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.\",\"float\":\"The Float struct to convert.\"},\"returns\":{\"_0\":\"The fixed point decimal value as a uint256.\"}},\"toFixedDecimalLossy(bytes32,uint8)\":{\"params\":{\"decimals\":\"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.\",\"float\":\"The Float struct to convert.\"},\"returns\":{\"_0\":\"value The fixed point decimal value as a uint256.\",\"_1\":\"lossless True if the conversion was lossless, false otherwise.\"}},\"zero()\":{\"returns\":{\"_0\":\"The zero value of a Float in its maximized representation.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ZeroStringStartPointer()\":[{\"notice\":\"The decimal string start pointer is zero.\"}]},\"kind\":\"user\",\"methods\":{\"FORMAT_DEFAULT_SCIENTIFIC_MAX()\":{\"notice\":\"The default maximum value for scientific formatting. 1e9\"},\"FORMAT_DEFAULT_SCIENTIFIC_MIN()\":{\"notice\":\"The default minimum value for scientific formatting. 1e-4\"},\"abs(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.abs` for offchain use.\"},\"add(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.add` for offchain use.\"},\"ceil(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.ceil` for offchain use.\"},\"div(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.div` for offchain use.\"},\"e()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_E` for offchain use.\"},\"eq(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.eq` for offchain use.\"},\"floor(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.floor` for offchain use.\"},\"format(bytes32)\":{\"notice\":\"Exposes `format(Float, Float, Float)` for offchain use. Provides default scientific formatting.\"},\"format(bytes32,bool)\":{\"notice\":\"Exposes `LibFormatDecimalFloat.toDecimalString` for offchain use. provides raw bool interface for custom scientific formatting.\"},\"format(bytes32,bytes32,bytes32)\":{\"notice\":\"Exposes `LibFormatDecimalFloat.toDecimalString` for offchain use.\"},\"frac(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.frac` for offchain use.\"},\"fromFixedDecimalLossless(uint256,uint8)\":{\"notice\":\"Exposes `LibDecimalFloat.fromFixedDecimalLosslessPacked` for offchain use.\"},\"fromFixedDecimalLossy(uint256,uint8)\":{\"notice\":\"Exposes `LibDecimalFloat.fromFixedDecimalLossyPacked` for offchain use.\"},\"gt(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.gt` for offchain use.\"},\"gte(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.gte` for offchain use.\"},\"integer(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.integer` for offchain use.\"},\"inv(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.inv` for offchain use.\"},\"isZero(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.isZero` for offchain use.\"},\"log10(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.log10` for offchain use.\"},\"lt(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.lt` for offchain use.\"},\"lte(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.lte` for offchain use.\"},\"max(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.max` for offchain use.\"},\"maxNegativeValue()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_MAX_NEGATIVE_VALUE` for offchain use.\"},\"maxPositiveValue()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_MAX_POSITIVE_VALUE` for offchain use.\"},\"min(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.min` for offchain use.\"},\"minNegativeValue()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_MIN_NEGATIVE_VALUE` for offchain use.\"},\"minPositiveValue()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_MIN_POSITIVE_VALUE` for offchain use.\"},\"minus(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.minus` for offchain use.\"},\"mul(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.mul` for offchain use.\"},\"parse(string)\":{\"notice\":\"Exposes `LibParseDecimalFloat.parseDecimalFloat` for offchain use.\"},\"pow(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.pow` for offchain use.\"},\"pow10(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.pow10` for offchain use.\"},\"sqrt(bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.sqrt` for offchain use.\"},\"sub(bytes32,bytes32)\":{\"notice\":\"Exposes `LibDecimalFloat.sub` for offchain use.\"},\"toFixedDecimalLossless(bytes32,uint8)\":{\"notice\":\"Exposes `LibDecimalFloat.toFixedDecimalLossless` for offchain use.\"},\"toFixedDecimalLossy(bytes32,uint8)\":{\"notice\":\"Exposes `LibDecimalFloat.toFixedDecimalLossy` for offchain use.\"},\"zero()\":{\"notice\":\"Exposes `LibDecimalFloat.FLOAT_ZERO` for offchain use.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"dependencies/rain-math-float-0.1.1/src/concrete/DecimalFloat.sol\":\"DecimalFloat\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/\",\":bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/\",\":caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/\",\":codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/\",\":forge-std-1.16.1/=dependencies/forge-std-1.16.1/\",\":mut/=dependencies/rain-string-0.2.0/src/lib/mut/\",\":ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/\",\":parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/\",\":rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/\",\":rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/\",\":rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/\",\":rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/\",\":rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/\",\":rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/\",\":rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/\",\":rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/\",\":rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/\",\":rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/\",\":rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/\",\":rain-string-0.2.0/=dependencies/rain-string-0.2.0/\",\":rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/\",\":raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/\",\":rainlang-0.1.2/=dependencies/rainlang-0.1.2/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.6.1/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"dependencies/rain-math-float-0.1.1/src/concrete/DecimalFloat.sol\":{\"keccak256\":\"0x6326a6b5ffef0708b84712c0b891dfc7f2d88c38191628da1f40933951f2683b\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://ad99eda6cc266d5d160439700d3c89a487e8e31d51538f2ad83435a1aac9f3ae\",\"dweb:/ipfs/QmarsuZkgqG7jT9mYBh1VKNvjD5ZsVtJJTiRGbfMQAY669\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrDecimalFloat.sol\":{\"keccak256\":\"0x46e95357504ffe0e2cdf7a7d962b509ebdf6f2c64e1c8b1accc608bdd8288971\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://65ec73f625fce3f9cf150472735c57e7f6a2260b53598c149a0a81ec677b9dd2\",\"dweb:/ipfs/QmZXmzqDkjNVTMNW8ZFPGLm1UnVfPnFN5ggpDSHPa9UjvQ\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrFormat.sol\":{\"keccak256\":\"0xc760cb6018291753e7408d55d12d5e66c116f9750dc241bbc201f3b46ae33aa7\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://cbc81bb7c26c8503926b579f978902bcc3227839bee04bd3500cc924d142d28e\",\"dweb:/ipfs/QmXqMuqBCpckD1EnsBjweyLdRZxpvC2xSP9FWBZFh2vztR\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrParse.sol\":{\"keccak256\":\"0x7fc9fe7421d78306d252d2853fd1be943d9cbd12ff7a9c8c3f286a8164bfe357\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://7b4c434d01b53788968d185683d9633afa26d95396b1e91337a53ccaab0d44ab\",\"dweb:/ipfs/QmQHmVjR37wwrCskiQviwkg7WkeBpr9uPddjuDxqzANXeV\"]},\"dependencies/rain-math-float-0.1.1/src/generated/LogTables.pointers.sol\":{\"keccak256\":\"0x2325d92e3e248350a79f163fcb8738056ae4240b6a77f759ff5fcbf7b381f5ae\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://9a52674114518573de7d184094b266bc2b5208953086f8ec35a494f048deefbb\",\"dweb:/ipfs/QmTjuj1R9k4pFMBVpX6RcWG87Rdh9pRTZVHYo93SzBfmsH\"]},\"dependencies/rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol\":{\"keccak256\":\"0x3f0f9e9b04e6fd4ca2a322da490a236eb91a0d22411a51ed1d1e606a72fcb1eb\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://d99f8025391108725dc490efccb834c25486d59adcd8c1450c62db89f08ed203\",\"dweb:/ipfs/QmcY4JXoK4qfuUWjaDDyWkEdyzZTFN5EjokutSMDidqHjU\"]},\"dependencies/rain-math-float-0.1.1/src/lib/deploy/LibDecimalFloatDeploy.sol\":{\"keccak256\":\"0x57ac4707fa4eb4d5e69583e81a702474720eeacc855c1b014afd36d4df1e346a\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://3af339a6dccbc888a65cd17933fc60fa6392b2405a566f3c52e9c8d63177fdb5\",\"dweb:/ipfs/QmYYcFr52kesLrUGit1BQkXeavFCp2oQbEGqW5MSZJmMhM\"]},\"dependencies/rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol\":{\"keccak256\":\"0x5aac6382e7f7040e68600333c1b00b0aedb3edb6bced84b63783f6d88fe0b4f0\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://e96d30e34e1fa2cc4eb574ded30c0f6f93929dcc19cb571f555ca8c5ac32eaa7\",\"dweb:/ipfs/QmRRtk84AqEdQrRXfeTzVUAbAktJTZ92iTLqjocQV4PDx7\"]},\"dependencies/rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol\":{\"keccak256\":\"0x47d0eeb542875548689465407162a19e4a21fb4591af5bb48d5758c0d1b93634\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://631efb796ff17f277804f8a32df7d28630c2ae5300e7d74c37aa8ed1f86b5092\",\"dweb:/ipfs/QmSfmMGQyxKYxu8UrWDEtuCggQ9HtFJy5cbMsYLPZbcTZ7\"]},\"dependencies/rain-math-float-0.1.1/src/lib/parse/LibParseDecimalFloat.sol\":{\"keccak256\":\"0x703d2d37d8a14639a3eb2dcd61601b36552027e16b4e8414befe51f2d0b9ed38\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://53fa45503e115a322a701a1289c5b5fcbe68090c83e0635af77d275d123f09f0\",\"dweb:/ipfs/QmTBtz8uPLYXrTue9SmHBVdgjpFJYUU41Z48PAgu1nXafn\"]},\"dependencies/rain-math-float-0.1.1/src/lib/table/LibLogTable.sol\":{\"keccak256\":\"0xccd2dea54cfb708c01e7e8e88c089742bbab18f5783be4632311fb4923d44c88\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://f45fb78c16b5d66d56ba0e78acdb0ca5d315eb05efa2cd7a81e191aabe7aec52\",\"dweb:/ipfs/QmQJ3TFFxTMu4HZ4qnjgmdmSNhGZLQRdCnSqAipEF1up1f\"]},\"dependencies/rain-string-0.2.0/src/error/ErrParse.sol\":{\"keccak256\":\"0x7a69236ad67e39c20f6ade7973ec551c9a5bb5db4671c8afa95b80f35a996497\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4731c6ea05b4e820814380dbbd6dac14f5778a1e9194b8992148cf97a99ffbb2\",\"dweb:/ipfs/QmUMnKNt2zQ42fjS4fpLqodXytiffVFzaKupAm8rNsrYVo\"]},\"dependencies/rain-string-0.2.0/src/lib/parse/LibParseCMask.sol\":{\"keccak256\":\"0x91e798a6f71aafbd4743720eaa38a7f16f74c6c0ab2992e7e4982979e9df539a\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4782e62e0e5a5fbc7d6c757dcc90347d7ad064f25372a6c471ffa968e12b91d7\",\"dweb:/ipfs/QmPohMsVTjm19gxYwxgAsTKJQRjkK2J1Pyah63nCtYBBnt\"]},\"dependencies/rain-string-0.2.0/src/lib/parse/LibParseChar.sol\":{\"keccak256\":\"0x66c401d784e9461f709116441de3707685e08438cd83553db28fe8caf0e97238\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://e6027d0f9d558953686f6eb78ca0b2f2e7d9d38e0be6d1435ffaaa4b90919593\",\"dweb:/ipfs/QmQXDMTzmJrst2a4kHkcfjSsEdnPc4ikQs7VfGbCfe9QCc\"]},\"dependencies/rain-string-0.2.0/src/lib/parse/LibParseDecimal.sol\":{\"keccak256\":\"0x72ccc4d7e0a1245897511e1efc15ddc80d423a8eb956249be7940a8e8f4e99fe\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://3ca57acd6a7cbe16f2c03aa5a6e81ec7af1ad44078924358578560a32aead7c0\",\"dweb:/ipfs/QmNukyUMS4JrzNHAYcpLbtYsD5CwYPEjfAaADv6qMZmqs6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"CoefficientOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"DivisionByZero"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"ExponentOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"ExponentUnderflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"type":"error","name":"FixedDecimalOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"Log10Negative"},{"inputs":[],"type":"error","name":"Log10Zero"},{"inputs":[{"internalType":"address","name":"tablesAddress","type":"address"},{"internalType":"bytes32","name":"expectedCodehash","type":"bytes32"},{"internalType":"bytes32","name":"actualCodehash","type":"bytes32"}],"type":"error","name":"LogTablesNotDeployed"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"LossyConversionFromFloat"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"LossyConversionToFloat"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"MaximizeOverflow"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"type":"error","name":"MulDivOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"NegativeFixedDecimalConversion"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"PowNegativeBase"},{"inputs":[{"internalType":"Float","name":"scientificMin","type":"bytes32"},{"internalType":"Float","name":"scientificMax","type":"bytes32"}],"type":"error","name":"ScientificMinNotLessThanMax"},{"inputs":[{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"UnformatableExponent"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"},{"internalType":"int256","name":"targetExponent","type":"int256"}],"type":"error","name":"WithTargetExponentOverflow"},{"inputs":[{"internalType":"Float","name":"b","type":"bytes32"}],"type":"error","name":"ZeroNegativePower"},{"inputs":[],"type":"error","name":"ZeroStringStartPointer"},{"inputs":[],"stateMutability":"view","type":"function","name":"FORMAT_DEFAULT_SCIENTIFIC_MAX","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FORMAT_DEFAULT_SCIENTIFIC_MIN","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"abs","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"add","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"ceil","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"div","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"e","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"eq","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"floor","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"bool","name":"scientific","type":"bool"}],"stateMutability":"pure","type":"function","name":"format","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"format","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"scientificMin","type":"bytes32"},{"internalType":"Float","name":"scientificMax","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"format","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"frac","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"pure","type":"function","name":"fromFixedDecimalLossless","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"pure","type":"function","name":"fromFixedDecimalLossy","outputs":[{"internalType":"Float","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"gt","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"gte","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"integer","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"inv","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"isZero","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"view","type":"function","name":"log10","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"lt","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"lte","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"max","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maxNegativeValue","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maxPositiveValue","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"min","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minNegativeValue","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minPositiveValue","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"minus","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"mul","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"stateMutability":"pure","type":"function","name":"parse","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pow","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pow10","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"}],"stateMutability":"view","type":"function","name":"sqrt","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"a","type":"bytes32"},{"internalType":"Float","name":"b","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sub","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"Float","name":"float","type":"bytes32"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"pure","type":"function","name":"toFixedDecimalLossless","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"Float","name":"float","type":"bytes32"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"pure","type":"function","name":"toFixedDecimalLossy","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"zero","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"abs(bytes32)":{"params":{"a":"The float to get the absolute value of."},"returns":{"_0":"The absolute value of the float."}},"add(bytes32,bytes32)":{"params":{"a":"The first float to add.","b":"The second float to add."},"returns":{"_0":"The sum of the two floats."}},"ceil(bytes32)":{"params":{"a":"The float to get the ceiling of."},"returns":{"_0":"The ceiled float."}},"div(bytes32,bytes32)":{"params":{"a":"The dividend (numerator).","b":"The divisor (denominator)."},"returns":{"_0":"The quotient of the two floats."}},"e()":{"returns":{"_0":"The constant value of Euler's number as a Float."}},"eq(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the two floats are equal, false otherwise."}},"floor(bytes32)":{"params":{"a":"The float to get the floor of."},"returns":{"_0":"The floored float."}},"format(bytes32)":{"params":{"a":"The float to format."},"returns":{"_0":"The string representation of the float."}},"format(bytes32,bool)":{"params":{"a":"The float to format.","scientific":"Whether to format the float in scientific notation."},"returns":{"_0":"The string representation of the float."}},"format(bytes32,bytes32,bytes32)":{"params":{"a":"The float to format. The absolute value of `a` is used to determine if scientific notation is used, this allows negative numbers to be formatted consistently with their positive counterparts.","scientificMax":"The largest number that won't be formatted in scientific notation.","scientificMin":"The smallest number that won't be formatted in scientific notation."},"returns":{"_0":"The string representation of the float."}},"frac(bytes32)":{"params":{"a":"The float to get the fractional part of."},"returns":{"_0":"The fractional part of the float."}},"fromFixedDecimalLossless(uint256,uint8)":{"params":{"decimals":"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.","value":"The fixed point decimal value to convert."},"returns":{"_0":"float The Float struct containing the signed coefficient and exponent."}},"fromFixedDecimalLossy(uint256,uint8)":{"params":{"decimals":"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.","value":"The fixed point decimal value to convert."},"returns":{"_0":"float The Float struct containing the signed coefficient and exponent.","_1":"lossless True if the conversion was lossless, false otherwise."}},"gt(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the first float is greater than the second, false otherwise."}},"gte(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the first float is greater than or equal to the second, false otherwise."}},"integer(bytes32)":{"params":{"a":"The float to get the integer part of."},"returns":{"_0":"The integer part of the float."}},"inv(bytes32)":{"params":{"a":"The float to invert."},"returns":{"_0":"The inverted float."}},"isZero(bytes32)":{"params":{"a":"The float to check."},"returns":{"_0":"True if the float is zero, false otherwise."}},"log10(bytes32)":{"params":{"a":"The float to take the logarithm of."},"returns":{"_0":"The logarithm of the float."}},"lt(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the first float is less than the second, false otherwise."}},"lte(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"True if the first float is less than or equal to the second, false otherwise."}},"max(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"The larger of the two floats."}},"maxNegativeValue()":{"returns":{"_0":"The maximum negative value of a Float."}},"maxPositiveValue()":{"returns":{"_0":"The maximum positive value of a Float."}},"min(bytes32,bytes32)":{"params":{"a":"The first float to compare.","b":"The second float to compare."},"returns":{"_0":"The smaller of the two floats."}},"minNegativeValue()":{"returns":{"_0":"The minimum negative value of a Float."}},"minPositiveValue()":{"returns":{"_0":"The minimum positive value of a Float."}},"minus(bytes32)":{"params":{"a":"The float to negate."},"returns":{"_0":"The negated float."}},"mul(bytes32,bytes32)":{"params":{"a":"The first float to multiply.","b":"The second float to multiply."},"returns":{"_0":"The product of the two floats."}},"parse(string)":{"params":{"str":"The string to parse."},"returns":{"_0":"errorSelector The selector of the error if parsing failed. `0` if parsing succeeded.","_1":"parsed The parsed float. Caller MUST check `errorSelector` to determine if parsing succeeded."}},"pow(bytes32,bytes32)":{"params":{"a":"The base float.","b":"The exponent float."},"returns":{"_0":"The result of raising the base float to the power of the exponent"}},"pow10(bytes32)":{"params":{"a":"The exponent to raise 10 to."},"returns":{"_0":"The result of 10^a."}},"sqrt(bytes32)":{"params":{"a":"The float to take the square root of."},"returns":{"_0":"The square root of the float."}},"sub(bytes32,bytes32)":{"params":{"a":"The float to subtract from.","b":"The float to subtract."},"returns":{"_0":"The difference of the two floats."}},"toFixedDecimalLossless(bytes32,uint8)":{"params":{"decimals":"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.","float":"The Float struct to convert."},"returns":{"_0":"The fixed point decimal value as a uint256."}},"toFixedDecimalLossy(bytes32,uint8)":{"params":{"decimals":"The number of decimals in the fixed point representation. e.g. If 1e18 represents 1 this would be 18 decimals.","float":"The Float struct to convert."},"returns":{"_0":"value The fixed point decimal value as a uint256.","_1":"lossless True if the conversion was lossless, false otherwise."}},"zero()":{"returns":{"_0":"The zero value of a Float in its maximized representation."}}},"version":1},"userdoc":{"kind":"user","methods":{"FORMAT_DEFAULT_SCIENTIFIC_MAX()":{"notice":"The default maximum value for scientific formatting. 1e9"},"FORMAT_DEFAULT_SCIENTIFIC_MIN()":{"notice":"The default minimum value for scientific formatting. 1e-4"},"abs(bytes32)":{"notice":"Exposes `LibDecimalFloat.abs` for offchain use."},"add(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.add` for offchain use."},"ceil(bytes32)":{"notice":"Exposes `LibDecimalFloat.ceil` for offchain use."},"div(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.div` for offchain use."},"e()":{"notice":"Exposes `LibDecimalFloat.FLOAT_E` for offchain use."},"eq(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.eq` for offchain use."},"floor(bytes32)":{"notice":"Exposes `LibDecimalFloat.floor` for offchain use."},"format(bytes32)":{"notice":"Exposes `format(Float, Float, Float)` for offchain use. Provides default scientific formatting."},"format(bytes32,bool)":{"notice":"Exposes `LibFormatDecimalFloat.toDecimalString` for offchain use. provides raw bool interface for custom scientific formatting."},"format(bytes32,bytes32,bytes32)":{"notice":"Exposes `LibFormatDecimalFloat.toDecimalString` for offchain use."},"frac(bytes32)":{"notice":"Exposes `LibDecimalFloat.frac` for offchain use."},"fromFixedDecimalLossless(uint256,uint8)":{"notice":"Exposes `LibDecimalFloat.fromFixedDecimalLosslessPacked` for offchain use."},"fromFixedDecimalLossy(uint256,uint8)":{"notice":"Exposes `LibDecimalFloat.fromFixedDecimalLossyPacked` for offchain use."},"gt(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.gt` for offchain use."},"gte(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.gte` for offchain use."},"integer(bytes32)":{"notice":"Exposes `LibDecimalFloat.integer` for offchain use."},"inv(bytes32)":{"notice":"Exposes `LibDecimalFloat.inv` for offchain use."},"isZero(bytes32)":{"notice":"Exposes `LibDecimalFloat.isZero` for offchain use."},"log10(bytes32)":{"notice":"Exposes `LibDecimalFloat.log10` for offchain use."},"lt(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.lt` for offchain use."},"lte(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.lte` for offchain use."},"max(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.max` for offchain use."},"maxNegativeValue()":{"notice":"Exposes `LibDecimalFloat.FLOAT_MAX_NEGATIVE_VALUE` for offchain use."},"maxPositiveValue()":{"notice":"Exposes `LibDecimalFloat.FLOAT_MAX_POSITIVE_VALUE` for offchain use."},"min(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.min` for offchain use."},"minNegativeValue()":{"notice":"Exposes `LibDecimalFloat.FLOAT_MIN_NEGATIVE_VALUE` for offchain use."},"minPositiveValue()":{"notice":"Exposes `LibDecimalFloat.FLOAT_MIN_POSITIVE_VALUE` for offchain use."},"minus(bytes32)":{"notice":"Exposes `LibDecimalFloat.minus` for offchain use."},"mul(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.mul` for offchain use."},"parse(string)":{"notice":"Exposes `LibParseDecimalFloat.parseDecimalFloat` for offchain use."},"pow(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.pow` for offchain use."},"pow10(bytes32)":{"notice":"Exposes `LibDecimalFloat.pow10` for offchain use."},"sqrt(bytes32)":{"notice":"Exposes `LibDecimalFloat.sqrt` for offchain use."},"sub(bytes32,bytes32)":{"notice":"Exposes `LibDecimalFloat.sub` for offchain use."},"toFixedDecimalLossless(bytes32,uint8)":{"notice":"Exposes `LibDecimalFloat.toFixedDecimalLossless` for offchain use."},"toFixedDecimalLossy(bytes32,uint8)":{"notice":"Exposes `LibDecimalFloat.toFixedDecimalLossy` for offchain use."},"zero()":{"notice":"Exposes `LibDecimalFloat.FLOAT_ZERO` for offchain use."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/","bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/","caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/","codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/","forge-std-1.16.1/=dependencies/forge-std-1.16.1/","mut/=dependencies/rain-string-0.2.0/src/lib/mut/","ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/","parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/","rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/","rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/","rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/","rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/","rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/","rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/","rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/","rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/","rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/","rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/","rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/","rain-string-0.2.0/=dependencies/rain-string-0.2.0/","rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/","raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/","rainlang-0.1.2/=dependencies/rainlang-0.1.2/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"dependencies/rain-math-float-0.1.1/src/concrete/DecimalFloat.sol":"DecimalFloat"},"evmVersion":"cancun","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.6.1/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"dependencies/rain-math-float-0.1.1/src/concrete/DecimalFloat.sol":{"keccak256":"0x6326a6b5ffef0708b84712c0b891dfc7f2d88c38191628da1f40933951f2683b","urls":["bzz-raw://ad99eda6cc266d5d160439700d3c89a487e8e31d51538f2ad83435a1aac9f3ae","dweb:/ipfs/QmarsuZkgqG7jT9mYBh1VKNvjD5ZsVtJJTiRGbfMQAY669"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrDecimalFloat.sol":{"keccak256":"0x46e95357504ffe0e2cdf7a7d962b509ebdf6f2c64e1c8b1accc608bdd8288971","urls":["bzz-raw://65ec73f625fce3f9cf150472735c57e7f6a2260b53598c149a0a81ec677b9dd2","dweb:/ipfs/QmZXmzqDkjNVTMNW8ZFPGLm1UnVfPnFN5ggpDSHPa9UjvQ"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrFormat.sol":{"keccak256":"0xc760cb6018291753e7408d55d12d5e66c116f9750dc241bbc201f3b46ae33aa7","urls":["bzz-raw://cbc81bb7c26c8503926b579f978902bcc3227839bee04bd3500cc924d142d28e","dweb:/ipfs/QmXqMuqBCpckD1EnsBjweyLdRZxpvC2xSP9FWBZFh2vztR"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrParse.sol":{"keccak256":"0x7fc9fe7421d78306d252d2853fd1be943d9cbd12ff7a9c8c3f286a8164bfe357","urls":["bzz-raw://7b4c434d01b53788968d185683d9633afa26d95396b1e91337a53ccaab0d44ab","dweb:/ipfs/QmQHmVjR37wwrCskiQviwkg7WkeBpr9uPddjuDxqzANXeV"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/generated/LogTables.pointers.sol":{"keccak256":"0x2325d92e3e248350a79f163fcb8738056ae4240b6a77f759ff5fcbf7b381f5ae","urls":["bzz-raw://9a52674114518573de7d184094b266bc2b5208953086f8ec35a494f048deefbb","dweb:/ipfs/QmTjuj1R9k4pFMBVpX6RcWG87Rdh9pRTZVHYo93SzBfmsH"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol":{"keccak256":"0x3f0f9e9b04e6fd4ca2a322da490a236eb91a0d22411a51ed1d1e606a72fcb1eb","urls":["bzz-raw://d99f8025391108725dc490efccb834c25486d59adcd8c1450c62db89f08ed203","dweb:/ipfs/QmcY4JXoK4qfuUWjaDDyWkEdyzZTFN5EjokutSMDidqHjU"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/deploy/LibDecimalFloatDeploy.sol":{"keccak256":"0x57ac4707fa4eb4d5e69583e81a702474720eeacc855c1b014afd36d4df1e346a","urls":["bzz-raw://3af339a6dccbc888a65cd17933fc60fa6392b2405a566f3c52e9c8d63177fdb5","dweb:/ipfs/QmYYcFr52kesLrUGit1BQkXeavFCp2oQbEGqW5MSZJmMhM"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol":{"keccak256":"0x5aac6382e7f7040e68600333c1b00b0aedb3edb6bced84b63783f6d88fe0b4f0","urls":["bzz-raw://e96d30e34e1fa2cc4eb574ded30c0f6f93929dcc19cb571f555ca8c5ac32eaa7","dweb:/ipfs/QmRRtk84AqEdQrRXfeTzVUAbAktJTZ92iTLqjocQV4PDx7"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol":{"keccak256":"0x47d0eeb542875548689465407162a19e4a21fb4591af5bb48d5758c0d1b93634","urls":["bzz-raw://631efb796ff17f277804f8a32df7d28630c2ae5300e7d74c37aa8ed1f86b5092","dweb:/ipfs/QmSfmMGQyxKYxu8UrWDEtuCggQ9HtFJy5cbMsYLPZbcTZ7"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/parse/LibParseDecimalFloat.sol":{"keccak256":"0x703d2d37d8a14639a3eb2dcd61601b36552027e16b4e8414befe51f2d0b9ed38","urls":["bzz-raw://53fa45503e115a322a701a1289c5b5fcbe68090c83e0635af77d275d123f09f0","dweb:/ipfs/QmTBtz8uPLYXrTue9SmHBVdgjpFJYUU41Z48PAgu1nXafn"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/table/LibLogTable.sol":{"keccak256":"0xccd2dea54cfb708c01e7e8e88c089742bbab18f5783be4632311fb4923d44c88","urls":["bzz-raw://f45fb78c16b5d66d56ba0e78acdb0ca5d315eb05efa2cd7a81e191aabe7aec52","dweb:/ipfs/QmQJ3TFFxTMu4HZ4qnjgmdmSNhGZLQRdCnSqAipEF1up1f"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-string-0.2.0/src/error/ErrParse.sol":{"keccak256":"0x7a69236ad67e39c20f6ade7973ec551c9a5bb5db4671c8afa95b80f35a996497","urls":["bzz-raw://4731c6ea05b4e820814380dbbd6dac14f5778a1e9194b8992148cf97a99ffbb2","dweb:/ipfs/QmUMnKNt2zQ42fjS4fpLqodXytiffVFzaKupAm8rNsrYVo"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-string-0.2.0/src/lib/parse/LibParseCMask.sol":{"keccak256":"0x91e798a6f71aafbd4743720eaa38a7f16f74c6c0ab2992e7e4982979e9df539a","urls":["bzz-raw://4782e62e0e5a5fbc7d6c757dcc90347d7ad064f25372a6c471ffa968e12b91d7","dweb:/ipfs/QmPohMsVTjm19gxYwxgAsTKJQRjkK2J1Pyah63nCtYBBnt"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-string-0.2.0/src/lib/parse/LibParseChar.sol":{"keccak256":"0x66c401d784e9461f709116441de3707685e08438cd83553db28fe8caf0e97238","urls":["bzz-raw://e6027d0f9d558953686f6eb78ca0b2f2e7d9d38e0be6d1435ffaaa4b90919593","dweb:/ipfs/QmQXDMTzmJrst2a4kHkcfjSsEdnPc4ikQs7VfGbCfe9QCc"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-string-0.2.0/src/lib/parse/LibParseDecimal.sol":{"keccak256":"0x72ccc4d7e0a1245897511e1efc15ddc80d423a8eb956249be7940a8e8f4e99fe","urls":["bzz-raw://3ca57acd6a7cbe16f2c03aa5a6e81ec7af1ad44078924358578560a32aead7c0","dweb:/ipfs/QmNukyUMS4JrzNHAYcpLbtYsD5CwYPEjfAaADv6qMZmqs6"],"license":"LicenseRef-DCL-1.0"}},"version":1},"id":86} \ No newline at end of file +{ + "abi": [ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "FORMAT_DEFAULT_SCIENTIFIC_MAX", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "FORMAT_DEFAULT_SCIENTIFIC_MIN", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "abs", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "add", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "ceil", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "div", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "e", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "eq", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "floor", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "format", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "scientific", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "format", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "format", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "scientificMin", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "scientificMax", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "frac", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "fromFixedDecimalLossless", + "inputs": [ + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "fromFixedDecimalLossy", + "inputs": [ + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "gt", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "gte", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "integer", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "inv", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "isZero", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "log10", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "lt", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "lte", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "max", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "maxNegativeValue", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "maxPositiveValue", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "min", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "minNegativeValue", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "minPositiveValue", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "minus", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "mul", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "parse", + "inputs": [ + { + "name": "str", + "type": "string", + "internalType": "string" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + }, + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "pow", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pow10", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "sqrt", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "sub", + "inputs": [ + { + "name": "a", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "toFixedDecimalLossless", + "inputs": [ + { + "name": "float", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "toFixedDecimalLossy", + "inputs": [ + { + "name": "float", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "zero", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "pure" + }, + { + "type": "error", + "name": "CoefficientOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "DivisionByZero", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "ExponentOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "ExponentUnderflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "FixedDecimalOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + } + ] + }, + { + "type": "error", + "name": "Log10Negative", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "Log10Zero", + "inputs": [] + }, + { + "type": "error", + "name": "LogTablesNotDeployed", + "inputs": [ + { + "name": "tablesAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "expectedCodehash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "actualCodehash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "LossyConversionFromFloat", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "LossyConversionToFloat", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "MaximizeOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "MulDivOverflow", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "y", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "denominator", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "NegativeFixedDecimalConversion", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "PowNegativeBase", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "ScientificMinNotLessThanMax", + "inputs": [ + { + "name": "scientificMin", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "scientificMax", + "type": "bytes32", + "internalType": "Float" + } + ] + }, + { + "type": "error", + "name": "UnformatableExponent", + "inputs": [ + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "WithTargetExponentOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + }, + { + "name": "targetExponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "ZeroNegativePower", + "inputs": [ + { + "name": "b", + "type": "bytes32", + "internalType": "Float" + } + ] + }, + { + "type": "error", + "name": "ZeroStringStartPointer", + "inputs": [] + } + ] +} diff --git a/subgraph/abis/ERC20.json b/subgraph/abis/ERC20.json index 92cffbcf44..b65fe63720 100644 --- a/subgraph/abis/ERC20.json +++ b/subgraph/abis/ERC20.json @@ -1 +1,312 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/\",\":bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/\",\":caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/\",\":codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/\",\":forge-std-1.16.1/=dependencies/forge-std-1.16.1/\",\":mut/=dependencies/rain-string-0.2.0/src/lib/mut/\",\":ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/\",\":parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/\",\":rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/\",\":rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/\",\":rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/\",\":rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/\",\":rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/\",\":rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/\",\":rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/\",\":rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/\",\":rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/\",\":rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/\",\":rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/\",\":rain-string-0.2.0/=dependencies/rain-string-0.2.0/\",\":rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/\",\":raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/\",\":rainlang-0.1.2/=dependencies/rainlang-0.1.2/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/","bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/","caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/","codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/","forge-std-1.16.1/=dependencies/forge-std-1.16.1/","mut/=dependencies/rain-string-0.2.0/src/lib/mut/","ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/","parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/","rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/","rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/","rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/","rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/","rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/","rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/","rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/","rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/","rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/","rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/","rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/","rain-string-0.2.0/=dependencies/rain-string-0.2.0/","rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/","raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/","rainlang-0.1.2/=dependencies/rainlang-0.1.2/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"cancun","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.6.1/interfaces/draft-IERC6093.sol":{"keccak256":"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998","urls":["bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c","dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol":{"keccak256":"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29","urls":["bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195","dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":7} \ No newline at end of file +{ + "abi": [ + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "ERC20InsufficientAllowance", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "allowance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ERC20InsufficientBalance", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidApprover", + "inputs": [ + { + "name": "approver", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidReceiver", + "inputs": [ + { + "name": "receiver", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidSender", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidSpender", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ] + } + ] +} diff --git a/subgraph/abis/Raindex.json b/subgraph/abis/Raindex.json index 57a06c1a14..fa86240bc2 100644 --- a/subgraph/abis/Raindex.json +++ b/subgraph/abis/Raindex.json @@ -1 +1,2375 @@ -{"abi":[{"type":"function","name":"addOrder4","inputs":[{"name":"orderConfig","type":"tuple","internalType":"struct OrderConfigV4","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"},{"name":"secret","type":"bytes32","internalType":"bytes32"},{"name":"meta","type":"bytes","internalType":"bytes"}]},{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"clear3","inputs":[{"name":"aliceOrder","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"bobOrder","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"clearConfig","type":"tuple","internalType":"struct ClearConfigV2","components":[{"name":"aliceInputIOIndex","type":"uint256","internalType":"uint256"},{"name":"aliceOutputIOIndex","type":"uint256","internalType":"uint256"},{"name":"bobInputIOIndex","type":"uint256","internalType":"uint256"},{"name":"bobOutputIOIndex","type":"uint256","internalType":"uint256"},{"name":"aliceBountyVaultId","type":"bytes32","internalType":"bytes32"},{"name":"bobBountyVaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"aliceSignedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"bobSignedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit4","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"},{"name":"depositAmount","type":"bytes32","internalType":"Float"},{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"entask2","inputs":[{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"flashFee","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"maxFlashLoan","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"orderExists","inputs":[{"name":"orderHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"quote2","inputs":[{"name":"quoteConfig","type":"tuple","internalType":"struct QuoteV2","components":[{"name":"order","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"inputIOIndex","type":"uint256","internalType":"uint256"},{"name":"outputIOIndex","type":"uint256","internalType":"uint256"},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"bytes32","internalType":"Float"},{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"removeOrder3","inputs":[{"name":"order","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[{"name":"stateChanged","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"takeOrders4","inputs":[{"name":"config","type":"tuple","internalType":"struct TakeOrdersConfigV5","components":[{"name":"minimumIO","type":"bytes32","internalType":"Float"},{"name":"maximumIO","type":"bytes32","internalType":"Float"},{"name":"maximumIORatio","type":"bytes32","internalType":"Float"},{"name":"IOIsInput","type":"bool","internalType":"bool"},{"name":"orders","type":"tuple[]","internalType":"struct TakeOrderConfigV4[]","components":[{"name":"order","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"inputIOIndex","type":"uint256","internalType":"uint256"},{"name":"outputIOIndex","type":"uint256","internalType":"uint256"},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"totalTakerInput","type":"bytes32","internalType":"Float"},{"name":"totalTakerOutput","type":"bytes32","internalType":"Float"}],"stateMutability":"nonpayable"},{"type":"function","name":"vaultBalance2","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"Float"}],"stateMutability":"view"},{"type":"function","name":"withdraw4","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"},{"name":"targetAmount","type":"bytes32","internalType":"Float"},{"name":"post","type":"tuple[]","internalType":"struct TaskV2[]","components":[{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddOrderV3","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"order","type":"tuple","indexed":false,"internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]}],"anonymous":false},{"type":"event","name":"AfterClearV2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"clearStateChange","type":"tuple","indexed":false,"internalType":"struct ClearStateChangeV2","components":[{"name":"aliceOutput","type":"bytes32","internalType":"Float"},{"name":"bobOutput","type":"bytes32","internalType":"Float"},{"name":"aliceInput","type":"bytes32","internalType":"Float"},{"name":"bobInput","type":"bytes32","internalType":"Float"}]}],"anonymous":false},{"type":"event","name":"ClearV3","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"alice","type":"tuple","indexed":false,"internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"bob","type":"tuple","indexed":false,"internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"clearConfig","type":"tuple","indexed":false,"internalType":"struct ClearConfigV2","components":[{"name":"aliceInputIOIndex","type":"uint256","internalType":"uint256"},{"name":"aliceOutputIOIndex","type":"uint256","internalType":"uint256"},{"name":"bobInputIOIndex","type":"uint256","internalType":"uint256"},{"name":"bobOutputIOIndex","type":"uint256","internalType":"uint256"},{"name":"aliceBountyVaultId","type":"bytes32","internalType":"bytes32"},{"name":"bobBountyVaultId","type":"bytes32","internalType":"bytes32"}]}],"anonymous":false},{"type":"event","name":"ContextV2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"context","type":"bytes32[][]","indexed":false,"internalType":"bytes32[][]"}],"anonymous":false},{"type":"event","name":"DepositV2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"vaultId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"depositAmountUint256","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetaV1_2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"subject","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"meta","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OrderExceedsMaxRatio","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OrderNotFound","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OrderZeroAmount","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"owner","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RemoveOrderV3","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"orderHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"order","type":"tuple","indexed":false,"internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]}],"anonymous":false},{"type":"event","name":"TakeOrderV3","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"config","type":"tuple","indexed":false,"internalType":"struct TakeOrderConfigV4","components":[{"name":"order","type":"tuple","internalType":"struct OrderV4","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"evaluable","type":"tuple","internalType":"struct EvaluableV4","components":[{"name":"interpreter","type":"address","internalType":"contract IInterpreterV4"},{"name":"store","type":"address","internalType":"contract IInterpreterStoreV3"},{"name":"bytecode","type":"bytes","internalType":"bytes"}]},{"name":"validInputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"validOutputs","type":"tuple[]","internalType":"struct IOV2[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"name":"nonce","type":"bytes32","internalType":"bytes32"}]},{"name":"inputIOIndex","type":"uint256","internalType":"uint256"},{"name":"outputIOIndex","type":"uint256","internalType":"uint256"},{"name":"signedContext","type":"tuple[]","internalType":"struct SignedContextV1[]","components":[{"name":"signer","type":"address","internalType":"address"},{"name":"context","type":"bytes32[]","internalType":"bytes32[]"},{"name":"signature","type":"bytes","internalType":"bytes"}]}]},{"name":"input","type":"bytes32","indexed":false,"internalType":"Float"},{"name":"output","type":"bytes32","indexed":false,"internalType":"Float"}],"anonymous":false},{"type":"event","name":"WithdrawV2","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"vaultId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"targetAmount","type":"bytes32","indexed":false,"internalType":"Float"},{"name":"withdrawAmount","type":"bytes32","indexed":false,"internalType":"Float"},{"name":"withdrawAmountUint256","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ClearZeroAmount","inputs":[]},{"type":"error","name":"CoefficientOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"DivisionByZero","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ExponentOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"ExponentUnderflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FixedDecimalOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"FlashLenderCallbackFailed","inputs":[{"name":"result","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidSignature","inputs":[{"name":"i","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LossyConversionToFloat","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"MaximizeOverflow","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"MinimumIO","inputs":[{"name":"minimumIO","type":"bytes32","internalType":"Float"},{"name":"actualIO","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"MulDivOverflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NegativeBounty","inputs":[]},{"type":"error","name":"NegativeFixedDecimalConversion","inputs":[{"name":"signedCoefficient","type":"int256","internalType":"int256"},{"name":"exponent","type":"int256","internalType":"int256"}]},{"type":"error","name":"NegativePull","inputs":[]},{"type":"error","name":"NegativePush","inputs":[]},{"type":"error","name":"NegativeVaultBalance","inputs":[{"name":"vaultBalance","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"NegativeVaultBalanceChange","inputs":[{"name":"amount","type":"bytes32","internalType":"Float"}]},{"type":"error","name":"NoOrders","inputs":[]},{"type":"error","name":"NotOrderOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"NotRainMetaV1","inputs":[{"name":"unmeta","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"OrderNoHandleIO","inputs":[]},{"type":"error","name":"OrderNoInputs","inputs":[]},{"type":"error","name":"OrderNoOutputs","inputs":[]},{"type":"error","name":"OrderNoSources","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SameOwner","inputs":[]},{"type":"error","name":"TOFUTokenDecimalsNotDeployed","inputs":[{"name":"expectedAddress","type":"address","internalType":"address"}]},{"type":"error","name":"TokenDecimalsReadFailure","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"tofuOutcome","type":"uint8","internalType":"enum TOFUOutcome"}]},{"type":"error","name":"TokenMismatch","inputs":[]},{"type":"error","name":"TokenSelfTrade","inputs":[]},{"type":"error","name":"UnsupportedCalculateOutputs","inputs":[{"name":"outputs","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroDepositAmount","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ZeroMaximumIO","inputs":[]},{"type":"error","name":"ZeroVaultId","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"ZeroWithdrawTargetAmount","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"vaultId","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055615c24806100405f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063613255ab11610093578063ac9650d811610063578063ac9650d81461022b578063d7e442ec1461024b578063d9d98ce41461025e578063fa50118214610273575f80fd5b8063613255ab146101ad57806369c72856146101c0578063709fb8a5146101e85780639235084d146101fb575f80fd5b80632fbc4ba0116100ce5780632fbc4ba01461015157806341d1514f146101665780635cffe9de14610187578063607461191461019a575f80fd5b806301ffc9a7146100f45780631f69cb751461011c5780632cb77e9f1461012f575b5f80fd5b61010761010236600461463b565b610286565b60405190151581526020015b60405180910390f35b61010761012a3660046146a3565b6102bc565b61010761013d36600461470e565b5f9081526020819052604090205460011490565b61016461015f366004614744565b610404565b005b6101796101743660046147a9565b61054a565b604051908152602001610113565b6101076101953660046147e7565b61055e565b6101646101a8366004614744565b61065e565b6101796101bb36600461487e565b6107f1565b6101d36101ce3660046148af565b610859565b60408051928352602083019190915201610113565b6101076101f63660046148e1565b610efc565b61020e61020936600461492b565b6111c5565b604080519315158452602084019290925290820152606001610113565b61023e610239366004614962565b611286565b60405161011391906149cf565b610164610259366004614962565b61136c565b61017961026c366004614a31565b5f92915050565b610164610281366004614ea3565b6113c6565b5f6001600160e01b0319821663e414309160e01b14806102b657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6102c5611865565b6102d2602085018561487e565b6001600160a01b0316336001600160a01b031614610321576102f7602085018561487e565b6040516335252be360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f61033361032e86614f5d565b611880565b5f818152602081905260409020549091505f19016103e6575f818152602081905260408082209190915551600192507f09d18501db0080ca2d6cd7c17fa7255daff4b2d503ea93b76ff68b6752ea8e6390610393903390849089906150aa565b60405180910390a16040805160028152602081018390523381830152606081019091526103e6906103d7905b60408051600181526020810192909252818101905290565b6103e1858761516e565b6118af565b506103fd60015f80516020615c0483398151915255565b9392505050565b61040c611865565b33858561041a838383611a7d565b610424865f611ab3565b610459576040516306dde9c360e41b81523360048201526001600160a01b038916602482015260448101889052606401610318565b5f80610466338b8a611aed565b604080513381526001600160a01b038e1660208201529081018c90526060810183905291935091507f7f9dfa19cf1cc2f806f2f860fbc9c056b601fb1afc0e9b843dfe5c63616268e69060800160405180910390a15f806104c9338d8d8d611bc7565b909250905087156105265760408051600581526001600160a01b038e1660208201528082018d9052606081018490526080810183905260ff851660a082015260c081019091526105269061051c906103bf565b6103e18a8c61516e565b5050505050505061054360015f80516020615c0483398151915255565b5050505050565b5f610556848484611cb7565b949350505050565b5f6105736001600160a01b0386168786611e60565b6040516323e30c8b60e01b81525f906001600160a01b038816906323e30c8b906105ab9033908a908a9087908b908b9060040161522e565b6020604051808303815f875af11580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190615272565b90507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9811461063057604051630b6c58a960e31b815260048101829052602401610318565b610651873061063f5f8961529d565b6001600160a01b038a16929190611e95565b5060019695505050505050565b610666611865565b338585610674838383611a7d565b5f8080806106828a82611ab3565b6106b657604051623a3a4d60e21b81523360048201526001600160a01b038d166024820152604481018c9052606401610318565b5f6106c2338e8e611cb7565b90506106ce8b82611ed1565b94506106dc338e8e88611eed565b90935091505f6106ed338f88611f64565b80965081925050507f8045c25080b0868951141ed0a91720bcad09a8364a2b3109ee1fd49c1f0bc8b8338f8f8f8a8660405161075f969594939291906001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b60405180910390a1505060408051600681526001600160a01b038e1660208201528082018d9052606081018490526080810183905260a081018c905260ff851660c0820152600160e08201908152610100820182905261012082019092529089156107d2576107d2816103e18c8e61516e565b50505050505050505061054360015f80516020615c0483398151915255565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b69190615272565b5f80610863611865565b61087060808401846152b0565b90505f0361089157604051639c95219f60e01b815260040160405180910390fd5b610899614563565b6108a161458f565b5f6108af60808701876152b0565b5f8181106108bf576108bf6152f6565b90506020028101906108d1919061530a565b6108db9080615328565b6108e990604081019061533c565b6108f660808901896152b0565b5f818110610906576109066152f6565b9050602002810190610918919061530a565b6020013581811061092b5761092b6152f6565b610941926020604090920201908101915061487e565b90505f61095160808801886152b0565b5f818110610961576109616152f6565b9050602002810190610973919061530a565b61097d9080615328565b61098b90606081019061533c565b61099860808a018a6152b0565b5f8181106109a8576109a86152f6565b90506020028101906109ba919061530a565b604001358181106109cd576109cd6152f6565b6109e3926020604090920201908101915061487e565b905060605f6109f560808a018a6152b0565b6040805160206001939093018302810190915293508a01359150610a1b9050815f611ab3565b610a385760405163315f9e2360e21b815260040160405180910390fd5b5f5b610a4760808b018b6152b0565b905081108015610a5c5750610a5c825f611ab3565b15610db957610a6e60808b018b6152b0565b82818110610a7e57610a7e6152f6565b9050602002810190610a90919061530a565b610a9990615382565b9650865f01519550846001600160a01b03168660400151886020015181518110610ac557610ac56152f6565b60200260200101515f01516001600160a01b0316141580610b1c5750836001600160a01b03168660600151886040015181518110610b0557610b056152f6565b60200260200101515f01516001600160a01b031614155b15610b3a5760405163936bb5ad60e01b815260040160405180910390fd5b610b4d8688602001518960400151612027565b5f610b5787611880565b5f81815260208190526040902054909150610bbc578651604080513381526001600160a01b03909216602083015281018290527fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f39060600160405180910390a1610db0565b5f610bd6888a602001518b60400151338d60600151612099565b6060810151909150610bec9060408e0135611ab3565b15610c42578751604080513381526001600160a01b03909216602083015281018390527fe3151dc8cb7a54ffc4baabd28c1f241c94d510b5e5b502491ac3cad6c16316d5906060015b60405180910390a1610dae565b60408101516001600160e01b0316610c9c578751604080513381526001600160a01b03909216602083015281018390527f500b713857325f9e6dcb52ae832eca9109d107ed1aae9cb4928b4c1e13f051aa90606001610c35565b5f808d6060016020810190610cb19190615418565b15610cea576040830151610cc59087611ed1565b6060840151909250610cd79083612657565b9050610ce386836126a4565b9550610d3b565b5f610d068460400151856060015161265790919063ffffffff16565b9050610d128188611ed1565b9150610d2b8460600151836126d490919063ffffffff16565b9250610d3787836126a4565b9650505b610d458c82612704565b9b50610d518d83612704565b9c50610d5e818385612734565b7f194f1feb3b4d7076a2c272e774e792e0c48bb8c7aa1a9a3671c1cd6da9e6b4c1338c8484604051610d939493929190615540565b60405180910390a15050845160010180865260200285018190525b505b50600101610a3a565b505f9050610dcd60808a0160608b01615418565b610dd75786610dd9565b875b9050610de6818a356128fc565b15610e0e5760405163573b6f4160e01b81528935600482015260248101829052604401610318565b50610e1a338389611f64565b505f9050610e2b60a08a018a61562a565b90501115610e99573363691f9ed783858a8a610e4a60a08f018f61562a565b6040518763ffffffff1660e01b8152600401610e6b9695949392919061522e565b5f604051808303815f87803b158015610e82575f80fd5b505af1158015610e94573d5f803e3d5ffd5b505050505b610ea4338488611aed565b50505f5b8151811015610edb57610ed3828281518110610ec657610ec66152f6565b6020026020010151612936565b600101610ea8565b505050505050610ef760015f80516020615c0483398151915255565b915091565b5f610f05611865565b610f12602085018561533c565b90505f03610f3357604051636c44ef8f60e01b815260040160405180910390fd5b610f40604085018561533c565b90505f03610f615760405163540e5f0b60e01b815260040160405180910390fd5b6040805160a081019091523381525f9060208101610f7f878061566d565b610f8890615681565b8152602001868060200190610f9d919061533c565b808060200260200160405190810160405280939291908181526020015f905b82821015610fe857610fd96040830286013681900381019061568c565b81526020019060010190610fbc565b5050509183525050602001611000604088018861533c565b808060200260200160405190810160405280939291908181526020015f905b8282101561104b5761103c6040830286013681900381019061568c565b8152602001906001019061101f565b50505050508152602001866060013581525090505f61106982611880565b5f818152602081905260409020549091501580156111ab575f828152602081905260409081902060019055835190517f87491344dfbcf91f6cbbc610cbbeedc85313d37a02df0c93527f7ea5f8db717f916110c791859087906156a6565b60405180910390a15f6110dd60a089018961562a565b905011156111795761112e6110f560a089018961562a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b7992505050565b82517fd46c2c56b35c8210e9e712ec3f02242d5fc90187c0ac8ed80cc33626846ec369908361116060a08b018b61562a565b60405161117094939291906156cd565b60405180910390a15b6040805160028152602081018490523381830152606081019091526111ab906111a1906103bf565b6103e1878961516e565b925050506103fd60015f80516020615c0483398151915255565b5f8080806111df6111d68680615328565b61032e90614f5d565b5f8181526020819052604090205490915060011461120657505f925082915081905061127f565b61122b6112138680615328565b61121c90614f5d565b86602001358760400135612027565b5f6112686112398780615328565b61124290614f5d565b602088013560408901353361125a60608c018c6152b0565b611263916156ff565b612099565b905060018160400151826060015194509450945050505b9193909250565b604080515f8152602081019091526060908267ffffffffffffffff8111156112b0576112b0614a5b565b6040519080825280602002602001820160405280156112e357816020015b60608152602001906001900390816112ce5790505b5091505f5b838110156113645761133f30868684818110611306576113066152f6565b9050602002810190611318919061562a565b8560405160200161132b9392919061570b565b604051602081830303815290604052612ba4565b838281518110611351576113516152f6565b60209081029190910101526001016112e8565b505092915050565b611374611865565b604080515f808252602082019092526113ac916113a1565b606081526020019060019003908161138c5790505b506103e1838561516e565b6113c260015f80516020615c0483398151915255565b5050565b6113ce611865565b835185516001600160a01b039182169116036113fd57604051630a98f1f360e21b815260040160405180910390fd5b8360400151836040013581518110611417576114176152f6565b60200260200101515f01516001600160a01b03168560600151846020013581518110611445576114456152f6565b60200260200101515f01516001600160a01b03161415806114be5750604085015180518435908110611479576114796152f6565b60200260200101515f01516001600160a01b031684606001518460600135815181106114a7576114a76152f6565b60200260200101515f01516001600160a01b031614155b156114dc5760405163936bb5ad60e01b815260040160405180910390fd5b84606001518360200135815181106114f6576114f66152f6565b60200260200101515f01516001600160a01b03168560400151845f013581518110611523576115236152f6565b60200260200101515f01516001600160a01b03160361155557604051631cd2f1c760e21b815260040160405180910390fd5b5f805f61156188611880565b81526020019081526020015f2054036115d1577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333865f01516115a388611880565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a161184f565b5f805f6115dd87611880565b81526020019081526020015f20540361161f577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333855f01516115a387611880565b7f6fa7f4c28634b0a9d6831401c45ae468195fb63aed07308935c35374ff5d9e3933868686604051611654949392919061572e565b60405180910390a15f61167486855f01358660200135885f015186612099565b90505f61168f86866040013587606001358a5f015188612099565b90505f61169c8383612c44565b90506116b08160400151825f015185612734565b6116c38160600151826020015184612734565b606081015181515f916116d691906126a4565b90505f6116f4836040015184602001516126a490919063ffffffff16565b9050611700825f6128fc565b806117105750611710815f6128fc565b1561172e57604051630d86822160e01b815260040160405180910390fd5b611762338b606001518a602001358151811061174c5761174c6152f6565b60200260200101515f01518a6080013585611bc7565b5050611798338a606001518a6060013581518110611782576117826152f6565b60200260200101515f01518a60a0013584611bc7565b5050604080513381528451602080830191909152850151818301529084015160608083019190915284015160808201527fd9fa84dd790c969daa5c33d8050dc06b4a9b59d5b42e2be5f5e8ae20447f618d925060a001905060405180910390a161180183612936565b61180a82612936565b80516001600160e01b031615801561182d575060208101516001600160e01b0316155b1561184b576040516321badf1f60e01b815260040160405180910390fd5b5050505b61054360015f80516020615c0483398151915255565b61186d612c92565b60025f80516020615c0483398151915255565b5f8160405160200161189291906157aa565b604051602081830303815290604052805190602001209050919050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b8651811015611a7357868181518110611916576119166152f6565b602002602001015193505f845f015160400151511115611a6b575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f815260200161198e8d8a60200151612cc3565b8152602001878152602001868152506040518263ffffffff1660e01b81526004016119b99190615814565b5f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061590c565b9150505f81511115611a695784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490611a3b908a9085906004016159c2565b5f604051808303815f87803b158015611a52575f80fd5b505af1158015611a64573d5f803e3d5ffd5b505050505b505b6001016118fb565b5050505050505050565b80611aae576040516305dbdfd960e41b81526001600160a01b03808516600483015283166024820152604401610318565b505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d611ae184848484612fa5565b12979650505050505050565b5f805f80611afa86613079565b90925090506001826003811115611b1357611b136159da565b14158015611b3257505f826003811115611b2f57611b2f6159da565b14155b15611b5457858260405163ee07877f60e01b81526004016103189291906159ee565b611b5e855f6128fc565b15611b7c57604051632eaefac360e21b815260040160405180910390fd5b5f80611b888784613106565b9150915080611b9d57611b9a82615a27565b91505b8115611bb857611bb86001600160a01b0389168a3085611e95565b5093509150505b935093915050565b5f80611bd383826128fc565b15611bf45760405163793a8f5560e01b815260048101849052602401610318565b83611c1257611c04868685611f64565b505f9250829150611cae9050565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c8286612704565b9050611c58815f6128fc565b15611c795760405163c5e12af560e01b815260048101829052602401610318565b6001600160a01b038089165f908152600160209081526040808320938b16835292815282822089835290522081905590925090505b94509492505050565b5f8115611cf157506001600160a01b038084165f9081526001602090815260408083209386168352928152828220848352905220546103fd565b5f80611cfc85613133565b90925090506001826003811115611d1557611d156159da565b14158015611d3457505f826003811115611d3157611d316159da565b14155b15611d5657848260405163ee07877f60e01b81526004016103189291906159ee565b6040516370a0823160e01b81526001600160a01b0387811660048301525f91611dca918816906370a0823190602401602060405180830381865afa158015611da0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc49190615272565b83613192565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192505f91611e48919089169063dd62ed3e90604401602060405180830381865afa158015611e1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e429190615272565b846131b6565b509050611e558282611ed1565b9450505050506103fd565b611e6d83838360016131f6565b611aae57604051635274afe760e01b81526001600160a01b0384166004820152602401610318565b611ea3848484846001613258565b611ecb57604051635274afe760e01b81526001600160a01b0385166004820152602401610318565b50505050565b5f611edc83836128fc565b611ee657816103fd565b5090919050565b5f80611ef983826128fc565b15611f1a5760405163793a8f5560e01b815260048101849052602401610318565b83611f2a57611c04868685611aed565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c82866126a4565b5f805f80611f7186613079565b90925090506001826003811115611f8a57611f8a6159da565b14158015611fa957505f826003811115611fa657611fa66159da565b14155b15611fcb57858260405163ee07877f60e01b81526004016103189291906159ee565b611fd5855f6128fc565b15611ff357604051632d1671a360e11b815260040160405180910390fd5b5f611ffe8683613106565b509050801561201b5761201b6001600160a01b0388168983611e60565b97909650945050505050565b8260600151818151811061203d5761203d6152f6565b60200260200101515f01516001600160a01b031683604001518381518110612067576120676152f6565b60200260200101515f01516001600160a01b031603611aae57604051631cd2f1c760e21b815260040160405180910390fd5b6120a16145f6565b5f6120ab87611880565b60408051600480825260a082019092529192506060915f91816020015b60608152602001906001900390816120c85790505089516040805160038152602081018790526001600160a01b03928316818301529189166060830152608082019052909150816001800381518110612123576121236152f6565b60200260200101819052505f806121598b604001518b81518110612149576121496152f6565b60200260200101515f0151613133565b90925090506001826003811115612172576121726159da565b1415801561219157505f82600381111561218e5761218e6159da565b14155b156121d3578a604001518a815181106121ac576121ac6152f6565b60200260200101515f01518260405163ee07877f60e01b81526004016103189291906159ee565b5f6122238c5f01518d604001518d815181106121f1576121f16152f6565b60200260200101515f01518e604001518e81518110612212576122126152f6565b602002602001015160200151611cb7565b90506122b28c604001518c8151811061223e5761223e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e604001518e81518110612270576122706152f6565b602002602001015160200151845f801b60408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b846001600303815181106122c8576122c86152f6565b60200260200101819052505050505f806122f18b606001518a81518110612149576121496152f6565b9092509050600182600381111561230a5761230a6159da565b1415801561232957505f826003811115612326576123266159da565b14155b15612344578a6060015189815181106121ac576121ac6152f6565b5f6123838c5f01518d606001518c81518110612362576123626152f6565b60200260200101515f01518e606001518d81518110612212576122126152f6565b90506123d08c606001518b8151811061239e5761239e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e606001518d81518110612270576122706152f6565b846001600403815181106123e6576123e66152f6565b60200260200101819052505050506123fe8186612cc3565b9150505f885f01516001600160a01b031690505f808a602001515f01516001600160a01b031663d04dfe236040518060e001604052808e60200151602001516001600160a01b0316815260200161245e87305f9182526020526040902090565b81526020018e602001516040015181526020015f81526020018781526020015f67ffffffffffffffff81111561249657612496614a5b565b6040519080825280602002602001820160405280156124bf578160200160208202803683370190505b5081526020015f6040519080825280602002602001820160405280156124ef578160200160208202803683370190505b508152506040518263ffffffff1660e01b815260040161250f9190615814565b5f60405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612550919081019061590c565b9150915060028251101561257c578151604051630fbb8e5560e21b815260040161031891815260200190565b6020820151604083015160608d015180515f91908d9081106125a0576125a06152f6565b602002602001015190505f6125c08f5f0151835f01518460200151611cb7565b90506125cc8382611ed1565b6040805160028152602081018390528082018790526060810190915290935091506125f49050565b86600281518110612607576126076152f6565b60200260200101819052506040518060e001604052808e81526020018c81526020018281526020018381526020018781526020018681526020018481525097505050505050505095945050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866132c5565b915091505f61269683836133e4565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613431565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d84806126878686868661345b565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613998565b82816080015160038151811061274c5761274c6152f6565b6020026020010151600481518110612766576127666152f6565b60200260200101818152505081816080015160048151811061278a5761278a6152f6565b60200260200101516004815181106127a4576127a46152f6565b602002602001018181525050612833815f01515f015182608001516003815181106127d1576127d16152f6565b60200260200101515f815181106127ea576127ea6152f6565b60200260200101515f1c836080015160038151811061280b5761280b6152f6565b6020026020010151600281518110612825576128256152f6565b602002602001015186611bc7565b50506128b8815f01515f01518260800151600481518110612856576128566152f6565b60200260200101515f8151811061286f5761286f6152f6565b60200260200101515f1c8360800151600481518110612890576128906152f6565b60200260200101516002815181106128aa576128aa6152f6565b602002602001015185611eed565b50507f4cb6e22a3e7e651d7cf0376cff48f20f5007a54147777865be7f5f6c38c50f4a3382608001516040516128ef929190615a3f565b60405180910390a1505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d61292a84848484612fa5565b13979650505050505050565b60c081015151156129b0578051602090810151015160a082015160c083015160405163012c676d60e21b81526001600160a01b03909316926304b19db4926129829290916004016159c2565b5f604051808303815f87803b158015612999575f80fd5b505af11580156129ab573d5f803e3d5ffd5b505050505b5f815f0151602001515f01516001600160a01b031663d04dfe236040518060e00160405280855f015160200151602001516001600160a01b03168152602001612a068660a00151305f9182526020526040902090565b8152602001855f01516020015160400151815260200160018152602001856080015181526020015f67ffffffffffffffff811115612a4657612a46614a5b565b604051908082528060200260200182016040528015612a6f578160200160208202803683370190505b5081526020015f604051908082528060200260200182016040528015612a9f578160200160208202803683370190505b508152506040518263ffffffff1660e01b8152600401612abf9190615814565b5f60405180830381865afa158015612ad9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b00919081019061590c565b9150505f815111156113c2578151602090810151015160a083015160405163012c676d60e21b81526001600160a01b03909216916304b19db491612b489185906004016159c2565b5f604051808303815f87803b158015612b5f575f80fd5b505af1158015612b71573d5f803e3d5ffd5b505050505050565b612b8281613a96565b612ba15780604051630c89984b60e31b81526004016103189190615a60565b50565b60605f612bb18484613ac4565b9050808015612bd257505f3d1180612bd257505f846001600160a01b03163b115b15612be757612bdf613ad7565b9150506102b6565b8015612c1157604051639996b31560e01b81526001600160a01b0385166004820152602401610318565b3d15612c2457612c1f613af0565b612c3d565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604080516080810182525f808252602082018190529181018290526060810191909152612c718383613afb565b82526040820152612c828284613afb565b6020830152606082015292915050565b5f80516020615c0483398151915254600203612cc157604051633ee5aeb560e01b815260040160405180910390fd5b565b60605f825167ffffffffffffffff811115612ce057612ce0614a5b565b604051908082528060200260200182016040528015612d09578160200160208202803683370190505b5090505f80845111612d1b575f612d21565b83516001015b85516001010190505f8167ffffffffffffffff811115612d4357612d43614a5b565b604051908082528060200260200182016040528015612d7657816020015b6060815260200190600190039081612d615790505b5090505f612d9a604080516002815233602082015230818301526060810190915290565b828281518110612dac57612dac6152f6565b60200260200101819052505f5b8751811015612e09578180600101925050878181518110612ddc57612ddc6152f6565b6020026020010151838381518110612df657612df66152f6565b6020908102919091010152600101612db9565b50855115612f9b57808060010191505083828281518110612e2c57612e2c6152f6565b60200260200101819052505f5b8651811015612f9957612ee8878281518110612e5757612e576152f6565b60200260200101515f0151612ec5612e938a8581518110612e7a57612e7a6152f6565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b898481518110612ed757612ed76152f6565b602002602001015160400151613b64565b612f0857604051630a57f30960e31b815260048101829052602401610318565b868181518110612f1a57612f1a6152f6565b60200260200101515f01516001600160a01b03165f1b858281518110612f4257612f426152f6565b6020026020010181815250508180600101925050868181518110612f6857612f686152f6565b602002602001015160200151838381518110612f8657612f866152f6565b6020908102919091010152600101612e39565b505b5095945050505050565b5f8085158415178187128286121817858414178015612fca5786859250925050611cae565b505f85841315612fde575092949193919260015b8386035f8112604c8213178015613011578215613003575f8994509450505050611cae565b885f94509450505050611cae565b600a82900a8981028a82828161302957613029615a72565b0514613055578415613045575f8b965096505050505050611cae565b8a5f965096505050505050611cae565b841561306a578896509450611cae9350505050565b9550879450611cae9350505050565b5f80613083613bd4565b60405163b7bad1b160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb93899063b7bad1b19060240160408051808303815f875af11580156130d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fd9190615a86565b91509150915091565b5f806001600160e01b038416601b0b60e085901d613125828287613c5f565b9350935050505b9250929050565b5f8061313d613bd4565b604051630782d7e160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb938990630782d7e1906024016040805180830381865afa1580156130d9573d5f803e3d5ffd5b5f805f61319f8585613dc5565b915091506131ad8282613e0e565b95945050505050565b5f805f805f6131c58787613e47565b9250925092505f806131d78585613e8a565b91509150818380156131e65750815b9650965050505050509250929050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661324c578383151615613240573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166132b45783831516156132a8573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f80851584151780156132dd575f92505f91506133da565b6132e78487615ac6565b91505f6132f388613f62565b90505f6132ff87613f62565b90505f61330c8383613f90565b5090505f6f0785ee10d5da46d900f436a000000000821115613341576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561336257670de0b6b3a7640000820491506012015b633b9aca0082111561337b57633b9aca00820491506009015b61271082111561339057612710820491506004015b81156133a457600a82049150600101613390565b6133ae8187615ac6565b95506133d08b8a6133ca87876133c587600a615bc5565b613fac565b89614078565b9097509550505050505b5094509492505050565b5f805f6133f18585613e8a565b9150915080158015613401575081155b1561342957604051638eba4d0760e01b81526004810186905260248101859052604401610318565b509392505050565b5f8061343d8484614118565b909450925061344e86868686613998565b9150915094509492505050565b5f80835f0361348757604051637a97930f60e01b81526004810187905260248101869052604401610318565b855f0361349857505f905080611cae565b5f805f806134a68a8a61416d565b919b50995091506134b7888861416d565b919950975090505f6134c88b613f62565b90505f6134d48a613f62565b90507f161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000604c8183101561389957841561352b57507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b613871565b6f4b3b4ca85a86c47a098a22400000000083101561365757678ac7230489e800008310156135bb576402540be40083101561358957620186a08310156135795750620186a090506005613832565b506402540be4009050600a613832565b655af3107a40008310156135a85750655af3107a40009050600e613832565b50678ac7230489e8000090506013613832565b6b204fce5e3e2502611000000083101561360d5769152d02c7e14af68000008310156135f6575069152d02c7e14af680000090506017613832565b506b204fce5e3e250261100000009050601c613832565b6d314dc6448d9338c15b0a0000000083101561363c57506d314dc6448d9338c15b0a0000000090506021613832565b506f4b3b4ca85a86c47a098a22400000000090506026613832565b780197d4df19d605767337e9f14d3eec8920e40000000000000083101561374f5773af298d050e4395d69670b12b7f410000000000008310156136ea577172cb5bd86321e38cb6ce6682e800000000008310156136cb57507172cb5bd86321e38cb6ce6682e800000000009050602b613832565b5073af298d050e4395d69670b12b7f4100000000000090506030613832565b76010b46c6cdd6e3e0828f4db456ff0c8ea000000000000083101561372b575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035613832565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a613832565b7c03b58e88c75313ec9d329eaaa18fb92f75215b171000000000000000008310156137e5577a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000008310156137bd57507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f613832565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044613832565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca00000000000000000083101561383257507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b81831161384757600a820491505f1901613832565b815f03613871576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610318565b85613899576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610318565b80600160ff1b018d126138b057808d039c506138ee565b600160ff1b9c90038c015f8113156138ee57806001600160ff1b03038b136138db57998a01996138ee565b5f80995099505050505050505050611cae565b5f808e1280156138fd57505f8c135b1561391e57600160ff1b8e01808d13613916575f61391a565b808d035b9150505b8b818f0103975061393b8f8e613935888789613fac565b8b614078565b90995097505f81131561398557604c811315613965575f809a509a50505050505050505050611cae565b80600a0a898161397757613977615a72565b059850885f03613985575f97505b50969850949650611cae95505050505050565b5f80851584151780156139c457865f036139b85784849250925050611cae565b86869250925050611cae565b6139ce87876143c7565b90975095506139dd85856143c7565b9095509350858413156139f1579395929492935b838603604c811115613a0a578787935093505050611cae565b80600a0a8681613a1c57613a1c615a72565b0595505086850180881860ff90811c151589881890911c15168015613a8557876001600160ff1b0303613a6c5760405163d556b11160e01b8152600481018a905260248101899052604401610318565b600a968790059690980586019760019790970196613a89565b8198505b5096979596505050505050565b5f600882511015613aa857505f919050565b506008015167ffffffffffffffff1667ff0a89c674ee78741490565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80613b188460600151856040015161265790919063ffffffff16565b915083604001519050613b38836040015183611ab390919063ffffffff16565b1561312c5782604001519150613b5b8460600151836126d490919063ffffffff16565b90509250929050565b5f836001600160a01b03163b5f03613bc2575f80613b828585614404565b5090925090505f816003811115613b9b57613b9b6159da565b148015613bb95750856001600160a01b0316826001600160a01b0316145b925050506103fd565b613bcd84848461444a565b90506103fd565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580613c2b575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15612cc1576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610318565b5f805f851215613c8c57604051634a7d166b60e01b81526004810186905260248101859052604401610318565b845f03613c9e57505f90506001611bbf565b8460ff8416850185811215613cd05760405163d556b11160e01b81526004810188905260248101879052604401610318565b5f805f831215613d1c57604c19831215613cf3575f809550955050505050611bbf565b825f03600a0a9150818481613d0a57613d0a615a72565b0495505084029091149150611bbf9050565b5f831315613db557604d831315613d595760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b82600a0a9150815f1981613d6f57613d6f615a72565b04841115613da35760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b5091909102925060019150611bbf9050565b8360019550955050505050611bbf565b5f805f805f613dd48787613e47565b92509250925080613e0257604051636238bcb360e11b81526004810184905260248101839052604401610318565b50909590945092505050565b5f805f613e1b8585613e8a565b9150915080613429576040516322c9f7bb60e01b81526004810186905260248101859052604401610318565b5f808060ff841681036001600160ff1b03861115613e7957600a860460018201600a88065f1493509350935050613e83565b8593509150600190505b9250925092565b5f601b83900b8314838382613eee577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515613ece57620186a0860595506005850194505b8586601b0b14613ee957600a86059550846001019450613ece565b613f04565b855f03613f0457505f92506001915061312c9050565b848560030b14613f47575f851215613f2457505f925082915061312c9050565b60405163d556b11160e01b81526004810183905260248101829052604401610318565b50506001600160e01b03841660e084901b1791509250929050565b5f80821215613f8757600160ff1b8203613f815750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f613fb98686613f90565b91509150815f03613fdd57838181613fd357613fd3615a72565b04925050506103fd565b83821061400e5760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610318565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f85871812156140f4576001600160ff1b038411156140e1576140a56001600160ff1b03600161529d565b84036140b95750600160ff1b905081611cae565b6140c4600a85615bd0565b6140cd90615bef565b6140d8846001615ac6565b91509150611cae565b6140ea84615bef565b8391509150611cae565b6001600160ff1b0384111561410e576140cd600a85615bd0565b5082905081611cae565b5f80600160ff1b8403614163576001600160ff1b0383036141565760405163d556b11160e01b81526004810185905260248101849052604401610318565b600a840593508260010192505b50505f9190910391565b5f805f845f0361418557505f91508190506001613e83565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03614372576f4b3b4ca85a86c47a098a22400000000085051580156141e757507f80000000000000000000000000000000000000000000000000000000000000268412155b15614208576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561425057507f80000000000000000000000000000000000000000000000000000000000000138412155b1561426957678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156142b557507f800000000000000000000000000000000000000000000000000000000000000a8412155b156142cb576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561431a57507f80000000000000000000000000000000000000000000000000000000000000028412155b15614330576064850294506002840393506142cb565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561436057506001600160ff1b018412155b1561437257600a850294506001840393505b600a8086029081058614801561438f57506001600160ff1b018512155b1561439e578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b5f805f805f6143d6878761416d565b92509250925080613e02576040516305e51ecb60e01b81526004810188905260248101879052604401610318565b5f805f835160410361443b576020840151604085015160608601515f1a61442d8882858561449b565b955095509550505050613e83565b505081515f9150600290613e83565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156144d457505f91506003905082614559565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614525573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661455057505f925060019150829050614559565b92505f91508190505b9450945094915050565b604051806080016040528061457661458f565b81526020015f81526020015f8152602001606081525090565b6040518060a001604052805f6001600160a01b031681526020016145dd60405180606001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b8152606060208201819052604082018190525f91015290565b6040518060e0016040528061460961458f565b81526020015f81526020015f80191681526020015f8019168152602001606081526020015f8152602001606081525090565b5f6020828403121561464b575f80fd5b81356001600160e01b0319811681146103fd575f80fd5b5f8083601f840112614672575f80fd5b50813567ffffffffffffffff811115614689575f80fd5b6020830191508360208260051b850101111561312c575f80fd5b5f805f604084860312156146b5575f80fd5b833567ffffffffffffffff808211156146cc575f80fd5b9085019060a082880312156146df575f80fd5b909350602085013590808211156146f4575f80fd5b5061470186828701614662565b9497909650939450505050565b5f6020828403121561471e575f80fd5b5035919050565b6001600160a01b0381168114612ba1575f80fd5b8035613f8b81614725565b5f805f805f60808688031215614758575f80fd5b853561476381614725565b94506020860135935060408601359250606086013567ffffffffffffffff81111561478c575f80fd5b61479888828901614662565b969995985093965092949392505050565b5f805f606084860312156147bb575f80fd5b83356147c681614725565b925060208401356147d681614725565b929592945050506040919091013590565b5f805f805f608086880312156147fb575f80fd5b853561480681614725565b9450602086013561481681614725565b935060408601359250606086013567ffffffffffffffff80821115614839575f80fd5b818801915088601f83011261484c575f80fd5b81358181111561485a575f80fd5b89602082850101111561486b575f80fd5b9699959850939650602001949392505050565b5f6020828403121561488e575f80fd5b81356103fd81614725565b5f60c082840312156148a9575f80fd5b50919050565b5f602082840312156148bf575f80fd5b813567ffffffffffffffff8111156148d5575f80fd5b61055684828501614899565b5f805f604084860312156148f3575f80fd5b833567ffffffffffffffff8082111561490a575f80fd5b61491687838801614899565b945060208601359150808211156146f4575f80fd5b5f6020828403121561493b575f80fd5b813567ffffffffffffffff811115614951575f80fd5b8201608081850312156103fd575f80fd5b5f8060208385031215614973575f80fd5b823567ffffffffffffffff811115614989575f80fd5b61499585828601614662565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015614a2457603f19888603018452614a128583516149a1565b945092850192908501906001016149f6565b5092979650505050505050565b5f8060408385031215614a42575f80fd5b8235614a4d81614725565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405290565b6040805190810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405160a0810167ffffffffffffffff81118282101715614a9257614a92614a5b565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0757614b07614a5b565b604052919050565b5f82601f830112614b1e575f80fd5b813567ffffffffffffffff811115614b3857614b38614a5b565b614b4b601f8201601f1916602001614ade565b818152846020838601011115614b5f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215614b8b575f80fd5b614b93614a6f565b90508135614ba081614725565b81526020820135614bb081614725565b6020820152604082013567ffffffffffffffff811115614bce575f80fd5b614bda84828501614b0f565b60408301525092915050565b5f67ffffffffffffffff821115614bff57614bff614a5b565b5060051b60200190565b5f60408284031215614c19575f80fd5b614c21614a98565b90508135614c2e81614725565b808252506020820135602082015292915050565b5f82601f830112614c51575f80fd5b81356020614c66614c6183614be6565b614ade565b8083825260208201915060208460061b870101935086841115614c87575f80fd5b602086015b84811015614cac57614c9e8882614c09565b835291830191604001614c8c565b509695505050505050565b5f60a08284031215614cc7575f80fd5b614ccf614abb565b9050614cda82614739565b8152602082013567ffffffffffffffff80821115614cf6575f80fd5b614d0285838601614b7b565b60208401526040840135915080821115614d1a575f80fd5b614d2685838601614c42565b60408401526060840135915080821115614d3e575f80fd5b50614d4b84828501614c42565b6060830152506080820135608082015292915050565b5f614d6e614c6184614be6565b8381529050602080820190600585811b850187811115614d8c575f80fd5b855b81811015614e7957803567ffffffffffffffff80821115614dad575f80fd5b908801906060828c031215614dc0575f80fd5b614dc8614a6f565b8235614dd381614725565b81528287013582811115614de5575f80fd5b8301601f81018d13614df5575f80fd5b8035614e03614c6182614be6565b81815290881b8201890190898101908f831115614e1e575f80fd5b928a01925b82841015614e3c5783358252928a0192908a0190614e23565b848b01525060409150508381013583811115614e56575f80fd5b614e628e828701614b0f565b918301919091525087525050938301938301614d8e565b50505050509392505050565b5f82601f830112614e94575f80fd5b6103fd83833560208501614d61565b5f805f805f6101408688031215614eb8575f80fd5b853567ffffffffffffffff80821115614ecf575f80fd5b614edb89838a01614cb7565b96506020880135915080821115614ef0575f80fd5b614efc89838a01614cb7565b9550614f0b8960408a01614899565b9450610100880135915080821115614f21575f80fd5b614f2d89838a01614e85565b9350610120880135915080821115614f43575f80fd5b50614f5088828901614e85565b9150509295509295909350565b5f6102b63683614cb7565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135614f9c81614725565b6001600160a01b039081168452602083013590614fb882614725565b166020840152604082013536839003601e19018112614fd5575f80fd5b820160208101903567ffffffffffffffff811115614ff1575f80fd5b803603821315614fff575f80fd5b606060408601526131ad606086018284614f68565b5f808335601e19843603018112615029575f80fd5b830160208101925035905067ffffffffffffffff811115615048575f80fd5b8060061b360382131561312c575f80fd5b8183525f60208085019450825f5b8581101561509f57813561507a81614725565b6001600160a01b03168752818301358388015260409687019690910190600101615067565b509495945050505050565b5f6001600160a01b0380861683528460208401526060604084015283356150d081614725565b166060830152602083013536849003605e190181126150ed575f80fd5b60a060808401526151046101008401858301614f90565b90506151136040850185615014565b605f19808685030160a087015261512b848385615059565b935061513a6060880188615014565b93509150808685030160c087015250615154838383615059565b92505050608084013560e084015280915050949350505050565b5f61517b614c6184614be6565b80848252602080830192508560051b850136811115615198575f80fd5b855b8181101561522257803567ffffffffffffffff808211156151b9575f80fd5b8189019150604082360312156151cd575f80fd5b6151d5614a98565b8235828111156151e3575f80fd5b6151ef36828601614b7b565b8252508583013582811115615202575f80fd5b61520e36828601614e85565b82880152508752505093820193820161519a565b50919695505050505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015260a0608083015261526660a083018486614f68565b98975050505050505050565b5f60208284031215615282575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102b6576102b6615289565b5f808335601e198436030181126152c5575f80fd5b83018035915067ffffffffffffffff8211156152df575f80fd5b6020019150600581901b360382131561312c575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e1983360301811261531e575f80fd5b9190910192915050565b5f8235609e1983360301811261531e575f80fd5b5f808335601e19843603018112615351575f80fd5b83018035915067ffffffffffffffff82111561536b575f80fd5b6020019150600681901b360382131561312c575f80fd5b5f60808236031215615392575f80fd5b6040516080810167ffffffffffffffff82821081831117156153b6576153b6614a5b565b8160405284359150808211156153ca575f80fd5b6153d636838701614cb7565b8352602085013560208401526040850135604084015260608501359150808211156153ff575f80fd5b5061540c36828601614e85565b60608301525092915050565b5f60208284031215615428575f80fd5b813580151581146103fd575f80fd5b5f815180845260208085019450602084015f5b8381101561509f57815180516001600160a01b03168852830151838801526040909601959082019060010161544a565b5f6001600160a01b03808351168452602083015160a060208601528181511660a08601528160208201511660c08601526040810151915050606060e08501526154c76101008501826149a1565b9050604083015184820360408601526154e08282615437565b915050606083015184820360608601526154fa8282615437565b915050608083015160808501528091505092915050565b5f815180845260208085019450602084015f5b8381101561509f57815187529582019590820190600101615524565b5f6001600160a01b0380871683526020608081850152865160808086015261556c61010086018261547a565b90508188015160a086015260408089015160c08701526060808a0151607f198885030160e08901528381518086528686019150868160051b87010187840193505f5b8281101561560857601f1988830301845284518a815116835289810151878b8501526155dc88850182615511565b91890151848303858b01529190506155f481836149a1565b968b0196958b0195935050506001016155ae565b5080995050505050505050505083604083015282606083015295945050505050565b5f808335601e1984360301811261563f575f80fd5b83018035915067ffffffffffffffff821115615659575f80fd5b60200191503681900382131561312c575f80fd5b5f8235605e1983360301811261531e575f80fd5b5f6102b63683614b7b565b5f6040828403121561569c575f80fd5b6103fd8383614c09565b6001600160a01b0384168152826020820152606060408201525f6131ad606083018461547a565b6001600160a01b0385168152836020820152606060408201525f6156f5606083018486614f68565b9695505050505050565b5f6103fd368484614d61565b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f6101206001600160a01b03871683528060208401526157508184018761547a565b90508281036040840152615764818661547a565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b602081525f6103fd602083018461547a565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561580757601f198684030189526157f5838351615511565b988401989250908301906001016157d9565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261584d6101008401826149a1565b9050606084015160808401526080840151601f19808584030160a086015261587583836157bc565b925060a08601519150808584030160c08601526158928383615511565b925060c08601519150808584030160e0860152506131ad8282615511565b5f82601f8301126158bf575f80fd5b815160206158cf614c6183614be6565b8083825260208201915060208460051b8701019350868411156158f0575f80fd5b602086015b84811015614cac57805183529183019183016158f5565b5f806040838503121561591d575f80fd5b825167ffffffffffffffff80821115615934575f80fd5b818501915085601f830112615947575f80fd5b81516020615957614c6183614be6565b82815260059290921b84018101918181019089841115615975575f80fd5b948201945b838610156159935785518252948201949082019061597a565b918801519196509093505050808211156159ab575f80fd5b506159b8858286016158b0565b9150509250929050565b828152604060208201525f6105566040830184615511565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160048310615a1a57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60018201615a3857615a38615289565b5060010190565b6001600160a01b0383168152604060208201525f61055660408301846157bc565b602081525f6103fd60208301846149a1565b634e487b7160e01b5f52601260045260245ffd5b5f8060408385031215615a97575f80fd5b825160048110615aa5575f80fd5b602084015190925060ff81168114615abb575f80fd5b809150509250929050565b8082018281125f83128015821682158216171561136457611364615289565b600181815b80851115615b1f57815f1904821115615b0557615b05615289565b80851615615b1257918102915b93841c9390800290615aea565b509250929050565b5f82615b35575060016102b6565b81615b4157505f6102b6565b8160018114615b575760028114615b6157615b7d565b60019150506102b6565b60ff841115615b7257615b72615289565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715615ba0575081810a6102b6565b615baa8383615ae5565b805f1904821115615bbd57615bbd615289565b029392505050565b5f6103fd8383615b27565b5f82615bea57634e487b7160e01b5f52601260045260245ffd5b500490565b5f600160ff1b8201613f8157613f8161528956fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00","sourceMap":"7948:40830:377:-:0;;;;;;;;;;;;-1:-1:-1;2365:1:19;1505:66;2539;7948:40830:377;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063613255ab11610093578063ac9650d811610063578063ac9650d81461022b578063d7e442ec1461024b578063d9d98ce41461025e578063fa50118214610273575f80fd5b8063613255ab146101ad57806369c72856146101c0578063709fb8a5146101e85780639235084d146101fb575f80fd5b80632fbc4ba0116100ce5780632fbc4ba01461015157806341d1514f146101665780635cffe9de14610187578063607461191461019a575f80fd5b806301ffc9a7146100f45780631f69cb751461011c5780632cb77e9f1461012f575b5f80fd5b61010761010236600461463b565b610286565b60405190151581526020015b60405180910390f35b61010761012a3660046146a3565b6102bc565b61010761013d36600461470e565b5f9081526020819052604090205460011490565b61016461015f366004614744565b610404565b005b6101796101743660046147a9565b61054a565b604051908152602001610113565b6101076101953660046147e7565b61055e565b6101646101a8366004614744565b61065e565b6101796101bb36600461487e565b6107f1565b6101d36101ce3660046148af565b610859565b60408051928352602083019190915201610113565b6101076101f63660046148e1565b610efc565b61020e61020936600461492b565b6111c5565b604080519315158452602084019290925290820152606001610113565b61023e610239366004614962565b611286565b60405161011391906149cf565b610164610259366004614962565b61136c565b61017961026c366004614a31565b5f92915050565b610164610281366004614ea3565b6113c6565b5f6001600160e01b0319821663e414309160e01b14806102b657506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6102c5611865565b6102d2602085018561487e565b6001600160a01b0316336001600160a01b031614610321576102f7602085018561487e565b6040516335252be360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f61033361032e86614f5d565b611880565b5f818152602081905260409020549091505f19016103e6575f818152602081905260408082209190915551600192507f09d18501db0080ca2d6cd7c17fa7255daff4b2d503ea93b76ff68b6752ea8e6390610393903390849089906150aa565b60405180910390a16040805160028152602081018390523381830152606081019091526103e6906103d7905b60408051600181526020810192909252818101905290565b6103e1858761516e565b6118af565b506103fd60015f80516020615c0483398151915255565b9392505050565b61040c611865565b33858561041a838383611a7d565b610424865f611ab3565b610459576040516306dde9c360e41b81523360048201526001600160a01b038916602482015260448101889052606401610318565b5f80610466338b8a611aed565b604080513381526001600160a01b038e1660208201529081018c90526060810183905291935091507f7f9dfa19cf1cc2f806f2f860fbc9c056b601fb1afc0e9b843dfe5c63616268e69060800160405180910390a15f806104c9338d8d8d611bc7565b909250905087156105265760408051600581526001600160a01b038e1660208201528082018d9052606081018490526080810183905260ff851660a082015260c081019091526105269061051c906103bf565b6103e18a8c61516e565b5050505050505061054360015f80516020615c0483398151915255565b5050505050565b5f610556848484611cb7565b949350505050565b5f6105736001600160a01b0386168786611e60565b6040516323e30c8b60e01b81525f906001600160a01b038816906323e30c8b906105ab9033908a908a9087908b908b9060040161522e565b6020604051808303815f875af11580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190615272565b90507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9811461063057604051630b6c58a960e31b815260048101829052602401610318565b610651873061063f5f8961529d565b6001600160a01b038a16929190611e95565b5060019695505050505050565b610666611865565b338585610674838383611a7d565b5f8080806106828a82611ab3565b6106b657604051623a3a4d60e21b81523360048201526001600160a01b038d166024820152604481018c9052606401610318565b5f6106c2338e8e611cb7565b90506106ce8b82611ed1565b94506106dc338e8e88611eed565b90935091505f6106ed338f88611f64565b80965081925050507f8045c25080b0868951141ed0a91720bcad09a8364a2b3109ee1fd49c1f0bc8b8338f8f8f8a8660405161075f969594939291906001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b60405180910390a1505060408051600681526001600160a01b038e1660208201528082018d9052606081018490526080810183905260a081018c905260ff851660c0820152600160e08201908152610100820182905261012082019092529089156107d2576107d2816103e18c8e61516e565b50505050505050505061054360015f80516020615c0483398151915255565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610835573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b69190615272565b5f80610863611865565b61087060808401846152b0565b90505f0361089157604051639c95219f60e01b815260040160405180910390fd5b610899614563565b6108a161458f565b5f6108af60808701876152b0565b5f8181106108bf576108bf6152f6565b90506020028101906108d1919061530a565b6108db9080615328565b6108e990604081019061533c565b6108f660808901896152b0565b5f818110610906576109066152f6565b9050602002810190610918919061530a565b6020013581811061092b5761092b6152f6565b610941926020604090920201908101915061487e565b90505f61095160808801886152b0565b5f818110610961576109616152f6565b9050602002810190610973919061530a565b61097d9080615328565b61098b90606081019061533c565b61099860808a018a6152b0565b5f8181106109a8576109a86152f6565b90506020028101906109ba919061530a565b604001358181106109cd576109cd6152f6565b6109e3926020604090920201908101915061487e565b905060605f6109f560808a018a6152b0565b6040805160206001939093018302810190915293508a01359150610a1b9050815f611ab3565b610a385760405163315f9e2360e21b815260040160405180910390fd5b5f5b610a4760808b018b6152b0565b905081108015610a5c5750610a5c825f611ab3565b15610db957610a6e60808b018b6152b0565b82818110610a7e57610a7e6152f6565b9050602002810190610a90919061530a565b610a9990615382565b9650865f01519550846001600160a01b03168660400151886020015181518110610ac557610ac56152f6565b60200260200101515f01516001600160a01b0316141580610b1c5750836001600160a01b03168660600151886040015181518110610b0557610b056152f6565b60200260200101515f01516001600160a01b031614155b15610b3a5760405163936bb5ad60e01b815260040160405180910390fd5b610b4d8688602001518960400151612027565b5f610b5787611880565b5f81815260208190526040902054909150610bbc578651604080513381526001600160a01b03909216602083015281018290527fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f39060600160405180910390a1610db0565b5f610bd6888a602001518b60400151338d60600151612099565b6060810151909150610bec9060408e0135611ab3565b15610c42578751604080513381526001600160a01b03909216602083015281018390527fe3151dc8cb7a54ffc4baabd28c1f241c94d510b5e5b502491ac3cad6c16316d5906060015b60405180910390a1610dae565b60408101516001600160e01b0316610c9c578751604080513381526001600160a01b03909216602083015281018390527f500b713857325f9e6dcb52ae832eca9109d107ed1aae9cb4928b4c1e13f051aa90606001610c35565b5f808d6060016020810190610cb19190615418565b15610cea576040830151610cc59087611ed1565b6060840151909250610cd79083612657565b9050610ce386836126a4565b9550610d3b565b5f610d068460400151856060015161265790919063ffffffff16565b9050610d128188611ed1565b9150610d2b8460600151836126d490919063ffffffff16565b9250610d3787836126a4565b9650505b610d458c82612704565b9b50610d518d83612704565b9c50610d5e818385612734565b7f194f1feb3b4d7076a2c272e774e792e0c48bb8c7aa1a9a3671c1cd6da9e6b4c1338c8484604051610d939493929190615540565b60405180910390a15050845160010180865260200285018190525b505b50600101610a3a565b505f9050610dcd60808a0160608b01615418565b610dd75786610dd9565b875b9050610de6818a356128fc565b15610e0e5760405163573b6f4160e01b81528935600482015260248101829052604401610318565b50610e1a338389611f64565b505f9050610e2b60a08a018a61562a565b90501115610e99573363691f9ed783858a8a610e4a60a08f018f61562a565b6040518763ffffffff1660e01b8152600401610e6b9695949392919061522e565b5f604051808303815f87803b158015610e82575f80fd5b505af1158015610e94573d5f803e3d5ffd5b505050505b610ea4338488611aed565b50505f5b8151811015610edb57610ed3828281518110610ec657610ec66152f6565b6020026020010151612936565b600101610ea8565b505050505050610ef760015f80516020615c0483398151915255565b915091565b5f610f05611865565b610f12602085018561533c565b90505f03610f3357604051636c44ef8f60e01b815260040160405180910390fd5b610f40604085018561533c565b90505f03610f615760405163540e5f0b60e01b815260040160405180910390fd5b6040805160a081019091523381525f9060208101610f7f878061566d565b610f8890615681565b8152602001868060200190610f9d919061533c565b808060200260200160405190810160405280939291908181526020015f905b82821015610fe857610fd96040830286013681900381019061568c565b81526020019060010190610fbc565b5050509183525050602001611000604088018861533c565b808060200260200160405190810160405280939291908181526020015f905b8282101561104b5761103c6040830286013681900381019061568c565b8152602001906001019061101f565b50505050508152602001866060013581525090505f61106982611880565b5f818152602081905260409020549091501580156111ab575f828152602081905260409081902060019055835190517f87491344dfbcf91f6cbbc610cbbeedc85313d37a02df0c93527f7ea5f8db717f916110c791859087906156a6565b60405180910390a15f6110dd60a089018961562a565b905011156111795761112e6110f560a089018961562a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b7992505050565b82517fd46c2c56b35c8210e9e712ec3f02242d5fc90187c0ac8ed80cc33626846ec369908361116060a08b018b61562a565b60405161117094939291906156cd565b60405180910390a15b6040805160028152602081018490523381830152606081019091526111ab906111a1906103bf565b6103e1878961516e565b925050506103fd60015f80516020615c0483398151915255565b5f8080806111df6111d68680615328565b61032e90614f5d565b5f8181526020819052604090205490915060011461120657505f925082915081905061127f565b61122b6112138680615328565b61121c90614f5d565b86602001358760400135612027565b5f6112686112398780615328565b61124290614f5d565b602088013560408901353361125a60608c018c6152b0565b611263916156ff565b612099565b905060018160400151826060015194509450945050505b9193909250565b604080515f8152602081019091526060908267ffffffffffffffff8111156112b0576112b0614a5b565b6040519080825280602002602001820160405280156112e357816020015b60608152602001906001900390816112ce5790505b5091505f5b838110156113645761133f30868684818110611306576113066152f6565b9050602002810190611318919061562a565b8560405160200161132b9392919061570b565b604051602081830303815290604052612ba4565b838281518110611351576113516152f6565b60209081029190910101526001016112e8565b505092915050565b611374611865565b604080515f808252602082019092526113ac916113a1565b606081526020019060019003908161138c5790505b506103e1838561516e565b6113c260015f80516020615c0483398151915255565b5050565b6113ce611865565b835185516001600160a01b039182169116036113fd57604051630a98f1f360e21b815260040160405180910390fd5b8360400151836040013581518110611417576114176152f6565b60200260200101515f01516001600160a01b03168560600151846020013581518110611445576114456152f6565b60200260200101515f01516001600160a01b03161415806114be5750604085015180518435908110611479576114796152f6565b60200260200101515f01516001600160a01b031684606001518460600135815181106114a7576114a76152f6565b60200260200101515f01516001600160a01b031614155b156114dc5760405163936bb5ad60e01b815260040160405180910390fd5b84606001518360200135815181106114f6576114f66152f6565b60200260200101515f01516001600160a01b03168560400151845f013581518110611523576115236152f6565b60200260200101515f01516001600160a01b03160361155557604051631cd2f1c760e21b815260040160405180910390fd5b5f805f61156188611880565b81526020019081526020015f2054036115d1577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333865f01516115a388611880565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a161184f565b5f805f6115dd87611880565b81526020019081526020015f20540361161f577fb70c12fa453793fa6818ec07c91e74363a47aa6a6829dcd9533937fdf30314f333855f01516115a387611880565b7f6fa7f4c28634b0a9d6831401c45ae468195fb63aed07308935c35374ff5d9e3933868686604051611654949392919061572e565b60405180910390a15f61167486855f01358660200135885f015186612099565b90505f61168f86866040013587606001358a5f015188612099565b90505f61169c8383612c44565b90506116b08160400151825f015185612734565b6116c38160600151826020015184612734565b606081015181515f916116d691906126a4565b90505f6116f4836040015184602001516126a490919063ffffffff16565b9050611700825f6128fc565b806117105750611710815f6128fc565b1561172e57604051630d86822160e01b815260040160405180910390fd5b611762338b606001518a602001358151811061174c5761174c6152f6565b60200260200101515f01518a6080013585611bc7565b5050611798338a606001518a6060013581518110611782576117826152f6565b60200260200101515f01518a60a0013584611bc7565b5050604080513381528451602080830191909152850151818301529084015160608083019190915284015160808201527fd9fa84dd790c969daa5c33d8050dc06b4a9b59d5b42e2be5f5e8ae20447f618d925060a001905060405180910390a161180183612936565b61180a82612936565b80516001600160e01b031615801561182d575060208101516001600160e01b0316155b1561184b576040516321badf1f60e01b815260040160405180910390fd5b5050505b61054360015f80516020615c0483398151915255565b61186d612c92565b60025f80516020615c0483398151915255565b5f8160405160200161189291906157aa565b604051602081830303815290604052805190602001209050919050565b335f8181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b8651811015611a7357868181518110611916576119166152f6565b602002602001015193505f845f015160400151511115611a6b575f845f01515f01516001600160a01b031663d04dfe236040518060e00160405280885f0151602001516001600160a01b03168152602001898152602001885f01516040015181526020015f815260200161198e8d8a60200151612cc3565b8152602001878152602001868152506040518263ffffffff1660e01b81526004016119b99190615814565b5f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061590c565b9150505f81511115611a695784516020015160405163012c676d60e21b81526001600160a01b03909116906304b19db490611a3b908a9085906004016159c2565b5f604051808303815f87803b158015611a52575f80fd5b505af1158015611a64573d5f803e3d5ffd5b505050505b505b6001016118fb565b5050505050505050565b80611aae576040516305dbdfd960e41b81526001600160a01b03808516600483015283166024820152604401610318565b505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d611ae184848484612fa5565b12979650505050505050565b5f805f80611afa86613079565b90925090506001826003811115611b1357611b136159da565b14158015611b3257505f826003811115611b2f57611b2f6159da565b14155b15611b5457858260405163ee07877f60e01b81526004016103189291906159ee565b611b5e855f6128fc565b15611b7c57604051632eaefac360e21b815260040160405180910390fd5b5f80611b888784613106565b9150915080611b9d57611b9a82615a27565b91505b8115611bb857611bb86001600160a01b0389168a3085611e95565b5093509150505b935093915050565b5f80611bd383826128fc565b15611bf45760405163793a8f5560e01b815260048101849052602401610318565b83611c1257611c04868685611f64565b505f9250829150611cae9050565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c8286612704565b9050611c58815f6128fc565b15611c795760405163c5e12af560e01b815260048101829052602401610318565b6001600160a01b038089165f908152600160209081526040808320938b16835292815282822089835290522081905590925090505b94509492505050565b5f8115611cf157506001600160a01b038084165f9081526001602090815260408083209386168352928152828220848352905220546103fd565b5f80611cfc85613133565b90925090506001826003811115611d1557611d156159da565b14158015611d3457505f826003811115611d3157611d316159da565b14155b15611d5657848260405163ee07877f60e01b81526004016103189291906159ee565b6040516370a0823160e01b81526001600160a01b0387811660048301525f91611dca918816906370a0823190602401602060405180830381865afa158015611da0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc49190615272565b83613192565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192505f91611e48919089169063dd62ed3e90604401602060405180830381865afa158015611e1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e429190615272565b846131b6565b509050611e558282611ed1565b9450505050506103fd565b611e6d83838360016131f6565b611aae57604051635274afe760e01b81526001600160a01b0384166004820152602401610318565b611ea3848484846001613258565b611ecb57604051635274afe760e01b81526001600160a01b0385166004820152602401610318565b50505050565b5f611edc83836128fc565b611ee657816103fd565b5090919050565b5f80611ef983826128fc565b15611f1a5760405163793a8f5560e01b815260048101849052602401610318565b83611f2a57611c04868685611aed565b6001600160a01b038087165f908152600160209081526040808320938916835292815282822087835290529081205490611c4c82866126a4565b5f805f80611f7186613079565b90925090506001826003811115611f8a57611f8a6159da565b14158015611fa957505f826003811115611fa657611fa66159da565b14155b15611fcb57858260405163ee07877f60e01b81526004016103189291906159ee565b611fd5855f6128fc565b15611ff357604051632d1671a360e11b815260040160405180910390fd5b5f611ffe8683613106565b509050801561201b5761201b6001600160a01b0388168983611e60565b97909650945050505050565b8260600151818151811061203d5761203d6152f6565b60200260200101515f01516001600160a01b031683604001518381518110612067576120676152f6565b60200260200101515f01516001600160a01b031603611aae57604051631cd2f1c760e21b815260040160405180910390fd5b6120a16145f6565b5f6120ab87611880565b60408051600480825260a082019092529192506060915f91816020015b60608152602001906001900390816120c85790505089516040805160038152602081018790526001600160a01b03928316818301529189166060830152608082019052909150816001800381518110612123576121236152f6565b60200260200101819052505f806121598b604001518b81518110612149576121496152f6565b60200260200101515f0151613133565b90925090506001826003811115612172576121726159da565b1415801561219157505f82600381111561218e5761218e6159da565b14155b156121d3578a604001518a815181106121ac576121ac6152f6565b60200260200101515f01518260405163ee07877f60e01b81526004016103189291906159ee565b5f6122238c5f01518d604001518d815181106121f1576121f16152f6565b60200260200101515f01518e604001518e81518110612212576122126152f6565b602002602001015160200151611cb7565b90506122b28c604001518c8151811061223e5761223e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e604001518e81518110612270576122706152f6565b602002602001015160200151845f801b60408051600581526020810196909652858101949094526060850192909252608084015260a083015260c08201905290565b846001600303815181106122c8576122c86152f6565b60200260200101819052505050505f806122f18b606001518a81518110612149576121496152f6565b9092509050600182600381111561230a5761230a6159da565b1415801561232957505f826003811115612326576123266159da565b14155b15612344578a6060015189815181106121ac576121ac6152f6565b5f6123838c5f01518d606001518c81518110612362576123626152f6565b60200260200101515f01518e606001518d81518110612212576122126152f6565b90506123d08c606001518b8151811061239e5761239e6152f6565b60200260200101515f01516001600160a01b03165f1b8360ff165f1b8e606001518d81518110612270576122706152f6565b846001600403815181106123e6576123e66152f6565b60200260200101819052505050506123fe8186612cc3565b9150505f885f01516001600160a01b031690505f808a602001515f01516001600160a01b031663d04dfe236040518060e001604052808e60200151602001516001600160a01b0316815260200161245e87305f9182526020526040902090565b81526020018e602001516040015181526020015f81526020018781526020015f67ffffffffffffffff81111561249657612496614a5b565b6040519080825280602002602001820160405280156124bf578160200160208202803683370190505b5081526020015f6040519080825280602002602001820160405280156124ef578160200160208202803683370190505b508152506040518263ffffffff1660e01b815260040161250f9190615814565b5f60405180830381865afa158015612529573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612550919081019061590c565b9150915060028251101561257c578151604051630fbb8e5560e21b815260040161031891815260200190565b6020820151604083015160608d015180515f91908d9081106125a0576125a06152f6565b602002602001015190505f6125c08f5f0151835f01518460200151611cb7565b90506125cc8382611ed1565b6040805160028152602081018390528082018790526060810190915290935091506125f49050565b86600281518110612607576126076152f6565b60200260200101819052506040518060e001604052808e81526020018c81526020018281526020018381526020018781526020018681526020018481525097505050505050505095945050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d8480612687868686866132c5565b915091505f61269683836133e4565b9a9950505050505050505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613431565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d84806126878686868661345b565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d848061268786868686613998565b82816080015160038151811061274c5761274c6152f6565b6020026020010151600481518110612766576127666152f6565b60200260200101818152505081816080015160048151811061278a5761278a6152f6565b60200260200101516004815181106127a4576127a46152f6565b602002602001018181525050612833815f01515f015182608001516003815181106127d1576127d16152f6565b60200260200101515f815181106127ea576127ea6152f6565b60200260200101515f1c836080015160038151811061280b5761280b6152f6565b6020026020010151600281518110612825576128256152f6565b602002602001015186611bc7565b50506128b8815f01515f01518260800151600481518110612856576128566152f6565b60200260200101515f8151811061286f5761286f6152f6565b60200260200101515f1c8360800151600481518110612890576128906152f6565b60200260200101516002815181106128aa576128aa6152f6565b602002602001015185611eed565b50507f4cb6e22a3e7e651d7cf0376cff48f20f5007a54147777865be7f5f6c38c50f4a3382608001516040516128ef929190615a3f565b60405180910390a1505050565b5f6001600160e01b03838116601b90810b9160e086811d9291861690910b9085901d61292a84848484612fa5565b13979650505050505050565b60c081015151156129b0578051602090810151015160a082015160c083015160405163012c676d60e21b81526001600160a01b03909316926304b19db4926129829290916004016159c2565b5f604051808303815f87803b158015612999575f80fd5b505af11580156129ab573d5f803e3d5ffd5b505050505b5f815f0151602001515f01516001600160a01b031663d04dfe236040518060e00160405280855f015160200151602001516001600160a01b03168152602001612a068660a00151305f9182526020526040902090565b8152602001855f01516020015160400151815260200160018152602001856080015181526020015f67ffffffffffffffff811115612a4657612a46614a5b565b604051908082528060200260200182016040528015612a6f578160200160208202803683370190505b5081526020015f604051908082528060200260200182016040528015612a9f578160200160208202803683370190505b508152506040518263ffffffff1660e01b8152600401612abf9190615814565b5f60405180830381865afa158015612ad9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b00919081019061590c565b9150505f815111156113c2578151602090810151015160a083015160405163012c676d60e21b81526001600160a01b03909216916304b19db491612b489185906004016159c2565b5f604051808303815f87803b158015612b5f575f80fd5b505af1158015612b71573d5f803e3d5ffd5b505050505050565b612b8281613a96565b612ba15780604051630c89984b60e31b81526004016103189190615a60565b50565b60605f612bb18484613ac4565b9050808015612bd257505f3d1180612bd257505f846001600160a01b03163b115b15612be757612bdf613ad7565b9150506102b6565b8015612c1157604051639996b31560e01b81526001600160a01b0385166004820152602401610318565b3d15612c2457612c1f613af0565b612c3d565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b604080516080810182525f808252602082018190529181018290526060810191909152612c718383613afb565b82526040820152612c828284613afb565b6020830152606082015292915050565b5f80516020615c0483398151915254600203612cc157604051633ee5aeb560e01b815260040160405180910390fd5b565b60605f825167ffffffffffffffff811115612ce057612ce0614a5b565b604051908082528060200260200182016040528015612d09578160200160208202803683370190505b5090505f80845111612d1b575f612d21565b83516001015b85516001010190505f8167ffffffffffffffff811115612d4357612d43614a5b565b604051908082528060200260200182016040528015612d7657816020015b6060815260200190600190039081612d615790505b5090505f612d9a604080516002815233602082015230818301526060810190915290565b828281518110612dac57612dac6152f6565b60200260200101819052505f5b8751811015612e09578180600101925050878181518110612ddc57612ddc6152f6565b6020026020010151838381518110612df657612df66152f6565b6020908102919091010152600101612db9565b50855115612f9b57808060010191505083828281518110612e2c57612e2c6152f6565b60200260200101819052505f5b8651811015612f9957612ee8878281518110612e5757612e576152f6565b60200260200101515f0151612ec5612e938a8581518110612e7a57612e7a6152f6565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b898481518110612ed757612ed76152f6565b602002602001015160400151613b64565b612f0857604051630a57f30960e31b815260048101829052602401610318565b868181518110612f1a57612f1a6152f6565b60200260200101515f01516001600160a01b03165f1b858281518110612f4257612f426152f6565b6020026020010181815250508180600101925050868181518110612f6857612f686152f6565b602002602001015160200151838381518110612f8657612f866152f6565b6020908102919091010152600101612e39565b505b5095945050505050565b5f8085158415178187128286121817858414178015612fca5786859250925050611cae565b505f85841315612fde575092949193919260015b8386035f8112604c8213178015613011578215613003575f8994509450505050611cae565b885f94509450505050611cae565b600a82900a8981028a82828161302957613029615a72565b0514613055578415613045575f8b965096505050505050611cae565b8a5f965096505050505050611cae565b841561306a578896509450611cae9350505050565b9550879450611cae9350505050565b5f80613083613bd4565b60405163b7bad1b160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb93899063b7bad1b19060240160408051808303815f875af11580156130d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fd9190615a86565b91509150915091565b5f806001600160e01b038416601b0b60e085901d613125828287613c5f565b9350935050505b9250929050565b5f8061313d613bd4565b604051630782d7e160e01b81526001600160a01b038416600482015273200e12d10bb0c5e4a17e7018f0f1161919bb938990630782d7e1906024016040805180830381865afa1580156130d9573d5f803e3d5ffd5b5f805f61319f8585613dc5565b915091506131ad8282613e0e565b95945050505050565b5f805f805f6131c58787613e47565b9250925092505f806131d78585613e8a565b91509150818380156131e65750815b9650965050505050509250929050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661324c578383151615613240573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166132b45783831516156132a8573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f80851584151780156132dd575f92505f91506133da565b6132e78487615ac6565b91505f6132f388613f62565b90505f6132ff87613f62565b90505f61330c8383613f90565b5090505f6f0785ee10d5da46d900f436a000000000821115613341576f0785ee10d5da46d900f436a000000000820491506025015b670de0b6b3a764000082111561336257670de0b6b3a7640000820491506012015b633b9aca0082111561337b57633b9aca00820491506009015b61271082111561339057612710820491506004015b81156133a457600a82049150600101613390565b6133ae8187615ac6565b95506133d08b8a6133ca87876133c587600a615bc5565b613fac565b89614078565b9097509550505050505b5094509492505050565b5f805f6133f18585613e8a565b9150915080158015613401575081155b1561342957604051638eba4d0760e01b81526004810186905260248101859052604401610318565b509392505050565b5f8061343d8484614118565b909450925061344e86868686613998565b9150915094509492505050565b5f80835f0361348757604051637a97930f60e01b81526004810187905260248101869052604401610318565b855f0361349857505f905080611cae565b5f805f806134a68a8a61416d565b919b50995091506134b7888861416d565b919950975090505f6134c88b613f62565b90505f6134d48a613f62565b90507f161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000604c8183101561389957841561352b57507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b9050604b613871565b6f4b3b4ca85a86c47a098a22400000000083101561365757678ac7230489e800008310156135bb576402540be40083101561358957620186a08310156135795750620186a090506005613832565b506402540be4009050600a613832565b655af3107a40008310156135a85750655af3107a40009050600e613832565b50678ac7230489e8000090506013613832565b6b204fce5e3e2502611000000083101561360d5769152d02c7e14af68000008310156135f6575069152d02c7e14af680000090506017613832565b506b204fce5e3e250261100000009050601c613832565b6d314dc6448d9338c15b0a0000000083101561363c57506d314dc6448d9338c15b0a0000000090506021613832565b506f4b3b4ca85a86c47a098a22400000000090506026613832565b780197d4df19d605767337e9f14d3eec8920e40000000000000083101561374f5773af298d050e4395d69670b12b7f410000000000008310156136ea577172cb5bd86321e38cb6ce6682e800000000008310156136cb57507172cb5bd86321e38cb6ce6682e800000000009050602b613832565b5073af298d050e4395d69670b12b7f4100000000000090506030613832565b76010b46c6cdd6e3e0828f4db456ff0c8ea000000000000083101561372b575076010b46c6cdd6e3e0828f4db456ff0c8ea000000000000090506035613832565b50780197d4df19d605767337e9f14d3eec8920e4000000000000009050603a613832565b7c03b58e88c75313ec9d329eaaa18fb92f75215b171000000000000000008310156137e5577a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000008310156137bd57507a026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000009050603f613832565b507c03b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000090506044613832565b7e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca00000000000000000083101561383257507e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000905060495b81831161384757600a820491505f1901613832565b815f03613871576040516305e51ecb60e01b8152600481018d9052602481018c9052604401610318565b85613899576040516305e51ecb60e01b8152600481018f9052602481018e9052604401610318565b80600160ff1b018d126138b057808d039c506138ee565b600160ff1b9c90038c015f8113156138ee57806001600160ff1b03038b136138db57998a01996138ee565b5f80995099505050505050505050611cae565b5f808e1280156138fd57505f8c135b1561391e57600160ff1b8e01808d13613916575f61391a565b808d035b9150505b8b818f0103975061393b8f8e613935888789613fac565b8b614078565b90995097505f81131561398557604c811315613965575f809a509a50505050505050505050611cae565b80600a0a898161397757613977615a72565b059850885f03613985575f97505b50969850949650611cae95505050505050565b5f80851584151780156139c457865f036139b85784849250925050611cae565b86869250925050611cae565b6139ce87876143c7565b90975095506139dd85856143c7565b9095509350858413156139f1579395929492935b838603604c811115613a0a578787935093505050611cae565b80600a0a8681613a1c57613a1c615a72565b0595505086850180881860ff90811c151589881890911c15168015613a8557876001600160ff1b0303613a6c5760405163d556b11160e01b8152600481018a905260248101899052604401610318565b600a968790059690980586019760019790970196613a89565b8198505b5096979596505050505050565b5f600882511015613aa857505f919050565b506008015167ffffffffffffffff1667ff0a89c674ee78741490565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80613b188460600151856040015161265790919063ffffffff16565b915083604001519050613b38836040015183611ab390919063ffffffff16565b1561312c5782604001519150613b5b8460600151836126d490919063ffffffff16565b90509250929050565b5f836001600160a01b03163b5f03613bc2575f80613b828585614404565b5090925090505f816003811115613b9b57613b9b6159da565b148015613bb95750856001600160a01b0316826001600160a01b0316145b925050506103fd565b613bcd84848461444a565b90506103fd565b73200e12d10bb0c5e4a17e7018f0f1161919bb93893b1580613c2b575073200e12d10bb0c5e4a17e7018f0f1161919bb93893f7f1de7d717526cba131d684e312dedbf0852adef9cced9e36798ae4937f7145d4114155b15612cc1576040516373e6d7b360e01b815273200e12d10bb0c5e4a17e7018f0f1161919bb93896004820152602401610318565b5f805f851215613c8c57604051634a7d166b60e01b81526004810186905260248101859052604401610318565b845f03613c9e57505f90506001611bbf565b8460ff8416850185811215613cd05760405163d556b11160e01b81526004810188905260248101879052604401610318565b5f805f831215613d1c57604c19831215613cf3575f809550955050505050611bbf565b825f03600a0a9150818481613d0a57613d0a615a72565b0495505084029091149150611bbf9050565b5f831315613db557604d831315613d595760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b82600a0a9150815f1981613d6f57613d6f615a72565b04841115613da35760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610318565b5091909102925060019150611bbf9050565b8360019550955050505050611bbf565b5f805f805f613dd48787613e47565b92509250925080613e0257604051636238bcb360e11b81526004810184905260248101839052604401610318565b50909590945092505050565b5f805f613e1b8585613e8a565b9150915080613429576040516322c9f7bb60e01b81526004810186905260248101859052604401610318565b5f808060ff841681036001600160ff1b03861115613e7957600a860460018201600a88065f1493509350935050613e83565b8593509150600190505b9250925092565b5f601b83900b8314838382613eee577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e1000000000000000000860515613ece57620186a0860595506005850194505b8586601b0b14613ee957600a86059550846001019450613ece565b613f04565b855f03613f0457505f92506001915061312c9050565b848560030b14613f47575f851215613f2457505f925082915061312c9050565b60405163d556b11160e01b81526004810183905260248101829052604401610318565b50506001600160e01b03841660e084901b1791509250929050565b5f80821215613f8757600160ff1b8203613f815750600160ff1b919050565b505f0390565b5090565b919050565b5f805f1983850993909202808410938190039390930393915050565b5f805f613fb98686613f90565b91509150815f03613fdd57838181613fd357613fd3615a72565b04925050506103fd565b83821061400e5760405163362ced0960e11b8152600481018790526024810186905260448101859052606401610318565b5f84868809600186198101871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103025f82900382900490920185841190960395909502919093039390930492909217029150509392505050565b5f805f85871812156140f4576001600160ff1b038411156140e1576140a56001600160ff1b03600161529d565b84036140b95750600160ff1b905081611cae565b6140c4600a85615bd0565b6140cd90615bef565b6140d8846001615ac6565b91509150611cae565b6140ea84615bef565b8391509150611cae565b6001600160ff1b0384111561410e576140cd600a85615bd0565b5082905081611cae565b5f80600160ff1b8403614163576001600160ff1b0383036141565760405163d556b11160e01b81526004810185905260248101849052604401610318565b600a840593508260010192505b50505f9190910391565b5f805f845f0361418557505f91508190506001613e83565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b85055f03614372576f4b3b4ca85a86c47a098a22400000000085051580156141e757507f80000000000000000000000000000000000000000000000000000000000000268412155b15614208576f4b3b4ca85a86c47a098a224000000000850294506026840393505b7728c87cb5c89a2571ebfdcb54864ada834a00000000000000850515801561425057507f80000000000000000000000000000000000000000000000000000000000000138412155b1561426957678ac7230489e80000850294506013840393505b7b097edd871cfda3a5697758bf0e3cbb5ac5741c64000000000000000085051580156142b557507f800000000000000000000000000000000000000000000000000000000000000a8412155b156142cb576402540be40085029450600a840393505b7e3899162693736ac531a5a58f1fbb4b746504382ca7e4000000000000000000850515801561431a57507f80000000000000000000000000000000000000000000000000000000000000028412155b15614330576064850294506002840393506142cb565b7546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b850515801561436057506001600160ff1b018412155b1561437257600a850294506001840393505b600a8086029081058614801561438f57506001600160ff1b018512155b1561439e578095506001850394505b50939492935050507546bf5bb0385045767e0f0ef2e7aa1e517e454637d1dd604b1b8305151590565b5f805f805f6143d6878761416d565b92509250925080613e02576040516305e51ecb60e01b81526004810188905260248101879052604401610318565b5f805f835160410361443b576020840151604085015160608601515f1a61442d8882858561449b565b955095509550505050613e83565b505081515f9150600290613e83565b805160408051630b135d3f60e11b8082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156144d457505f91506003905082614559565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614525573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661455057505f925060019150829050614559565b92505f91508190505b9450945094915050565b604051806080016040528061457661458f565b81526020015f81526020015f8152602001606081525090565b6040518060a001604052805f6001600160a01b031681526020016145dd60405180606001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b8152606060208201819052604082018190525f91015290565b6040518060e0016040528061460961458f565b81526020015f81526020015f80191681526020015f8019168152602001606081526020015f8152602001606081525090565b5f6020828403121561464b575f80fd5b81356001600160e01b0319811681146103fd575f80fd5b5f8083601f840112614672575f80fd5b50813567ffffffffffffffff811115614689575f80fd5b6020830191508360208260051b850101111561312c575f80fd5b5f805f604084860312156146b5575f80fd5b833567ffffffffffffffff808211156146cc575f80fd5b9085019060a082880312156146df575f80fd5b909350602085013590808211156146f4575f80fd5b5061470186828701614662565b9497909650939450505050565b5f6020828403121561471e575f80fd5b5035919050565b6001600160a01b0381168114612ba1575f80fd5b8035613f8b81614725565b5f805f805f60808688031215614758575f80fd5b853561476381614725565b94506020860135935060408601359250606086013567ffffffffffffffff81111561478c575f80fd5b61479888828901614662565b969995985093965092949392505050565b5f805f606084860312156147bb575f80fd5b83356147c681614725565b925060208401356147d681614725565b929592945050506040919091013590565b5f805f805f608086880312156147fb575f80fd5b853561480681614725565b9450602086013561481681614725565b935060408601359250606086013567ffffffffffffffff80821115614839575f80fd5b818801915088601f83011261484c575f80fd5b81358181111561485a575f80fd5b89602082850101111561486b575f80fd5b9699959850939650602001949392505050565b5f6020828403121561488e575f80fd5b81356103fd81614725565b5f60c082840312156148a9575f80fd5b50919050565b5f602082840312156148bf575f80fd5b813567ffffffffffffffff8111156148d5575f80fd5b61055684828501614899565b5f805f604084860312156148f3575f80fd5b833567ffffffffffffffff8082111561490a575f80fd5b61491687838801614899565b945060208601359150808211156146f4575f80fd5b5f6020828403121561493b575f80fd5b813567ffffffffffffffff811115614951575f80fd5b8201608081850312156103fd575f80fd5b5f8060208385031215614973575f80fd5b823567ffffffffffffffff811115614989575f80fd5b61499585828601614662565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015614a2457603f19888603018452614a128583516149a1565b945092850192908501906001016149f6565b5092979650505050505050565b5f8060408385031215614a42575f80fd5b8235614a4d81614725565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405290565b6040805190810167ffffffffffffffff81118282101715614a9257614a92614a5b565b60405160a0810167ffffffffffffffff81118282101715614a9257614a92614a5b565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b0757614b07614a5b565b604052919050565b5f82601f830112614b1e575f80fd5b813567ffffffffffffffff811115614b3857614b38614a5b565b614b4b601f8201601f1916602001614ade565b818152846020838601011115614b5f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215614b8b575f80fd5b614b93614a6f565b90508135614ba081614725565b81526020820135614bb081614725565b6020820152604082013567ffffffffffffffff811115614bce575f80fd5b614bda84828501614b0f565b60408301525092915050565b5f67ffffffffffffffff821115614bff57614bff614a5b565b5060051b60200190565b5f60408284031215614c19575f80fd5b614c21614a98565b90508135614c2e81614725565b808252506020820135602082015292915050565b5f82601f830112614c51575f80fd5b81356020614c66614c6183614be6565b614ade565b8083825260208201915060208460061b870101935086841115614c87575f80fd5b602086015b84811015614cac57614c9e8882614c09565b835291830191604001614c8c565b509695505050505050565b5f60a08284031215614cc7575f80fd5b614ccf614abb565b9050614cda82614739565b8152602082013567ffffffffffffffff80821115614cf6575f80fd5b614d0285838601614b7b565b60208401526040840135915080821115614d1a575f80fd5b614d2685838601614c42565b60408401526060840135915080821115614d3e575f80fd5b50614d4b84828501614c42565b6060830152506080820135608082015292915050565b5f614d6e614c6184614be6565b8381529050602080820190600585811b850187811115614d8c575f80fd5b855b81811015614e7957803567ffffffffffffffff80821115614dad575f80fd5b908801906060828c031215614dc0575f80fd5b614dc8614a6f565b8235614dd381614725565b81528287013582811115614de5575f80fd5b8301601f81018d13614df5575f80fd5b8035614e03614c6182614be6565b81815290881b8201890190898101908f831115614e1e575f80fd5b928a01925b82841015614e3c5783358252928a0192908a0190614e23565b848b01525060409150508381013583811115614e56575f80fd5b614e628e828701614b0f565b918301919091525087525050938301938301614d8e565b50505050509392505050565b5f82601f830112614e94575f80fd5b6103fd83833560208501614d61565b5f805f805f6101408688031215614eb8575f80fd5b853567ffffffffffffffff80821115614ecf575f80fd5b614edb89838a01614cb7565b96506020880135915080821115614ef0575f80fd5b614efc89838a01614cb7565b9550614f0b8960408a01614899565b9450610100880135915080821115614f21575f80fd5b614f2d89838a01614e85565b9350610120880135915080821115614f43575f80fd5b50614f5088828901614e85565b9150509295509295909350565b5f6102b63683614cb7565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135614f9c81614725565b6001600160a01b039081168452602083013590614fb882614725565b166020840152604082013536839003601e19018112614fd5575f80fd5b820160208101903567ffffffffffffffff811115614ff1575f80fd5b803603821315614fff575f80fd5b606060408601526131ad606086018284614f68565b5f808335601e19843603018112615029575f80fd5b830160208101925035905067ffffffffffffffff811115615048575f80fd5b8060061b360382131561312c575f80fd5b8183525f60208085019450825f5b8581101561509f57813561507a81614725565b6001600160a01b03168752818301358388015260409687019690910190600101615067565b509495945050505050565b5f6001600160a01b0380861683528460208401526060604084015283356150d081614725565b166060830152602083013536849003605e190181126150ed575f80fd5b60a060808401526151046101008401858301614f90565b90506151136040850185615014565b605f19808685030160a087015261512b848385615059565b935061513a6060880188615014565b93509150808685030160c087015250615154838383615059565b92505050608084013560e084015280915050949350505050565b5f61517b614c6184614be6565b80848252602080830192508560051b850136811115615198575f80fd5b855b8181101561522257803567ffffffffffffffff808211156151b9575f80fd5b8189019150604082360312156151cd575f80fd5b6151d5614a98565b8235828111156151e3575f80fd5b6151ef36828601614b7b565b8252508583013582811115615202575f80fd5b61520e36828601614e85565b82880152508752505093820193820161519a565b50919695505050505050565b5f6001600160a01b03808916835280881660208401525085604083015284606083015260a0608083015261526660a083018486614f68565b98975050505050505050565b5f60208284031215615282575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102b6576102b6615289565b5f808335601e198436030181126152c5575f80fd5b83018035915067ffffffffffffffff8211156152df575f80fd5b6020019150600581901b360382131561312c575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e1983360301811261531e575f80fd5b9190910192915050565b5f8235609e1983360301811261531e575f80fd5b5f808335601e19843603018112615351575f80fd5b83018035915067ffffffffffffffff82111561536b575f80fd5b6020019150600681901b360382131561312c575f80fd5b5f60808236031215615392575f80fd5b6040516080810167ffffffffffffffff82821081831117156153b6576153b6614a5b565b8160405284359150808211156153ca575f80fd5b6153d636838701614cb7565b8352602085013560208401526040850135604084015260608501359150808211156153ff575f80fd5b5061540c36828601614e85565b60608301525092915050565b5f60208284031215615428575f80fd5b813580151581146103fd575f80fd5b5f815180845260208085019450602084015f5b8381101561509f57815180516001600160a01b03168852830151838801526040909601959082019060010161544a565b5f6001600160a01b03808351168452602083015160a060208601528181511660a08601528160208201511660c08601526040810151915050606060e08501526154c76101008501826149a1565b9050604083015184820360408601526154e08282615437565b915050606083015184820360608601526154fa8282615437565b915050608083015160808501528091505092915050565b5f815180845260208085019450602084015f5b8381101561509f57815187529582019590820190600101615524565b5f6001600160a01b0380871683526020608081850152865160808086015261556c61010086018261547a565b90508188015160a086015260408089015160c08701526060808a0151607f198885030160e08901528381518086528686019150868160051b87010187840193505f5b8281101561560857601f1988830301845284518a815116835289810151878b8501526155dc88850182615511565b91890151848303858b01529190506155f481836149a1565b968b0196958b0195935050506001016155ae565b5080995050505050505050505083604083015282606083015295945050505050565b5f808335601e1984360301811261563f575f80fd5b83018035915067ffffffffffffffff821115615659575f80fd5b60200191503681900382131561312c575f80fd5b5f8235605e1983360301811261531e575f80fd5b5f6102b63683614b7b565b5f6040828403121561569c575f80fd5b6103fd8383614c09565b6001600160a01b0384168152826020820152606060408201525f6131ad606083018461547a565b6001600160a01b0385168152836020820152606060408201525f6156f5606083018486614f68565b9695505050505050565b5f6103fd368484614d61565b828482375f8382015f815283518060208601835e5f910190815295945050505050565b5f6101206001600160a01b03871683528060208401526157508184018761547a565b90508281036040840152615764818661547a565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b602081525f6103fd602083018461547a565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561580757601f198684030189526157f5838351615511565b988401989250908301906001016157d9565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201525f604083015160e0606084015261584d6101008401826149a1565b9050606084015160808401526080840151601f19808584030160a086015261587583836157bc565b925060a08601519150808584030160c08601526158928383615511565b925060c08601519150808584030160e0860152506131ad8282615511565b5f82601f8301126158bf575f80fd5b815160206158cf614c6183614be6565b8083825260208201915060208460051b8701019350868411156158f0575f80fd5b602086015b84811015614cac57805183529183019183016158f5565b5f806040838503121561591d575f80fd5b825167ffffffffffffffff80821115615934575f80fd5b818501915085601f830112615947575f80fd5b81516020615957614c6183614be6565b82815260059290921b84018101918181019089841115615975575f80fd5b948201945b838610156159935785518252948201949082019061597a565b918801519196509093505050808211156159ab575f80fd5b506159b8858286016158b0565b9150509250929050565b828152604060208201525f6105566040830184615511565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03831681526040810160048310615a1a57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60018201615a3857615a38615289565b5060010190565b6001600160a01b0383168152604060208201525f61055660408301846157bc565b602081525f6103fd60208301846149a1565b634e487b7160e01b5f52601260045260245ffd5b5f8060408385031215615a97575f80fd5b825160048110615aa5575f80fd5b602084015190925060ff81168114615abb575f80fd5b809150509250929050565b8082018281125f83128015821682158216171561136457611364615289565b600181815b80851115615b1f57815f1904821115615b0557615b05615289565b80851615615b1257918102915b93841c9390800290615aea565b509250929050565b5f82615b35575060016102b6565b81615b4157505f6102b6565b8160018114615b575760028114615b6157615b7d565b60019150506102b6565b60ff841115615b7257615b72615289565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715615ba0575081810a6102b6565b615baa8383615ae5565b805f1904821115615bbd57615bbd615289565b029392505050565b5f6103fd8383615b27565b5f82615bea57634e487b7160e01b5f52601260045260245ffd5b500490565b5f600160ff1b8201613f8157613f8161528956fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00","sourceMap":"7948:40830:377:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1528:207:372;;;;;;:::i;:::-;;:::i;:::-;;;470:14:543;;463:22;445:41;;433:2;418:18;1528:207:372;;;;;;;;15877:721:377;;;;;;:::i;:::-;;:::i;10805:134::-;;;;;;:::i;:::-;10877:4;10900:18;;;;;;;;;;;4724:1;10900:32;;10805:134;11136:1307;;;;;;:::i;:::-;;:::i;:::-;;9434:169;;;;;;:::i;:::-;;:::i;:::-;;;3555:25:543;;;3543:2;3528:18;9434:169:377;3382:204:543;1781:1572:372;;;;;;:::i;:::-;;:::i;12480:1456:377:-;;;;;;:::i;:::-;;:::i;3685:140:372:-;;;;;;:::i;:::-;;:::i;17937:7866:377:-;;;;;;:::i;:::-;;:::i;:::-;;;;5781:25:543;;;5837:2;5822:18;;5815:34;;;;5754:18;17937:7866:377;5553:302:543;13973:1867:377;;;;;;:::i;:::-;;:::i;17005:707::-;;;;;;:::i;:::-;;:::i;:::-;;;;7285:14:543;;7278:22;7260:41;;7332:2;7317:18;;7310:34;;;;7360:18;;;7353:34;7248:2;7233:18;17005:707:377;7010:383:543;1224:482:17;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10976:123:377:-;;;;;;:::i;:::-;;:::i;3399:110:372:-;;;;;;:::i;:::-;3467:7;3399:110;;;;;25840:4078:377;;;;;;:::i;:::-;;:::i;1528:207:372:-;1613:4;-1:-1:-1;;;;;;1636:52:372;;-1:-1:-1;;;1636:52:372;;:92;;-1:-1:-1;;;;;;;;;;829:40:25;;;1692:36:372;1629:99;1528:207;-1:-1:-1;;1528:207:372:o;15877:721:377:-;16002:17;3023:21:19;:19;:21::i;:::-;16053:11:377::1;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;-1:-1:-1::0;;;;;16039:25:377::1;:10;-1:-1:-1::0;;;;;16039:25:377::1;;16035:89;;16101:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;16087:26;::::0;-1:-1:-1;;;16087:26:377;;-1:-1:-1;;;;;18041:55:543;;;16087:26:377::1;::::0;::::1;18023:74:543::0;17996:18;;16087:26:377::1;;;;;;;;16035:89;16133:17;16153:12;:10;:5:::0;:10:::1;:::i;:::-;;:12::i;:::-;16179:7;:18:::0;;;::::1;::::0;;;;;;;16133:32;;-1:-1:-1;;;16179:32:377;16175:417:::1;;4928:1;16260:18:::0;;;::::1;::::0;;;;;;;:31;;;;16310:43;16242:4:::1;::::0;-1:-1:-1;16310:43:377::1;::::0;::::1;::::0;16324:10:::1;::::0;16268:9;;16347:5;;16310:43:::1;:::i;:::-;;;;;;;;3152:4:114::0;3146:11;;3184:1;3170:16;;3217:4;3206:16;;3199:27;;;16513:10:377::1;3246:16:114::0;;;3239:27;3064:22;3292:16;;3279:30;;;16368:213:377::1;::::0;16403:142:::1;::::0;16452:75:::1;2770:4:115::0;2764:11;;2803:1;2788:17;;2837:4;2825:17;;2818:28;;;;2872:17;;;2859:31;;2764:11;2615:291;16403:142:377::1;16368:213;16563:4:::0;;16368:213:::1;:::i;:::-;:17;:213::i;:::-;16025:573;3065:20:19::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;15877:721:377;;;;;:::o;11136:1307::-;3023:21:19;:19;:21::i;:::-;11292:10:377::1;11304:5;11311:7;48715:43;48731:10;48743:5;48750:7;48715:15;:43::i;:::-;11339:31:::2;:13:::0;11367:1:::2;11339:16;:31::i;:::-;11334:115;;11393:45;::::0;-1:-1:-1;;;11393:45:377;;11411:10:::2;11393:45;::::0;::::2;23981:34:543::0;-1:-1:-1;;;;;24051:15:543;;24031:18;;;24024:43;24083:18;;;24076:34;;;23893:18;;11393:45:377::2;23718:398:543::0;11334:115:377::2;11460:28;11490:14:::0;11508:44:::2;11519:10;11531:5;11538:13;11508:10;:44::i;:::-;11760:59;::::0;;11770:10:::2;24413:34:543::0;;-1:-1:-1;;;;;24483:15:543;;24478:2;24463:18;;24456:43;24515:18;;;24508:34;;;24573:2;24558:18;;24551:34;;;11459:93:377;;-1:-1:-1;11459:93:377;-1:-1:-1;11760:59:377::2;::::0;24339:3:543;24324:19;11760:59:377::2;;;;;;;11831:19;11852:18:::0;11874:63:::2;11895:10;11907:5;11914:7;11923:13;11874:20;:63::i;:::-;11830:107:::0;;-1:-1:-1;11830:107:377;-1:-1:-1;11952:16:377;;11948:489:::2;;5849:4:114::0;5843:11;;5881:1;5867:16;;-1:-1:-1;;;;;12127:23:377;::::2;5914:4:114::0;5903:16;;5896:27;5943:16;;;5936:27;;;5757:22;5983:16;;5976:27;;;6034:4;6023:16;;6016:27;;;12332:17:377::2;::::0;::::2;6074:4:114::0;6063:16;;6056:27;6120:4;6109:16;;6096:30;;;11984:442:377::2;::::0;12019:371:::2;::::0;12068:304:::2;5636:506:114::0;12019:371:377::2;11984:442;12408:4:::0;;11984:442:::2;:::i;:::-;11324:1119;;;;3054:1:19::1;;;3065:20:::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;11136:1307:377;;;;;:::o;9434:169::-;9536:5;9560:36;9574:5;9581;9588:7;9560:13;:36::i;:::-;9553:43;9434:169;-1:-1:-1;;;;9434:169:377:o;1781:1572:372:-;1935:4;1955:53;-1:-1:-1;;;;;1955:26:372;;1990:8;2001:6;1955:26;:53::i;:::-;2036:64;;-1:-1:-1;;;2036:64:372;;2019:14;;-1:-1:-1;;;;;2036:20:372;;;;;:64;;2057:10;;2069:5;;2076:6;;2019:14;;2095:4;;;;2036:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2019:81;;453:45:135;2114:6:372;:40;2110:111;;2177:33;;-1:-1:-1;;;2177:33:372;;;;;3555:25:543;;;3528:18;;2177:33:372;3382:204:543;2110:111:372;3240:84;3279:8;3298:4;3305:18;1138:1;3305:6;:18;:::i;:::-;-1:-1:-1;;;;;3240:30:372;;;:84;;:30;:84::i;:::-;-1:-1:-1;3342:4:372;;1781:1572;-1:-1:-1;;;;;;1781:1572:372:o;12480:1456:377:-;3023:21:19;:19;:21::i;:::-;12636:10:377::1;12648:5;12655:7;48715:43;48731:10;48743:5;48750:7;48715:15;:43::i;:::-;12678:20:::2;::::0;;;12808:30:::2;:12:::0;12678:20;12808:15:::2;:30::i;:::-;12803:129;;12865:52;::::0;-1:-1:-1;;;12865:52:377;;12890:10:::2;12865:52;::::0;::::2;23981:34:543::0;-1:-1:-1;;;;;24051:15:543;;24031:18;;;24024:43;24083:18;;;24076:34;;;23893:18;;12865:52:377::2;23718:398:543::0;12803:129:377::2;12945:25;12973:41;12987:10;12999:5;13006:7;12973:13;:41::i;:::-;12945:69:::0;-1:-1:-1;13045:37:377::2;:12:::0;12945:69;13045:16:::2;:37::i;:::-;13028:54;;13128:64;13149:10;13161:5;13168:7;13177:14;13128:20;:64::i;:::-;13096:96:::0;;-1:-1:-1;13096:96:377;-1:-1:-1;13207:29:377::2;13286:45;13297:10;13309:5:::0;13316:14;13286:10:::2;:45::i;:::-;13250:81;;;;;;;;13350:91;13361:10;13373:5;13380:7;13389:12;13403:14;13419:21;13350:91;;;;;;;;;;-1:-1:-1::0;;;;;26264:15:543;;;26246:34;;26316:15;;;;26311:2;26296:18;;26289:43;26363:2;26348:18;;26341:34;;;;26406:2;26391:18;;26384:34;26449:3;26434:19;;26427:35;26493:3;26478:19;;26471:35;;;;26172:3;26157:19;;25844:668;13350:91:377::2;;;;;;;;-1:-1:-1::0;;7001:4:114;6995:11;;7033:1;7019:16;;-1:-1:-1;;;;;13542:23:377;::::2;7066:4:114::0;7055:16;;7048:27;7095:16;;;7088:27;;;6909:22;7135:16;;7128:27;;;7186:4;7175:16;;7168:27;;;7226:4;7215:16;;7208:27;;;13730:17:377::2;::::0;::::2;7266:4:114::0;7255:16;;7248:27;2803:1:115;7312:4:114;7301:16;;2788:17:115;;;2825;;;2818:28;;;2872:17;;;2859:31;;;6995:11:114;13855:16:377;;13851:79:::2;;13887:32;13905:7:::0;13887:32:::2;13914:4:::0;;13887:32:::2;:::i;:::-;12668:1268;;;;;;3054:1:19::1;;;3065:20:::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3685:140:372;3780:38;;-1:-1:-1;;;3780:38:372;;3812:4;3780:38;;;18023:74:543;3754:7:372;;-1:-1:-1;;;;;3780:23:372;;;;;17996:18:543;;3780:38:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17937:7866:377:-;18049:21;18072:22;3023:21:19;:19;:21::i;:::-;18114:13:377::1;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;:20;;18138:1;18114:25:::0;18110:73:::1;;18162:10;;-1:-1:-1::0;;;18162:10:377::1;;;;;;;;;;;18110:73;18193:40;;:::i;:::-;18243:20;;:::i;:::-;18273:23;18299:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;18313:1;18299:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:22;::::0;;::::1;:::i;:::-;:34;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;18334:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;18348:1;18334:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:29;;;18299:65;;;;;;;:::i;:::-;:71;::::0;::::1;:65;::::0;;::::1;;:71:::0;;::::1;::::0;-1:-1:-1;18299:71:377::1;:::i;:::-;18273:97:::0;-1:-1:-1;18380:24:377::1;18407:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;18421:1;18407:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:22;::::0;;::::1;:::i;:::-;:35;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;18443:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;18457:1;18443:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:30;;;18407:67;;;;;;;:::i;:::-;:73;::::0;::::1;:67;::::0;;::::1;;:73:::0;;::::1;::::0;-1:-1:-1;18407:73:377::1;:::i;:::-;18380:100:::0;-1:-1:-1;18908:57:377::1;18989:14;19006:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;19100:4;19094:11:::0;;19215:4:::1;19211:1;19199:14:::0;;;::::1;19195:25:::0;::::1;19186:35:::0;::::1;19173:49:::0;;;19094:11;-1:-1:-1;19295:16:377;::::1;;::::0;-1:-1:-1;19330:34:377::1;::::0;-1:-1:-1;19295:16:377;-1:-1:-1;19330:19:377::1;:34::i;:::-;19325:96;;19391:15;;-1:-1:-1::0;;;19391:15:377::1;;;;;;;;;;;19325:96;19435:9;19462:4856;19473:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;:20;;19469:1;:24;:62;;;;-1:-1:-1::0;19497:34:377::1;:16:::0;19528:1:::1;19497:19;:34::i;:::-;19462:4856;;;19569:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;19583:1;19569:16;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;19551:34;;;:::i;:::-;;;19611:15;:21;;;19603:29;;19852:15;-1:-1:-1::0;;;;;19795:72:377::1;:5;:17;;;19813:15;:28;;;19795:47;;;;;;;;:::i;:::-;;;;;;;:53;;;-1:-1:-1::0;;;;;19795:72:377::1;;;19794:179;;;;19956:16;-1:-1:-1::0;;;;;19897:75:377::1;:5;:18;;;19916:15;:29;;;19897:49;;;;;;;;:::i;:::-;;;;;;;:55;;;-1:-1:-1::0;;;;;19897:75:377::1;;;19794:179;19769:286;;;20021:15;;-1:-1:-1::0;;;20021:15:377::1;;;;;;;;;;;19769:286;20073:87;20093:5;20100:15;:28;;;20130:15;:29;;;20073:19;:87::i;:::-;20179:17;20199:12;:5;:10;:12::i;:::-;4928:1;20233:18:::0;;;::::1;::::0;;;;;;;20179:32;;-1:-1:-1;20229:4003:377::1;;20320:11:::0;;20294:49:::1;::::0;;20308:10:::1;23981:34:543::0;;-1:-1:-1;;;;;24051:15:543;;;24046:2;24031:18;;24024:43;24083:18;;24076:34;;;20294:49:377::1;::::0;23908:2:543;23893:18;20294:49:377::1;;;;;;;20229:4003;;;20390:46;20439:269;20481:5;20512:15;:28;;;20566:15;:29;;;20621:10;20657:15;:29;;;20439:16;:269::i;:::-;21078:26;::::0;::::1;::::0;20390:318;;-1:-1:-1;21078:52:377::1;::::0;21108:21:::1;::::0;::::1;;21078:29;:52::i;:::-;21074:3140;;;21196:11:::0;;21163:56:::1;::::0;;21184:10:::1;23981:34:543::0;;-1:-1:-1;;;;;24051:15:543;;;24046:2;24031:18;;24024:43;24083:18;;24076:34;;;21163:56:377::1;::::0;23908:2:543;23893:18;21163:56:377::1;;;;;;;;21074:3140;;;21252:28;::::0;::::1;::::0;-1:-1:-1;;;;;42905:12:91;21248:2966:377::1;;21350:11:::0;;21322:51:::1;::::0;;21338:10:::1;23981:34:543::0;;-1:-1:-1;;;;;24051:15:543;;;24046:2;24031:18;;24024:43;24083:18;;24076:34;;;21322:51:377::1;::::0;23908:2:543;23893:18;21322:51:377::1;23718:398:543::0;21248:2966:377::1;21428:16;21470:17:::0;21517:6:::1;:16;;;;;;;;;;:::i;:::-;21513:1547;;;21732:28;::::0;::::1;::::0;:50:::1;::::0;21765:16;21732:32:::1;:50::i;:::-;22354:26;::::0;::::1;::::0;21719:63;;-1:-1:-1;22354:42:377::1;::::0;21719:63;22354:30:::1;:42::i;:::-;22340:56:::0;-1:-1:-1;22446:32:377::1;:16:::0;22467:10;22446:20:::1;:32::i;:::-;22427:51;;21513:1547;;;22626:19;22648:60;22679:18;:28;;;22648:18;:26;;;:30;;:60;;;;:::i;:::-;22626:82:::0;-1:-1:-1;22752:35:377::1;22626:82:::0;22770:16;22752:17:::1;:35::i;:::-;22738:49;;22907:43;22923:18;:26;;;22907:11;:15;;:43;;;;:::i;:::-;22894:56:::0;-1:-1:-1;23000:33:377::1;:16:::0;23021:11;23000:20:::1;:33::i;:::-;22981:52;;22511:549;21513:1547;23105:33;:16:::0;23126:11;23105:20:::1;:33::i;:::-;23086:52:::0;-1:-1:-1;23182:31:377::1;:15:::0;23202:10;23182:19:::1;:31::i;:::-;23164:49;;23240:58;23254:11;23267:10;23279:18;23240:13;:58::i;:::-;23329:65;23341:10;23353:15;23370:10;23382:11;23329:65;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;23864:34:377;;23900:1:::1;23860:42;23931:46:::0;;;24139:4:::1;24124:20;24091:54:::0;::::1;24084:82:::0;;;21248:2966:::1;20368:3864;20229:4003;-1:-1:-1::0;24282:3:377::1;;19462:4856;;;-1:-1:-1::0;24352:27:377::1;::::0;-1:-1:-1;24382:16:377::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:53;;24419:16;24382:53;;;24401:15;24382:53;24352:83:::0;-1:-1:-1;24453:42:377::1;24352:83:::0;24478:16;::::1;24453:24;:42::i;:::-;24449:138;;;24522:50;::::0;-1:-1:-1;;;24522:50:377;;24532:16;::::1;24522:50;::::0;::::1;5781:25:543::0;5822:18;;;5815:34;;;5754:18;;24522:50:377::1;5553:302:543::0;24449:138:377::1;24338:259;25280:57;25291:10;25303:16;25321:15;25280:10;:57::i;:::-;-1:-1:-1::0;25373:1:377::1;::::0;-1:-1:-1;25352:11:377::1;;::::0;::::1;:6:::0;:11:::1;:::i;:::-;:18;;:22;25348:199;;;25411:10;25390:63;25454:16:::0;25472:15;25489;25506:16;25524:11:::1;;::::0;::::1;:6:::0;:11:::1;:::i;:::-;25390:146;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25348:199;25557:57;25568:10;25580:15;25597:16;25557:10;:57::i;:::-;;;25654:9;25649:138;25673:27;:34;25669:1;:38;25649:138;;;25732:40;25741:27;25769:1;25741:30;;;;;;;;:::i;:::-;;;;;;;25732:8;:40::i;:::-;25709:3;;25649:138;;;;18100:7703;;;;;3065:20:19::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;17937:7866:377;;;:::o;13973:1867::-;14107:4;3023:21:19;:19;:21::i;:::-;14131:23:377::1;;::::0;::::1;:11:::0;:23:::1;:::i;:::-;:30;;14165:1;14131:35:::0;14127:88:::1;;14189:15;;-1:-1:-1::0;;;14189:15:377::1;;;;;;;;;;;14127:88;14228:24;;::::0;::::1;:11:::0;:24:::1;:::i;:::-;:31;;14263:1;14228:36:::0;14224:90:::1;;14287:16;;-1:-1:-1::0;;;14287:16:377::1;;;;;;;;;;;14224:90;14524:134;::::0;;::::1;::::0;::::1;::::0;;;14545:10:::1;14524:134:::0;;14501:20:::1;::::0;14524:134:::1;::::0;::::1;14557:21;:11:::0;;:21:::1;:::i;:::-;14524:134;;;:::i;:::-;;;;;14580:11;:23;;;;;;;;:::i;:::-;14524:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;-1:-1:-1::0;;;14524:134:377;;;-1:-1:-1;;14524:134:377::1;;14605:24;;::::0;::::1;:11:::0;:24:::1;:::i;:::-;14524:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14631:11;:17;;;14524:134;;::::0;14501:157:::1;;14668:17;14688:12;:5;:10;:12::i;:::-;14711:16;14730:18:::0;;;::::1;::::0;;;;;;;14668:32;;-1:-1:-1;14730:32:377;14848:957;::::1;;;15125:7;:18:::0;;;::::1;::::0;;;;;;;;4724:1:::1;15125:31:::0;;15186:11;;15175:41;;::::1;::::0;::::1;::::0;15133:9;;15186:5;;15175:41:::1;:::i;:::-;;;;;;;;15413:1;15387:16;;::::0;::::1;:11:::0;:16:::1;:::i;:::-;:23;;:27;15383:184;;;15434:45;15462:16;;::::0;::::1;:11:::0;:16:::1;:::i;:::-;15434:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;15434:27:377::1;::::0;-1:-1:-1;;;15434:45:377:i:1;:::-;15511:11:::0;;15502:50:::1;::::0;15524:9;15535:16:::1;;::::0;::::1;:11:::0;:16:::1;:::i;:::-;15502:50;;;;;;;;;:::i;:::-;;;;;;;;15383:184;3152:4:114::0;3146:11;;3184:1;3170:16;;3217:4;3206:16;;3199:27;;;15726:10:377::1;3246:16:114::0;;;3239:27;3064:22;3292:16;;3279:30;;;15581:213:377::1;::::0;15616:142:::1;::::0;15665:75:::1;3000:325:114::0;15616:142:377::1;15581:213;15776:4:::0;;15581:213:::1;:::i;:::-;15822:11:::0;-1:-1:-1;;;3065:20:19;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;17005:707:377;17074:4;;;;17124:24;:17;:11;;:17;:::i;:::-;:22;;;:::i;:24::-;17163:7;:18;;;;;;;;;;;17104:44;;-1:-1:-1;4724:1:377;17163:32;17159:107;;-1:-1:-1;17219:5:377;;-1:-1:-1;17219:5:377;;-1:-1:-1;17219:5:377;;-1:-1:-1;17211:44:377;;17159:107;17276:91;17296:17;:11;;:17;:::i;:::-;17276:91;;;:::i;:::-;17315:11;:24;;;17341:11;:25;;;17276:19;:91::i;:::-;17378:46;17427:197;17457:17;:11;;:17;:::i;:::-;17427:197;;;:::i;:::-;17488:24;;;;17526:25;;;;17565:10;17589:25;;;;17488:11;17589:25;:::i;:::-;17427:197;;;:::i;:::-;:16;:197::i;:::-;17378:246;;17642:4;17648:18;:28;;;17678:18;:26;;;17634:71;;;;;;;;17005:707;;;;;;:::o;1224:482:17:-;1388:12;;;1324:20;1388:12;;;;;;;;1290:22;;1499:4;1487:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:34;;1526:9;1521:155;1541:15;;;1521:155;;;1590:75;1627:4;1647;;1652:1;1647:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1656;1634:30;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1590:28;:75::i;:::-;1577:7;1585:1;1577:10;;;;;;;;:::i;:::-;;;;;;;;;;:88;1558:3;;1521:155;;;;1685:14;1224:482;;;;:::o;10976:123:377:-;3023:21:19;:19;:21::i;:::-;11067:18:377::1;::::0;;11083:1:::1;11067:18:::0;;;::::1;::::0;::::1;::::0;;;11049:43:::1;::::0;11067:18:::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;11049:43:377::1;11087:4:::0;;11049:43:::1;:::i;:::-;3065:20:19::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;3065:20;10976:123:377;;:::o;25840:4078::-;3023:21:19;:19;:21::i;:::-;26148:14:377;;26128:16;;-1:-1:-1;;;;;26128:34:377;;::::1;::::0;::::1;::::0;26124:91:::1;;26189:11;;-1:-1:-1::0;;;26189:11:377::1;;;;;;;;;;;26124:91;26343:8;:20;;;26364:11;:27;;;26343:49;;;;;;;;:::i;:::-;;;;;;;:55;;;-1:-1:-1::0;;;;;26250:148:377::1;:10;:23;;;26274:11;:30;;;26250:55;;;;;;;;:::i;:::-;;;;;;;:61;;;-1:-1:-1::0;;;;;26250:148:377::1;;;26249:324;;;-1:-1:-1::0;26513:22:377::1;::::0;::::1;::::0;:53;;26536:29;::::1;::::0;26513:53;::::1;;;;;:::i;:::-;;;;;;;:59;;;-1:-1:-1::0;;;;;26424:148:377::1;:8;:21;;;26446:11;:28;;;26424:51;;;;;;;;:::i;:::-;;;;;;;:57;;;-1:-1:-1::0;;;;;26424:148:377::1;;;26249:324;26228:415;;;26613:15;;-1:-1:-1::0;;;26613:15:377::1;;;;;;;;;;;26228:415;26761:10;:23;;;26785:11;:30;;;26761:55;;;;;;;;:::i;:::-;;;;;;;:61;;;-1:-1:-1::0;;;;;26678:144:377::1;:10;:22;;;26701:11;:29;;;26678:53;;;;;;;;:::i;:::-;;;;;;;:59;;;-1:-1:-1::0;;;;;26678:144:377::1;::::0;26657:236:::1;;26862:16;;-1:-1:-1::0;;;26862:16:377::1;;;;;;;;;;;26657:236;4928:1;27118:7:::0;:26:::1;27126:17;:10;:15;:17::i;:::-;27118:26;;;;;;;;;;;;:40:::0;27114:170:::1;;27183:62;27197:10;27209;:16;;;27227:17;:10;:15;:17::i;:::-;27183:62;::::0;;-1:-1:-1;;;;;23999:15:543;;;23981:34;;24051:15;;;;24046:2;24031:18;;24024:43;24083:18;;;24076:34;23908:2;23893:18;27183:62:377::1;;;;;;;27263:7;;27114:170;4928:1;27301:7:::0;:24:::1;27309:15;:8;:13;:15::i;:::-;27301:24;;;;;;;;;;;;:38:::0;27297:164:::1;;27364:58;27378:10;27390:8;:14;;;27406:15;:8;:13;:15::i;27297:164::-;27532:54;27540:10;27552;27564:8;27574:11;27532:54;;;;;;;;;:::i;:::-;;;;;;;;27606:51;27660:147;27690:10;27702:11;:29;;;27733:11;:30;;;27765:8;:14;;;27781:16;27660;:147::i;:::-;27606:201;;27817:49;27869:145;27899:8;27909:11;:27;;;27938:11;:28;;;27968:10;:16;;;27986:18;27869:16;:145::i;:::-;27817:197;;28025:42;28082:73;28108:23;28133:21;28082:25;:73::i;:::-;28025:130;;28166:97;28180:16;:27;;;28209:16;:28;;;28239:23;28166:13;:97::i;:::-;28273:91;28287:16;:25;;;28314:16;:26;;;28342:21;28273:13;:91::i;:::-;28442:25;::::0;::::1;::::0;28409:28;;28389:17:::1;::::0;28409:59:::1;::::0;:28;:32:::1;:59::i;:::-;28389:79;;28482:15;28500:59;28531:16;:27;;;28500:16;:26;;;:30;;:59;;;;:::i;:::-;28482:77:::0;-1:-1:-1;28766:29:377::1;:11:::0;28792:1:::1;28766:14;:29::i;:::-;:60;;;-1:-1:-1::0;28799:27:377::1;:9:::0;28823:1:::1;28799:12;:27::i;:::-;28762:122;;;28853:16;;-1:-1:-1::0;;;28853:16:377::1;;;;;;;;;;;28762:122;28898:218;28936:10;28964;:23;;;28988:11;:30;;;28964:55;;;;;;;;:::i;:::-;;;;;;;:61;;;29043:11;:30;;;29091:11;28898:20;:218::i;:::-;;;29130:210;29168:10;29196:8;:21;;;29218:11;:28;;;29196:51;;;;;;;;:::i;:::-;;;;;;;:57;;;29271:11;:28;;;29317:9;29130:20;:210::i;:::-;-1:-1:-1::0;;29366:42:377::1;::::0;;29379:10:::1;39957:74:543::0;;40067:13;;40062:2;40047:18;;;40040:41;;;;40123:15;;40117:22;40097:18;;;40090:50;40182:15;;;40176:22;40171:2;40156:18;;;40149:50;;;;40242:15;;40236:22;40230:3;40215:19;;40208:51;29366:42:377::1;::::0;-1:-1:-1;39944:3:543;39929:19;;-1:-1:-1;29366:42:377::1;;;;;;;29419:33;29428:23;29419:8;:33::i;:::-;29462:31;29471:21;29462:8;:31::i;:::-;29785:28:::0;;-1:-1:-1;;;;;42905:12:91;42898:20;29785:76:377::1;;;;-1:-1:-1::0;29826:26:377::1;::::0;::::1;::::0;-1:-1:-1;;;;;42905:12:91;42898:20;29826:35:377::1;29781:131;;;29884:17;;-1:-1:-1::0;;;29884:17:377::1;;;;;;;;;;;29781:131;26100:3818;;;3054:1:19;3065:20:::0;2365:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292;;3872:25;:23;:25::i;:::-;2407:1;-1:-1:-1;;;;;;;;;;;3972:62:19;3749:292::o;661:120:386:-;720:7;767:5;756:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;746:28;;;;;;739:35;;661:120;;;:::o;5461:1388:387:-;5609:10;5546:24;1478:25:79;;;5726:4:387;1523::79;1516:20;;;1584:4;1571:18;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5802:18:387;;;;;;;;5867:16;;;;;;;;;1571:18:79;;-1:-1:-1;;5802:18:387;;5893:950;5917:4;:11;5913:1;:15;5893:950;;;5956:4;5961:1;5956:7;;;;;;;;:::i;:::-;;;;;;;5949:14;;6014:1;5981:4;:14;;;:23;;;:30;:34;5977:856;;;6096:23;6123:4;:14;;;:26;;;-1:-1:-1;;;;;6123:53:387;;6202:470;;;;;;;;6246:4;:14;;;:20;;;-1:-1:-1;;;;;6202:470:387;;;;;6307:18;6202:470;;;;6365:4;:14;;;:23;;;6202:470;;;;6450:1;6202:470;;;;6491:45;6508:7;6517:4;:18;;;6491:16;:45::i;:::-;6202:470;;;;6574:10;6202:470;;;;6628:17;6202:470;;;6123:571;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6123:571:387;;;;;;;;;;;;:::i;:::-;6093:601;;;6732:1;6716:6;:13;:17;6712:107;;;6757:14;;:20;;;:43;;-1:-1:-1;;;6757:43:387;;-1:-1:-1;;;;;6757:24:387;;;;;;:43;;6782:9;;6793:6;;6757:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6712:107;6017:816;5977:856;5930:3;;5893:950;;;;5536:1313;;;;;5461:1388;;:::o;48427:196:377:-;48532:7;48528:89;;48576:30;;-1:-1:-1;;;48576:30:377;;-1:-1:-1;;;;;44836:15:543;;;48576:30:377;;;44818:34:543;44888:15;;44868:18;;;44861:43;44730:18;;48576:30:377;44583:327:543;48528:89:377;48427:196;;;:::o;30119:429:91:-;30172:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;30379:106;21018:32;21075:16;21018:32;21075:16;30379:44;:106::i;:::-;-1:-1:-1;;30119:429:91;-1:-1:-1;;;;;;;30119:429:91:o;46478:966:377:-;46562:7;46571:5;46589:23;46614:14;46632:44;46670:5;46632:37;:44::i;:::-;46588:88;;-1:-1:-1;46588:88:377;-1:-1:-1;46705:22:377;46690:11;:37;;;;;;;;:::i;:::-;;;:75;;;;-1:-1:-1;46746:19:377;46731:11;:34;;;;;;;;:::i;:::-;;;46690:75;46686:176;;;46832:5;46839:11;46788:63;;-1:-1:-1;;;46788:63:377;;;;;;;;;:::i;46686:176::-;46875:24;:6;46896:1;46875:9;:24::i;:::-;46871:76;;;46922:14;;-1:-1:-1;;;46922:14:377;;;;;;;;;;;46871:76;46958:16;46976:13;46993:53;47029:6;47037:8;46993:35;:53::i;:::-;46957:89;;;;47106:8;47101:184;;47264:10;;;:::i;:::-;;;47101:184;47298:12;;47294:107;;47326:64;-1:-1:-1;;;;;47326:30:377;;47357:7;47374:4;47381:8;47326:30;:64::i;:::-;-1:-1:-1;47418:8:377;-1:-1:-1;47428:8:377;-1:-1:-1;;46478:966:377;;;;;;;:::o;36774:1279::-;36899:5;;36931:24;:6;36899:5;36931:9;:24::i;:::-;36927:96;;;36978:34;;-1:-1:-1;;;36978:34:377;;;;;3555:25:543;;;3528:18;;36978:34:377;3382:204:543;36927:96:377;37234:7;37230:817;;37271:32;37282:5;37289;37296:6;37271:10;:32::i;:::-;-1:-1:-1;37478:1:377;;-1:-1:-1;37478:1:377;;-1:-1:-1;37459:37:377;;-1:-1:-1;37459:37:377;37230:817;-1:-1:-1;;;;;37546:21:377;;;37527:16;37546:21;;;:14;:21;;;;;;;;:28;;;;;;;;;;;:37;;;;;;;;;;37616:22;37546:37;37631:6;37616:14;:22::i;:::-;37597:41;-1:-1:-1;37825:28:377;37597:41;37850:1;37825:13;:28::i;:::-;37821:106;;;37880:32;;-1:-1:-1;;;37880:32:377;;;;;3555:25:543;;;3528:18;;37880:32:377;3382:204:543;37821:106:377;-1:-1:-1;;;;;37940:21:377;;;;;;;:14;:21;;;;;;;;:28;;;;;;;;;;;:37;;;;;;:50;;;38013:10;;-1:-1:-1;37980:10:377;-1:-1:-1;37230:817:377;36774:1279;;;;;;;:::o;9812:956::-;9905:5;9926:21;;9922:840;;-1:-1:-1;;;;;;9970:21:377;;;;;;;:14;:21;;;;;;;;:28;;;;;;;;;;;:37;;;;;;;9963:44;;9922:840;10039:23;10064:14;10082:52;10128:5;10082:45;:52::i;:::-;10038:96;;-1:-1:-1;10038:96:377;-1:-1:-1;10167:22:377;10152:11;:37;;;;;;;;:::i;:::-;;;:75;;;;-1:-1:-1;10208:19:377;10193:11;:34;;;;;;;;:::i;:::-;;;10152:75;10148:184;;;10298:5;10305:11;10254:63;;-1:-1:-1;;;10254:63:377;;;;;;;;;:::i;10148:184::-;10434:30;;-1:-1:-1;;;10434:30:377;;-1:-1:-1;;;;;18041:55:543;;;10434:30:377;;;18023:74:543;10345:23:377;;10387:88;;10434:23;;;;;17996:18:543;;10434:30:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10466:8;10387:46;:88::i;:::-;10633:45;;-1:-1:-1;;;10633:45:377;;-1:-1:-1;;;;;44836:15:543;;;10633:45:377;;;44818:34:543;10672:4:377;44868:18:543;;;44861:43;10345:130:377;;-1:-1:-1;10544:24:377;;10589:100;;10633:23;;;;;;44730:18:543;;10633:45:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10680:8;10589:43;:100::i;:::-;-1:-1:-1;10543:146:377;-1:-1:-1;10710:41:377;:17;10543:146;10710:21;:41::i;:::-;10703:48;;;;;;;;1219:204:10;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1366:40;;-1:-1:-1;;;1366:40:10;;-1:-1:-1;;;;;18041:55:543;;1366:40:10;;;18023:74:543;17996:18;;1366:40:10;17877:226:543;1662:232:10;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:10;;-1:-1:-1;;;;;18041:55:543;;1837:40:10;;;18023:74:543;17996:18;;1837:40:10;17877:226:543;1762:126:10;1662:232;;;;:::o;41961:101:91:-;42015:5;42039:8;42042:1;42045;42039:2;:8::i;:::-;:16;;42054:1;42039:16;;;-1:-1:-1;42050:1:91;;42032:23;-1:-1:-1;41961:101:91:o;38215:1333:377:-;38340:5;;38372:24;:6;38340:5;38372:9;:24::i;:::-;38368:96;;;38419:34;;-1:-1:-1;;;38419:34:377;;;;;3555:25:543;;;3528:18;;38419:34:377;3382:204:543;38368:96:377;38656:7;38652:890;;38693:32;38704:5;38711;38718:6;38693:10;:32::i;38652:890::-;-1:-1:-1;;;;;38970:21:377;;;38951:16;38970:21;;;:14;:21;;;;;;;;:28;;;;;;;;;;;:37;;;;;;;;;;39040:22;38970:37;39055:6;39040:14;:22::i;47605:754::-;47694:7;47703:5;47721:23;47746:14;47764:44;47802:5;47764:37;:44::i;:::-;47720:88;;-1:-1:-1;47720:88:377;-1:-1:-1;47837:22:377;47822:11;:37;;;;;;;;:::i;:::-;;;:75;;;;-1:-1:-1;47878:19:377;47863:11;:34;;;;;;;;:::i;:::-;;;47822:75;47818:176;;;47964:5;47971:11;47920:63;;-1:-1:-1;;;47920:63:377;;;;;;;;;:::i;47818:176::-;48008:29;:11;48034:1;48008:14;:29::i;:::-;48004:81;;;48060:14;;-1:-1:-1;;;48060:14:377;;;;;;;;;;;48004:81;48146:14;48165:58;48201:11;48214:8;48165:35;:58::i;:::-;-1:-1:-1;48145:78:377;-1:-1:-1;48237:10:377;;48233:84;;48263:43;-1:-1:-1;;;;;48263:26:377;;48290:7;48299:6;48263:26;:43::i;:::-;48335:6;48343:8;;-1:-1:-1;47605:754:377;-1:-1:-1;;;;;47605:754:377:o;16708:260::-;16873:5;:18;;;16892:13;16873:33;;;;;;;;:::i;:::-;;;;;;;:39;;;-1:-1:-1;;;;;16832:80:377;:5;:17;;;16850:12;16832:31;;;;;;;;:::i;:::-;;;;;;;:37;;;-1:-1:-1;;;;;16832:80:377;;16828:134;;16935:16;;-1:-1:-1;;;16935:16:377;;;;;;;;;;;30597:6016;30821:27;;:::i;:::-;30884:17;30904:12;:5;:10;:12::i;:::-;31025:40;;;1159:1:387;31025:40:377;;;;;;;;;30884:32;;-1:-1:-1;30931:26:377;;30989:33;;31025:40;;;;;;;;;;;;;;;;;;;-1:-1:-1;31218:11:377;;3924:4:114;3918:11;;3956:1;3942:16;;3989:4;3978:16;;3971:27;;;-1:-1:-1;;;;;31202:29:377;;;4018:16:114;;;4011:27;31242:30:377;;;3836:22:114;4058:16;;4051:27;4115:4;4104:16;;4091:30;;30989:76:377;;-1:-1:-1;31083:14:377;31131:1;1806::387;31098:34:377;31083:50;;;;;;;;:::i;:::-;;;;;;:208;;;;31333:24;31359:19;31406:84;31452:5;:17;;;31470:12;31452:31;;;;;;;;:::i;:::-;;;;;;;:37;;;31406:45;:84::i;:::-;31332:158;;-1:-1:-1;31332:158:377;-1:-1:-1;31532:22:377;31516:12;:38;;;;;;;;:::i;:::-;;;:77;;;;-1:-1:-1;31574:19:377;31558:12;:35;;;;;;;;:::i;:::-;;;31516:77;31512:289;;;31701:5;:17;;;31719:12;31701:31;;;;;;;;:::i;:::-;;;;;;;:37;;;31740:12;31628:150;;-1:-1:-1;;;31628:150:377;;;;;;;;;:::i;31512:289::-;31823:28;31854:152;31893:5;:11;;;31906:5;:17;;;31924:12;31906:31;;;;;;;;:::i;:::-;;;;;;;:37;;;31945:5;:17;;;31963:12;31945:31;;;;;;;;:::i;:::-;;;;;;;:39;;;31854:13;:152::i;:::-;31823:183;;32078:408;32153:5;:17;;;32171:12;32153:31;;;;;;;;:::i;:::-;;;;;;;:37;;;-1:-1:-1;;;;;32137:55:377;32129:64;;32235:13;32227:22;;32219:31;;32276:5;:17;;;32294:12;32276:31;;;;;;;;:::i;:::-;;;;;;;:39;;;32354:22;32463:1;32078:408;;5849:4:114;5843:11;;5881:1;5867:16;;5914:4;5903:16;;5896:27;;;;5943:16;;;5936:27;;;;5757:22;5983:16;;5976:27;;;;6034:4;6023:16;;6016:27;6074:4;6063:16;;6056:27;6120:4;6109:16;;6096:30;;5843:11;5636:506;32078:408:377;32028:14;32073:1;3605::387;32043:31:377;32028:47;;;;;;;;:::i;:::-;;;;;;:458;;;;31310:1195;;;32546:25;32573:20;32621:86;32667:5;:18;;;32686:13;32667:33;;;;;;;;:::i;32621:86::-;32545:162;;-1:-1:-1;32545:162:377;-1:-1:-1;32750:22:377;32733:13;:39;;;;;;;;:::i;:::-;;;:79;;;;-1:-1:-1;32793:19:377;32776:13;:36;;;;;;;;:::i;:::-;;;32733:79;32729:294;;;32920:5;:18;;;32939:13;32920:33;;;;;;;;:::i;32729:294::-;33045:29;33077:156;33116:5;:11;;;33129:5;:18;;;33148:13;33129:33;;;;;;;;:::i;:::-;;;;;;;:39;;;33170:5;:18;;;33189:13;33170:33;;;;;;;;:::i;33077:156::-;33045:188;;33306:414;33381:5;:18;;;33400:13;33381:33;;;;;;;;:::i;:::-;;;;;;;:39;;;-1:-1:-1;;;;;33365:57:377;33357:66;;33465:14;33457:23;;33449:32;;33507:5;:18;;;33526:13;33507:33;;;;;;;;:::i;33306:414::-;33255:14;33301:1;3772::387;33270:32:377;33255:48;;;;;;;;:::i;:::-;;;;;;:465;;;;32523:1216;;;33767:47;33784:14;33800:13;33767:16;:47::i;:::-;33757:57;;30971:2858;34005:24;34068:5;:11;;;-1:-1:-1;;;;;34052:29:377;34005:77;;34424:38;34464:34;34502:5;:15;;;:27;;;-1:-1:-1;;;;;34502:50:377;;34574:451;;;;;;;;34614:5;:15;;;:21;;;-1:-1:-1;;;;;34574:451:377;;;;;34672:55;34702:9;34721:4;1381:42:79;1478:25;;;1523:4;1516:20;1584:4;1571:18;;;1261:344;34672:55:377;34574:451;;;;34763:5;:15;;;:24;;;34574:451;;;;5072:1;34574:451;;;;34887:7;34574:451;;;;34944:1;34928:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34928:18:377;-1:-1:-1;34574:451:377;;;;35000:1;34986:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34986:16:377;;34574:451;;;34502:541;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34502:541:377;;;;;;;;;;;;:::i;:::-;34423:620;;;;5385:1;35209:19;:26;:56;35205:157;;;35320:19;:26;35292:55;;-1:-1:-1;;;35292:55:377;;;;;;3555:25:543;;3543:2;3528:18;;3382:204;35205:157:377;35532:4;35507:30;;35501:37;35604:4;35579:30;;35573:37;35813:18;;;;:33;;35376:18;;35813;35832:13;;35813:33;;;;;;:::i;:::-;;;;;;;35792:54;;35864:23;35890:56;35904:5;:11;;;35917:6;:12;;;35931:6;:14;;;35890:13;:56::i;:::-;35864:82;-1:-1:-1;35981:37:377;:14;35864:82;35981:18;:37::i;:::-;3152:4:114;3146:11;;3184:1;3170:16;;3217:4;3206:16;;3199:27;;;3246:16;;;3239:27;;;3064:22;3292:16;;3279:30;;;35964:54:377;;-1:-1:-1;3146:11:114;-1:-1:-1;36185:83:377;;-1:-1:-1;3000:325:114;36185:83:377;36130:7;3101:1:387;36130:36:377;;;;;;;;:::i;:::-;;;;;;:138;;;;36290:306;;;;;;;;36336:5;36290:306;;;;36374:13;36290:306;;;;36416:14;36290:306;;;;36457:12;36290:306;;;;36496:7;36290:306;;;;36532:9;36290:306;;;;36564:17;36290:306;;;36283:313;;;;;;;;;30597:6016;;;;;;;:::o;26050:535:91:-;26104:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;26104:5;;26315:95;21018:32;21075:16;21018:32;21075:16;26315:33;:95::i;:::-;26257:153;;;;26501:7;26511:49;26532:17;26551:8;26511:20;:49::i;:::-;26501:59;26050:535;-1:-1:-1;;;;;;;;;;26050:535:91:o;22427:496::-;22481:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;22481:5;;22694:95;21018:32;21075:16;21018:32;21075:16;22694:33;:95::i;27084:573::-;27138:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;27138:5;;27349:95;21018:32;21075:16;21018:32;21075:16;27349:33;:95::i;21591:489::-;21645:5;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;21645:5;;21856:95;21018:32;21075:16;21018:32;21075:16;21856:33;:95::i;40212:1325:377:-;40431:5;40329:18;:26;;;3605:1:387;40329:55:377;;;;;;;;:::i;:::-;;;;;;;4590:1:387;40329:86:377;;;;;;;;:::i;:::-;;;;;;:108;;;;;40550:6;40447:18;:26;;;3772:1:387;40447:56:377;;;;;;;;:::i;:::-;;;;;;;4590:1:387;40447:87:377;;;;;;;;:::i;:::-;;;;;;:110;;;;;40568:309;40602:18;:24;;;:30;;;40670:18;:26;;;3605:1:387;40670:55:377;;;;;;;;:::i;:::-;;;;;;;3890:1:387;40670:79:377;;;;;;;;:::i;:::-;;;;;;;40662:88;;40766:18;:26;;;3605:1:387;40766:55:377;;;;;;;;:::i;:::-;;;;;;;4132:1:387;40766:82:377;;;;;;;;:::i;:::-;;;;;;;40862:5;40568:20;:309::i;:::-;;;41002:312;41036:18;:24;;;:30;;;41104:18;:26;;;3772:1:387;41104:56:377;;;;;;;;:::i;:::-;;;;;;;3890:1:387;41104:80:377;;;;;;;;:::i;:::-;;;;;;;41096:89;;41201:18;:26;;;3772:1:387;41201:56:377;;;;;;;;:::i;:::-;;;;;;;4132:1:387;41201:83:377;;;;;;;;:::i;:::-;;;;;;;41298:6;41002:20;:312::i;:::-;;;41481:49;41491:10;41503:18;:26;;;41481:49;;;;;;;:::i;:::-;;;;;;;;40212:1325;;;:::o;29343:430:91:-;29396:4;-1:-1:-1;;;;;21033:16:91;;;21029:2;21018:32;;;;21079:4;21075:16;;;;21033;;;21018:32;;;;21075:16;;;29603:106;21018:32;21075:16;21018:32;21075:16;29603:44;:106::i;:::-;-1:-1:-1;;29343:430:91;-1:-1:-1;;;;;;;29343:430:91:o;41667:2431:377:-;41972:22;;;;:29;:33;41968:489;;42348:24;;:34;;;;;:40;;42393:28;;;;42423:22;;;;42348:98;;-1:-1:-1;;;42348:98:377;;-1:-1:-1;;;;;42348:44:377;;;;;;:98;;42393:28;;42348:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41968:489;42899:28;42931:18;:24;;;:34;;;:46;;;-1:-1:-1;;;;;42931:65:377;;43014:489;;;;;;;;43050:18;:24;;;:34;;;:40;;;-1:-1:-1;;;;;43014:489:377;;;;;43123:74;43153:18;:28;;;43191:4;1381:42:79;1478:25;;;1523:4;1516:20;1584:4;1571:18;;;1261:344;43123:74:377;43014:489;;;;43229:18;:24;;;:34;;;:43;;;43014:489;;;;5262:1;43014:489;;;;43358:18;:26;;;43014:489;;;;43430:1;43414:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43414:18:377;-1:-1:-1;43014:489:377;;;;43482:1;43468:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43468:16:377;;43014:489;;;42931:586;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;42931:586:377;;;;;;;;;;;;:::i;:::-;42896:621;;;43650:1;43629:11;:18;:22;43625:467;;;43994:24;;:34;;;;;:40;;44039:28;;;;43994:87;;-1:-1:-1;;;43994:87:377;;-1:-1:-1;;;;;43994:44:377;;;;;;:87;;44069:11;;43994:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41742:2356;41667:2431;:::o;1297:154:102:-;1374:18;1387:4;1374:12;:18::i;:::-;1369:76;;1429:4;1415:19;;-1:-1:-1;;;1415:19:102;;;;;;;;:::i;1369:76::-;1297:154;:::o;4691:549:12:-;4774:12;4798;4813:47;4847:6;4855:4;4813:33;:47::i;:::-;4798:62;;4874:7;:72;;;;-1:-1:-1;4918:1:12;4625:16:16;4886:33:12;:59;;;;4944:1;4923:6;-1:-1:-1;;;;;4923:18:12;;:22;4886:59;4870:364;;;4969:25;:23;:25::i;:::-;4962:32;;;;;4870:364;5015:7;5011:223;;;5045:24;;-1:-1:-1;;;5045:24:12;;-1:-1:-1;;;;;18041:55:543;;5045:24:12;;;18023:74:543;17996:18;;5045:24:12;17877:226:543;5011:223:12;4625:16:16;5090:33:12;5086:148;;5139:27;:25;:27::i;:::-;5086:148;;;5204:19;;-1:-1:-1;;;5204:19:12;;;;;;;;;;;5086:148;4788:452;4691:549;;;;:::o;44642:656:377:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45009:72:377;45034:23;45059:21;45009:24;:72::i;:::-;44935:146;;44936:27;;;44935:146;45219:72;45244:21;45267:23;45219:24;:72::i;:::-;45177:26;;;45149:142;45150:25;;;45149:142;45150:16;44642:656;-1:-1:-1;;44642:656:377:o;3586:157:19:-;-1:-1:-1;;;;;;;;;;;4560:52:19;2407:1;4560:63;3644:93;;3696:30;;-1:-1:-1;;;3696:30:19;;;;;;;;;;;3644:93;3586:157::o;8713:2372:77:-;8848:18;8906:24;8947:14;:21;8933:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8933:36:77;;8906:63;;9118:21;9192:1;9168:14;:21;:25;:57;;9224:1;9168:57;;;9196:14;:21;9220:1;9196:25;9168:57;9146:11;:18;9142:1;:22;:84;9118:108;;9241:26;9286:13;9270:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9241:59;;9314:14;9364:17;3323:4;3317:11;;3359:1;3341:20;;3403:8;3396:4;3381:20;;3374:38;3454:9;3432:20;;;3425:39;3227:26;3490:20;;3477:34;;;3317:11;3188:339;9364:17;9346:7;9354:6;9346:15;;;;;;;;:::i;:::-;;;;;;:35;;;;9401:9;9396:140;9420:11;:18;9416:1;:22;9396:140;;;9463:8;;;;;;;9507:11;9519:1;9507:14;;;;;;;;:::i;:::-;;;;;;;9489:7;9497:6;9489:15;;;;;;;;:::i;:::-;;;;;;;;;;:32;9440:3;;9396:140;;;-1:-1:-1;9554:21:77;;:25;9550:1490;;9599:8;;;;;;;9643:7;9625;9633:6;9625:15;;;;;;;;:::i;:::-;;;;;;:25;;;;9674:9;9669:1357;9693:14;:21;9689:1;:25;9669:1357;;;10371:357;10437:14;10452:1;10437:17;;;;;;;;:::i;:::-;;;;;;;:24;;;10491:154;10564:51;10589:14;10604:1;10589:17;;;;;;;;:::i;:::-;;;;;;;:25;;;4322:12:82;;4336:4;4318:23;;;4300:16;;4290:52;;4153:205;10564:51:77;1445:34:23;1367:14;1432:48;;;1541:4;1534:25;;;;1639:4;1623:21;;;1291:433;10491:154:77;10675:14;10690:1;10675:17;;;;;;;;:::i;:::-;;;;;;;:27;;;10371:36;:357::i;:::-;9743:1083;;10784:19;;-1:-1:-1;;;10784:19:77;;;;;3555:25:543;;;3528:18;;10784:19:77;3382:204:543;9743:1083:77;10885:14;10900:1;10885:17;;;;;;;;:::i;:::-;;;;;;;:24;;;-1:-1:-1;;;;;10869:42:77;10861:51;;10848:7;10856:1;10848:10;;;;;;;;:::i;:::-;;;;;;:64;;;;;10934:8;;;;;;;10982:14;10997:1;10982:17;;;;;;;;:::i;:::-;;;;;;;:25;;;10964:7;10972:6;10964:15;;;;;;;;:::i;:::-;;;;;;;;;;:43;9716:3;;9669:1357;;;;9550:1490;-1:-1:-1;11061:7:77;8713:2372;-1:-1:-1;;;;;8713:2372:77:o;50744:2689:94:-;50905:6;;51455:26;;51483;;51452:58;51601:26;;;51629;;;51597:59;51374:308;51761:24;;;51346:461;51842:105;;;;51889:18;51909;51881:47;;;;;;;51842:105;51232:729;51975:12;52025:9;52013;:21;52009:329;;;-1:-1:-1;52124:18:94;;52248:9;;52067:18;;52319:4;52009:329;52374:21;;;52352:19;52500:20;;52540:2;52522:21;;52497:47;52571:210;;;;52610:7;52606:161;;;52649:1;52652:18;52641:30;;;;;;;;;52606:161;52726:18;52746:1;52718:30;;;;;;;;;52606:161;52914:2;:27;;;52974:26;;;:18;52914:27;52974:26;52914:27;53019:16;;;;:::i;:::-;;:38;53015:402;;53081:7;53077:161;;;53120:1;53123:18;53112:30;;;;;;;;;;;53077:161;53197:18;53217:1;53189:30;;;;;;;;;;;53015:402;53262:7;53258:159;;;53297:18;;-1:-1:-1;53317:8:94;-1:-1:-1;53289:37:94;;-1:-1:-1;;;;53289:37:94;53258:159;53373:8;-1:-1:-1;53383:18:94;;-1:-1:-1;53365:37:94;;-1:-1:-1;;;;53365:37:94;6577:266:126;6636:11;6649:5;6666:16;:14;:16::i;:::-;6788:48;;-1:-1:-1;;;6788:48:126;;-1:-1:-1;;;;;18041:55:543;;6788:48:126;;;18023:74:543;1737:42:126;;6788:41;;17996:18:543;;6788:48:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6781:55;;;;6577:266;;;:::o;14263:248:91:-;14344:7;;-1:-1:-1;;;;;21033:16:91;;21029:2;21018:32;21079:4;21075:16;;;14446:58;21018:32;21075:16;14495:8;14446:19;:58::i;:::-;14439:65;;;;;;14263:248;;;;;;:::o;5877:287:126:-;5949:11;5962:5;5979:16;:14;:16::i;:::-;6101:56;;-1:-1:-1;;;6101:56:126;;-1:-1:-1;;;;;18041:55:543;;6101:56:126;;;18023:74:543;1737:42:126;;6101:49;;17996:18:543;;6101:56:126;;;;;;;;;;;;;;;;;;;;;;8887:263:91;8981:5;8999:24;9025:15;9044:41;9069:5;9076:8;9044:24;:41::i;:::-;8998:87;;;;9102:41;9115:17;9134:8;9102:12;:41::i;:::-;9095:48;8887:263;-1:-1:-1;;;;;8887:263:91:o;7483:353::-;7574:5;7581:4;7598:24;7624:15;7641:13;7658:38;7680:5;7687:8;7658:21;:38::i;:::-;7597:99;;;;;;7707:11;7720:17;7741:38;7751:17;7770:8;7741:9;:38::i;:::-;7706:73;;;;7797:5;7804:8;:24;;;;;7816:12;7804:24;7789:40;;;;;;;;;7483:353;;;;;:::o;8373:1244:10:-;8600:4;8594:11;-1:-1:-1;;;8467:12:10;8618:22;;;-1:-1:-1;;;;;8666:24:10;;8660:4;8653:38;8711:4;8704:19;;;8467:12;8787:4;8467:12;8775:4;8467:12;;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9591:4;9584:17;-1:-1:-1;8373:1244:10;;-1:-1:-1;;;;8373:1244:10:o;10165:1393::-;10460:4;10454:11;-1:-1:-1;;;10323:12:10;10478:22;;;-1:-1:-1;;;;;10526:26:10;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:10;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:10:o;7193:2230:94:-;7343:24;;7473:26;;7501;;7470:58;7547:1870;;;;1408:1;7690:53;;1495:1;7757:34;;7547:1870;;;7833:21;7845:9;7833;:21;:::i;:::-;7822:32;;7989:29;8021:48;8050:18;8021:28;:48::i;:::-;7989:80;;8083:29;8115:48;8144:18;8115:28;:48::i;:::-;8083:80;;8179:13;8197:52;8204:21;8227;8197:6;:52::i;:::-;8178:71;;;8264:22;8344:4;8336:5;:12;8332:114;;;8381:4;8372:13;;;-1:-1:-1;8425:2:94;8407:20;8332:114;8475:4;8467:5;:12;8463:114;;;8512:4;8503:13;;;-1:-1:-1;8556:2:94;8538:20;8463:114;8606:3;8598:5;:11;8594:111;;;8642:3;8633:12;;;-1:-1:-1;8685:1:94;8667:19;8594:111;8734:3;8726:5;:11;8722:111;;;8770:3;8761:12;;;-1:-1:-1;8813:1:94;8795:19;8722:111;8857:9;;8850:108;;8899:2;8890:11;;;-1:-1:-1;8923:16:94;;8850:108;;;9086:34;9105:14;9086:34;;:::i;:::-;;-1:-1:-1;9167:239:94;9211:18;9247;9283:83;9290:21;9313;9336:29;9351:14;9344:2;9336:29;:::i;:::-;9283:6;:83::i;:::-;9384:8;9167:26;:239::i;:::-;9135:271;;-1:-1:-1;9135:271:94;-1:-1:-1;;;;;7547:1870:94;7390:2033;7193:2230;;;;;;;:::o;20082:338:91:-;20178:5;20196:7;20205:13;20222:38;20232:17;20251:8;20222:9;:38::i;:::-;20195:65;;;;20275:8;20274:9;:42;;;;-1:-1:-1;20287:29:91;;20274:42;20270:126;;;20339:46;;-1:-1:-1;;;20339:46:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;20339:46:91;5553:302:543;20270:126:91;-1:-1:-1;20412:1:91;20082:338;-1:-1:-1;;;20082:338:91:o;33785:339:94:-;33935:6;33943;33999:36;34005:18;34025:9;33999:5;:36::i;:::-;33965:70;;-1:-1:-1;33965:70:94;-1:-1:-1;34052:65:94;34056:18;34076:9;33965:70;;34052:3;:65::i;:::-;34045:72;;;;33785:339;;;;;;;:::o;12966:8769::-;13116:6;13124;13150:18;13172:1;13150:23;13146:8583;;13196:45;;-1:-1:-1;;;13196:45:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;13196:45:94;5553:302:543;13146:8583:94;13262:18;13284:1;13262:23;13258:8471;;-1:-1:-1;1408:1:94;;-1:-1:-1;1408:1:94;13301:67;;13258:8471;13399:24;13437:15;13466:10;13490;13697:39;13706:18;13726:9;13697:8;:39::i;:::-;13656:80;;-1:-1:-1;13656:80:94;-1:-1:-1;13656:80:94;-1:-1:-1;13791:39:94;13800:18;13820:9;13791:8;:39::i;:::-;13750:80;;-1:-1:-1;13750:80:94;-1:-1:-1;13750:80:94;-1:-1:-1;13965:29:94;13997:48;14026:18;13997:28;:48::i;:::-;13965:80;;14059:29;14091:48;14120:18;14091:28;:48::i;:::-;14059:80;-1:-1:-1;14170:4:94;14212:2;14663:29;;;14659:4460;;;14716:5;14712:4269;;;-1:-1:-1;;;;14753:4:94;-1:-1:-1;14796:2:94;14712:4269;;;14873:4;14849:21;:28;14845:3675;;;14933:4;14909:21;:28;14905:1781;;;14997:4;14973:21;:28;14969:813;;;15065:3;15041:21;:27;15037:321;;;-1:-1:-1;15116:3:94;;-1:-1:-1;15174:1:94;14845:3675;;15037:321;-1:-1:-1;15262:4:94;;-1:-1:-1;15321:2:94;14845:3675;;14969:813;15456:4;15432:21;:28;15428:324;;;-1:-1:-1;15508:4:94;;-1:-1:-1;15567:2:94;14845:3675;;15428:324;-1:-1:-1;15656:4:94;;-1:-1:-1;15715:2:94;14845:3675;;14905:1781;15872:4;15848:21;:28;15844:816;;;15940:4;15916:21;:28;15912:324;;;-1:-1:-1;15992:4:94;;-1:-1:-1;16051:2:94;14845:3675;;15912:324;-1:-1:-1;16140:4:94;;-1:-1:-1;16199:2:94;14845:3675;;15844:816;16334:4;16310:21;:28;16306:324;;;-1:-1:-1;16386:4:94;;-1:-1:-1;16445:2:94;14845:3675;;16306:324;-1:-1:-1;16534:4:94;;-1:-1:-1;16593:2:94;14845:3675;;;16768:4;16744:21;:28;16740:1758;;;16832:4;16808:21;:28;16804:816;;;16900:4;16876:21;:28;16872:324;;;-1:-1:-1;16952:4:94;;-1:-1:-1;17011:2:94;14845:3675;;16872:324;-1:-1:-1;17100:4:94;;-1:-1:-1;17159:2:94;16740:1758;;16804:816;17294:4;17270:21;:28;17266:324;;;-1:-1:-1;17346:4:94;;-1:-1:-1;17405:2:94;14845:3675;;17266:324;-1:-1:-1;17494:4:94;;-1:-1:-1;17553:2:94;16740:1758;;;17710:4;17686:21;:28;17682:790;;;17778:4;17754:21;:28;17750:324;;;-1:-1:-1;17830:4:94;;-1:-1:-1;17889:2:94;17682:790;;17750:324;-1:-1:-1;17978:4:94;;-1:-1:-1;18037:2:94;17682:790;;;18172:4;18148:21;:28;18144:298;;;-1:-1:-1;18224:4:94;;-1:-1:-1;18283:2:94;18144:298;18641:5;18616:21;:30;18609:214;;18723:2;18714:11;;;-1:-1:-1;;;18755:19:94;18609:214;;;18848:5;18857:1;18848:10;18844:119;;18893:47;;-1:-1:-1;;;18893:47:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;18893:47:94;5553:302:543;18844:119:94;19003:5;18998:107;;19039:47;;-1:-1:-1;;;19039:47:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;19039:47:94;5553:302:543;18998:107:94;19587:14;-1:-1:-1;;;19568:33:94;19555:9;:46;19551:623;;19638:14;19625:27;;;;19551:623;;;-1:-1:-1;;;19729:16:94;19699:46;;;;19839:1;19822:18;;19818:338;;;19904:14;-1:-1:-1;;;;;19885:33:94;19872:9;:46;19868:266;;19950:27;;;;19868:266;;;1408:1;1495;20040:67;;;;;;;;;;;;;;19868:266;20202:26;20352:1;20340:9;:13;:30;;;;;20369:1;20357:9;:13;20340:30;20336:222;;;-1:-1:-1;;;20412:28:94;;20484:20;;;:55;;20537:1;20484:55;;;20519:8;20507:9;:20;20484:55;20462:77;;20372:186;20336:222;20621:9;20599:19;20587:9;:31;:43;20576:54;;20681:235;20729:18;20769;20809:59;20816:21;20839:5;20846:21;20809:6;:59::i;:::-;20890:8;20681:26;:235::i;:::-;20649:267;;-1:-1:-1;20649:267:94;-1:-1:-1;20961:1:94;20939:23;;20935:716;;;21012:2;20990:19;:24;20986:308;;;1408:1;1495;21204:67;;;;;;;;;;;;;;;20986:308;21479:19;21465:2;:34;21437:63;;;;;;:::i;:::-;;;;21526:17;21547:1;21526:22;21522:111;;1495:1;21576:34;;21522:111;-1:-1:-1;21676:17:94;;-1:-1:-1;21695:8:94;;-1:-1:-1;21668:36:94;;-1:-1:-1;;;;;;21668:36:94;29621:3681;29771:6;;30037:26;;30065;;30034:58;30111:217;;;;30145:18;30167:1;30145:23;30141:177;;30196:18;30216:9;30188:38;;;;;;;30141:177;30273:18;30293:9;30265:38;;;;;;;30141:177;30565:43;30578:18;30598:9;30565:12;:43::i;:::-;30531:77;;-1:-1:-1;30531:77:94;-1:-1:-1;30652:43:94;30665:18;30685:9;30652:12;:43::i;:::-;30618:77;;-1:-1:-1;30618:77:94;-1:-1:-1;30816:21:94;;;30812:268;;;30919:18;;31031:9;;30866:18;;30812:268;31764:21;;;824:2;31948:45;;31944:122;;;32021:18;32041:9;32013:38;;;;;;;;31944:122;32285:21;32279:2;:27;32250:57;;;;;;:::i;:::-;;;-1:-1:-1;;32400:39:94;;;32658:26;;;32555:4;32648:37;;;32641:45;32734:18;32561:43;;;32551:54;;;32544:62;32718:35;32826:412;;;;32885:9;-1:-1:-1;;;;;32865:29:94;32861:130;;32925:47;;-1:-1:-1;;;32925:47:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;32925:47:94;5553:302:543;32861:130:94;33031:2;33051:24;;;;33009;;;;33122:40;;;33093:11;;;;;;32826:412;;;33222:1;33201:22;;32826:412;-1:-1:-1;33265:18:94;;33285:9;;-1:-1:-1;;;;;;29621:3681:94:o;782:368:102:-;846:4;880:1;866:4;:11;:15;862:33;;;-1:-1:-1;890:5:102;;782:368;-1:-1:-1;782:368:102:o;862:33::-;-1:-1:-1;1072:1:102;1062:12;1056:19;920:16;1052:30;758:18:98;1108:35:102;;782:368::o;3419:242:16:-;3502:12;3640:4;3634;3627;3621:11;3614:4;3608;3604:15;3596:6;3589:5;3576:69;3565:80;3419:242;-1:-1:-1;;;3419:242:16:o;4740:334::-;4871:4;4865:11;4904:16;4889:32;;4974:16;4968:4;4961;4949:17;;4934:57;5039:16;5033:4;5029:27;5021:6;5017:40;5011:4;5004:54;4740:334;:::o;5141:223::-;5245:4;5239:11;5289:16;5283:4;5278:3;5263:43;5331:16;5326:3;5319:29;45490:827:377;45673:16;45691:17;45788:70;45826:23;:31;;;45788:23;:33;;;:37;;:70;;;;:::i;:::-;45775:83;;45883:23;:33;;;45869:47;;46049:46;46063:21;:31;;;46049:10;:13;;:46;;;;:::i;:::-;46045:266;;;46124:21;:31;;;46111:44;;46253:47;46268:23;:31;;;46253:10;:14;;:47;;;;:::i;:::-;46239:61;;45490:827;;;;;:::o;1485:429:24:-;1591:4;1611:6;-1:-1:-1;;;;;1611:18:24;;1633:1;1611:23;1607:301;;1651:17;1670:22;1698:33;1715:4;1721:9;1698:16;:33::i;:::-;-1:-1:-1;1650:81:24;;-1:-1:-1;1650:81:24;-1:-1:-1;1759:26:24;1752:3;:33;;;;;;;;:::i;:::-;;:56;;;;;1802:6;-1:-1:-1;;;;;1789:19:24;:9;-1:-1:-1;;;;;1789:19:24;;1752:56;1745:63;;;;;;1607:301;1846:51;1873:6;1881:4;1887:9;1846:26;:51::i;:::-;1839:58;;;;5129:327:126;1737:42;5196:45;:50;;:148;;-1:-1:-1;1737:42:126;5266;2135:66;5266:78;;5196:148;5179:271;;;5376:63;;-1:-1:-1;;;5376:63:126;;1737:42;5376:63;;;18023:74:543;17996:18;;5376:63:126;17877:226:543;9995:3701:91;10130:7;10139:4;10262:1;10242:17;:21;10238:3452;;;10286:59;;-1:-1:-1;;;10286:59:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;10286:59:91;5553:302:543;10238:3452:91;10444:17;10465:1;10444:22;10440:3250;;-1:-1:-1;10490:1:91;;-1:-1:-1;10493:4:91;10482:16;;10440:3250;10708:17;10989;;;10971:36;;11029:24;;;11025:123;;;11084:45;;-1:-1:-1;;;11084:45:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;11084:45:91;5553:302:543;11025:123:91;11176:13;11203:20;11257:1;11241:13;:17;11237:2443;;;-1:-1:-1;;11519:13:91;:19;11515:91;;;11574:1;11577:5;11566:17;;;;;;;;;;11515:91;11966:13;11965:14;;11951:2;:29;11943:37;;12039:5;12017:19;:27;;;;;:::i;:::-;;;-1:-1:-1;;12302:20:91;;:43;;;;-1:-1:-1;12280:66:91;;-1:-1:-1;12280:66:91;11237:2443;12405:1;12389:13;:17;12385:1295;;;12684:2;12668:13;:18;12664:139;;;12721:59;;-1:-1:-1;;;12721:59:91;;;;;48929:25:543;;;48970:18;;;48963:34;;;49045:4;49033:17;;49013:18;;;49006:45;48902:18;;12721:59:91;48735:322:543;12664:139:91;13030:13;13016:2;:28;13008:36;;13340:5;-1:-1:-1;;13320:25:91;;;;;:::i;:::-;;13298:19;:47;13294:168;;;13380:59;;-1:-1:-1;;;13380:59:91;;;;;48929:25:543;;;48970:18;;;48963:34;;;49045:4;49033:17;;49013:18;;;49006:45;48902:18;;13380:59:91;48735:322:543;13294:168:91;-1:-1:-1;13498:27:91;;;;;-1:-1:-1;13569:4:91;;-1:-1:-1;13547:27:91;;-1:-1:-1;13547:27:91;12385:1295;13639:19;13660:4;13631:34;;;;;;;;;;8180:373;8268:6;8276;8295:24;8321:15;8338:13;8355:38;8377:5;8384:8;8355:21;:38::i;:::-;8294:99;;;;;;8408:8;8403:98;;8439:51;;-1:-1:-1;;;8439:51:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;8439:51:91;5553:302:543;8403:98:91;-1:-1:-1;8518:17:91;;;;-1:-1:-1;8180:373:91;-1:-1:-1;;;8180:373:91:o;19156:299::-;19244:5;19262:7;19271:13;19288:38;19298:17;19317:8;19288:9;:38::i;:::-;19261:65;;;;19341:8;19336:95;;19372:48;;-1:-1:-1;;;19372:48:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;19372:48:91;5553:302:543;6103:800:91;6188:6;;;6270:17;;;6262:26;;-1:-1:-1;;;;;6419:33:91;;6415:472;;;6632:2;6624:5;:10;6648:1;6637:12;;6659:2;6651:5;:10;6665:1;6651:15;6609:58;;;;;;;;;6415:472;6849:5;;-1:-1:-1;6857:8:91;-1:-1:-1;6867:4:91;;-1:-1:-1;6103:800:91;;;;;;:::o;16515:2402::-;16600:11;17032:46;;;;;;16696:17;16752:8;17032:46;17356:668;;17413:4;17393:17;:24;:29;17389:135;;17467:3;17446:24;;;;17504:1;17492:13;;;;17389:135;17763:17;17741;17734:46;;;17727:151;;17825:2;17804:23;;;;17849:10;;;;;17727:151;;;17356:668;;;17920:17;17941:1;17920:22;17916:94;;-1:-1:-1;3702:1:91;;-1:-1:-1;17986:4:91;;-1:-1:-1;17966:25:91;;-1:-1:-1;17966:25:91;17916:94;18234:8;18221;18215:27;;;18211:393;;18436:1;18425:8;:12;18421:85;;;-1:-1:-1;3702:1:91;;-1:-1:-1;3702:1:91;;-1:-1:-1;18461:26:91;;-1:-1:-1;18461:26:91;18421:85;18530:59;;-1:-1:-1;;;18530:59:91;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;18530:59:91;5553:302:543;18211:393:91;-1:-1:-1;;;;;;;18837:28:91;;18871:4;18867:19;;;18834:53;;-1:-1:-1;16515:2402:91;;;;;:::o;3731:701:94:-;3818:7;3885:1;3865:17;:21;3861:555;;;-1:-1:-1;;;3910:17:94;:37;3906:316;;-1:-1:-1;;;;3978:29:94;3731:701;-1:-1:-1;3731:701:94:o;3906:316::-;-1:-1:-1;4184:18:94;;;3731:701::o;3861:555::-;-1:-1:-1;4383:17:94;3731:701::o;3861:555::-;3731:701;;;:::o;21872:550::-;21933:12;;-1:-1:-1;;22316:1:94;22313;22306:20;22346:9;;;;22394:11;;;22380:12;;;;22376:30;;;;;21872:550;-1:-1:-1;;21872:550:94:o;22585:4048::-;22667:14;22694:13;22709;22726:12;22733:1;22736;22726:6;:12::i;:::-;22693:45;;;;22812:5;22821:1;22812:10;22808:109;;22881:11;22873:5;:19;;;;;:::i;:::-;;22866:26;;;;;;22808:109;23024:11;23015:5;:20;23011:91;;23058:33;;-1:-1:-1;;;23058:33:94;;;;;49264:25:543;;;49305:18;;;49298:34;;;49348:18;;;49341:34;;;49237:18;;23058:33:94;49062:319:543;23011:91:94;23394:17;23553:11;23550:1;23547;23540:25;24154:1;24139:12;;:16;;24124:32;;24393:25;;;;;25554:1;25535;:15;;25534:21;;25787;;;25783:25;;25772:36;25856:21;;;25852:25;;25841:36;25926:21;;;25922:25;;25911:36;25996:21;;;25992:25;;25981:36;26066:21;;;26062:25;;26051:36;26137:21;;;26133:25;;;26122:36;24106:15;25003;;;24999:29;;;24995:37;;;23659:20;;;23648:32;;;25121:22;;;;23702:21;;;;24565:19;;;;25112:31;;;;26601:15;;-1:-1:-1;;22585:4048:94;;;;;:::o;5040:1698::-;5190:6;5198;5312:1;5307;5303;:5;5302:11;5298:1434;;;-1:-1:-1;;;;;5333:20:94;:48;5329:830;;;5429:29;-1:-1:-1;;;;;5457:1:94;5429:29;:::i;:::-;5405:20;:53;5401:529;;-1:-1:-1;;;;5600:16:94;-1:-1:-1;5618:8:94;5592:35;;5401:529;5870:25;5893:2;5870:20;:25;:::i;:::-;5862:34;;;:::i;:::-;5898:12;:8;5909:1;5898:12;:::i;:::-;5854:57;;;;;;5329:830;6104:29;6112:20;6104:29;:::i;:::-;6135:8;6096:48;;;;;;5298:1434;-1:-1:-1;;;;;6193:20:94;:48;6189:533;;;6444:25;6467:2;6444:20;:25;:::i;6189:533::-;-1:-1:-1;6675:20:94;;-1:-1:-1;6698:8:94;6660:47;;2977:541;3058:6;3066;-1:-1:-1;;;3184:17:94;:37;3180:271;;-1:-1:-1;;;;;3245:8:94;:28;3241:127;;3304:45;;-1:-1:-1;;;3304:45:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;3304:45:94;5553:302:543;3241:127:94;3406:2;3385:23;;;;3426:10;;;;;3180:271;-1:-1:-1;;3472:18:94;;;;;;2977:541::o;45918:1994::-;46002:6;46010;46018:4;46062:17;46083:1;46062:22;46058:134;;-1:-1:-1;1408:1:94;;-1:-1:-1;1408:1:94;;-1:-1:-1;46172:4:94;46104:73;;46058:134;-1:-1:-1;;;46311:17:94;:24;46339:1;46311:29;46307:1005;;46384:4;46364:17;:24;:29;:66;;;;-1:-1:-1;46409:21:94;46397:33;;;46364:66;46360:174;;;46475:4;46454:25;;;;46513:2;46501:14;;;;46360:174;46576:4;46556:17;:24;:29;:66;;;;-1:-1:-1;46601:21:94;46589:33;;;46556:66;46552:174;;;46667:4;46646:25;;;;46705:2;46693:14;;;;46552:174;46768:4;46748:17;:24;:29;:66;;;;-1:-1:-1;46793:21:94;46781:33;;;46748:66;46744:174;;;46859:4;46838:25;;;;46897:2;46885:14;;;;46744:174;46963:4;46943:17;:24;:29;:65;;;;-1:-1:-1;46988:20:94;46976:32;;;46943:65;46936:174;;;47053:3;47032:24;;;;47090:1;47078:13;;;;46936:174;;;-1:-1:-1;;;47132:17:94;:24;:29;:65;;;;-1:-1:-1;;;;;;47165:32:94;;;47132:65;47128:170;;;47242:2;47221:23;;;;47278:1;47266:13;;;;47128:170;47606:2;47586:22;;;;;47647:25;47626:17;:46;:82;;;;-1:-1:-1;;;;;;47676:32:94;;;47626:82;47622:192;;;47748:20;47728:40;;47798:1;47786:13;;;;47622:192;-1:-1:-1;47836:17:94;;47855:8;;-1:-1:-1;;;;;;47865:24:94;;:29;;;45918:1994::o;48286:370::-;48374:6;48382;48401:27;48430:18;48450:9;48463:37;48472:17;48491:8;48463;:37::i;:::-;48400:100;;;;;;48515:4;48510:88;;48542:45;;-1:-1:-1;;;48542:45:94;;;;;5781:25:543;;;5822:18;;;5815:34;;;5754:18;;48542:45:94;5553:302:543;2419:778:22;2522:17;2541:16;2559:14;2589:9;:16;2609:2;2589:22;2585:606;;2894:4;2879:20;;2873:27;2943:4;2928:20;;2922:27;3000:4;2985:20;;2979:27;2627:9;2971:36;3041:25;3052:4;2971:36;2873:27;2922;3041:10;:25::i;:::-;3034:32;;;;;;;;;;;2585:606;-1:-1:-1;;3162:16:22;;3113:1;;-1:-1:-1;3117:35:22;;3097:83;;2908:986:24;3153:16;;3508:4;3502:11;;-1:-1:-1;;;3526:21:24;;;3576:4;3567:14;;3560:28;;;3617:4;3608:14;;3601:28;;;;3051:11;;3153:16;3687:4;3675:17;;3153:9;3657:4;3648:14;;3642:51;3778:4;3772;3765;3757:6;3753:17;3748:3;3740:6;3733:5;3722:61;3707:76;;3867:8;3860:4;3854:11;3851:25;3844:4;3826:16;3823:26;3819:58;3810:7;3806:72;3796:82;;;3205:683;;2908:986;;;;;:::o;7129:1551:22:-;7255:17;;;8209:66;8196:79;;8192:164;;;-1:-1:-1;8307:1:22;;-1:-1:-1;8311:30:22;;-1:-1:-1;8343:1:22;8291:54;;8192:164;8467:24;;;8450:14;8467:24;;;;;;;;;49976:25:543;;;50049:4;50037:17;;50017:18;;;50010:45;;;;50071:18;;;50064:34;;;50114:18;;;50107:34;;;8467:24:22;;49948:19:543;;8467:24:22;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8467:24:22;;-1:-1:-1;;8467:24:22;;;-1:-1:-1;;;;;;;8505:20:22;;8501:113;;-1:-1:-1;8557:1:22;;-1:-1:-1;8561:29:22;;-1:-1:-1;8557:1:22;;-1:-1:-1;8541:62:22;;8501:113;8632:6;-1:-1:-1;8640:20:22;;-1:-1:-1;8640:20:22;;-1:-1:-1;7129:1551:22;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:543:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:543;;209:43;;199:71;;266:1;263;256:12;497:382;575:8;585:6;639:3;632:4;624:6;620:17;616:27;606:55;;657:1;654;647:12;606:55;-1:-1:-1;680:20:543;;723:18;712:30;;709:50;;;755:1;752;745:12;709:50;792:4;784:6;780:17;768:29;;852:3;845:4;835:6;832:1;828:14;820:6;816:27;812:38;809:47;806:67;;;869:1;866;859:12;884:766;1034:6;1042;1050;1103:2;1091:9;1082:7;1078:23;1074:32;1071:52;;;1119:1;1116;1109:12;1071:52;1159:9;1146:23;1188:18;1229:2;1221:6;1218:14;1215:34;;;1245:1;1242;1235:12;1215:34;1268:22;;;;1324:3;1306:16;;;1302:26;1299:46;;;1341:1;1338;1331:12;1299:46;1364:2;;-1:-1:-1;1419:2:543;1404:18;;1391:32;;1435:16;;;1432:36;;;1464:1;1461;1454:12;1432:36;;1503:87;1582:7;1571:8;1560:9;1556:24;1503:87;:::i;:::-;884:766;;1609:8;;-1:-1:-1;1477:113:543;;-1:-1:-1;;;;884:766:543:o;1655:180::-;1714:6;1767:2;1755:9;1746:7;1742:23;1738:32;1735:52;;;1783:1;1780;1773:12;1735:52;-1:-1:-1;1806:23:543;;1655:180;-1:-1:-1;1655:180:543:o;1840:154::-;-1:-1:-1;;;;;1919:5:543;1915:54;1908:5;1905:65;1895:93;;1984:1;1981;1974:12;1999:134;2067:20;;2096:31;2067:20;2096:31;:::i;2138:778::-;2305:6;2313;2321;2329;2337;2390:3;2378:9;2369:7;2365:23;2361:33;2358:53;;;2407:1;2404;2397:12;2358:53;2446:9;2433:23;2465:31;2490:5;2465:31;:::i;:::-;2515:5;-1:-1:-1;2567:2:543;2552:18;;2539:32;;-1:-1:-1;2618:2:543;2603:18;;2590:32;;-1:-1:-1;2673:2:543;2658:18;;2645:32;2700:18;2689:30;;2686:50;;;2732:1;2729;2722:12;2686:50;2771:85;2848:7;2839:6;2828:9;2824:22;2771:85;:::i;:::-;2138:778;;;;-1:-1:-1;2138:778:543;;-1:-1:-1;2875:8:543;;2745:111;2138:778;-1:-1:-1;;;2138:778:543:o;2921:456::-;2998:6;3006;3014;3067:2;3055:9;3046:7;3042:23;3038:32;3035:52;;;3083:1;3080;3073:12;3035:52;3122:9;3109:23;3141:31;3166:5;3141:31;:::i;:::-;3191:5;-1:-1:-1;3248:2:543;3233:18;;3220:32;3261:33;3220:32;3261:33;:::i;:::-;2921:456;;3313:7;;-1:-1:-1;;;3367:2:543;3352:18;;;;3339:32;;2921:456::o;3591:967::-;3719:6;3727;3735;3743;3751;3804:3;3792:9;3783:7;3779:23;3775:33;3772:53;;;3821:1;3818;3811:12;3772:53;3860:9;3847:23;3879:31;3904:5;3879:31;:::i;:::-;3929:5;-1:-1:-1;3986:2:543;3971:18;;3958:32;3999:33;3958:32;3999:33;:::i;:::-;4051:7;-1:-1:-1;4105:2:543;4090:18;;4077:32;;-1:-1:-1;4160:2:543;4145:18;;4132:32;4183:18;4213:14;;;4210:34;;;4240:1;4237;4230:12;4210:34;4278:6;4267:9;4263:22;4253:32;;4323:7;4316:4;4312:2;4308:13;4304:27;4294:55;;4345:1;4342;4335:12;4294:55;4385:2;4372:16;4411:2;4403:6;4400:14;4397:34;;;4427:1;4424;4417:12;4397:34;4472:7;4467:2;4458:6;4454:2;4450:15;4446:24;4443:37;4440:57;;;4493:1;4490;4483:12;4440:57;3591:967;;;;-1:-1:-1;3591:967:543;;-1:-1:-1;4524:2:543;4516:11;;4546:6;3591:967;-1:-1:-1;;;3591:967:543:o;4563:247::-;4622:6;4675:2;4663:9;4654:7;4650:23;4646:32;4643:52;;;4691:1;4688;4681:12;4643:52;4730:9;4717:23;4749:31;4774:5;4749:31;:::i;4997:167::-;5068:5;5113:3;5104:6;5099:3;5095:16;5091:26;5088:46;;;5130:1;5127;5120:12;5088:46;-1:-1:-1;5152:6:543;4997:167;-1:-1:-1;4997:167:543:o;5169:379::-;5267:6;5320:2;5308:9;5299:7;5295:23;5291:32;5288:52;;;5336:1;5333;5326:12;5288:52;5376:9;5363:23;5409:18;5401:6;5398:30;5395:50;;;5441:1;5438;5431:12;5395:50;5464:78;5534:7;5525:6;5514:9;5510:22;5464:78;:::i;5860:752::-;6016:6;6024;6032;6085:2;6073:9;6064:7;6060:23;6056:32;6053:52;;;6101:1;6098;6091:12;6053:52;6141:9;6128:23;6170:18;6211:2;6203:6;6200:14;6197:34;;;6227:1;6224;6217:12;6197:34;6250:78;6320:7;6311:6;6300:9;6296:22;6250:78;:::i;:::-;6240:88;;6381:2;6370:9;6366:18;6353:32;6337:48;;6410:2;6400:8;6397:16;6394:36;;;6426:1;6423;6416:12;6617:388;6704:6;6757:2;6745:9;6736:7;6732:23;6728:32;6725:52;;;6773:1;6770;6763:12;6725:52;6813:9;6800:23;6846:18;6838:6;6835:30;6832:50;;;6878:1;6875;6868:12;6832:50;6901:22;;6957:3;6939:16;;;6935:26;6932:46;;;6974:1;6971;6964:12;7398:463;7495:6;7503;7556:2;7544:9;7535:7;7531:23;7527:32;7524:52;;;7572:1;7569;7562:12;7524:52;7612:9;7599:23;7645:18;7637:6;7634:30;7631:50;;;7677:1;7674;7667:12;7631:50;7716:85;7793:7;7784:6;7773:9;7769:22;7716:85;:::i;:::-;7820:8;;7690:111;;-1:-1:-1;7398:463:543;-1:-1:-1;;;;7398:463:543:o;7866:288::-;7907:3;7945:5;7939:12;7972:6;7967:3;7960:19;8028:6;8021:4;8014:5;8010:16;8003:4;7998:3;7994:14;7988:47;8080:1;8073:4;8064:6;8059:3;8055:16;8051:27;8044:38;8143:4;8136:2;8132:7;8127:2;8119:6;8115:15;8111:29;8106:3;8102:39;8098:50;8091:57;;;7866:288;;;;:::o;8159:800::-;8319:4;8348:2;8388;8377:9;8373:18;8418:2;8407:9;8400:21;8441:6;8476;8470:13;8507:6;8499;8492:22;8545:2;8534:9;8530:18;8523:25;;8607:2;8597:6;8594:1;8590:14;8579:9;8575:30;8571:39;8557:53;;8645:2;8637:6;8633:15;8666:1;8676:254;8690:6;8687:1;8684:13;8676:254;;;8783:2;8779:7;8767:9;8759:6;8755:22;8751:36;8746:3;8739:49;8811:39;8843:6;8834;8828:13;8811:39;:::i;:::-;8801:49;-1:-1:-1;8908:12:543;;;;8873:15;;;;8712:1;8705:9;8676:254;;;-1:-1:-1;8947:6:543;;8159:800;-1:-1:-1;;;;;;;8159:800:543:o;9448:315::-;9516:6;9524;9577:2;9565:9;9556:7;9552:23;9548:32;9545:52;;;9593:1;9590;9583:12;9545:52;9632:9;9619:23;9651:31;9676:5;9651:31;:::i;:::-;9701:5;9753:2;9738:18;;;;9725:32;;-1:-1:-1;;;9448:315:543:o;9768:127::-;9829:10;9824:3;9820:20;9817:1;9810:31;9860:4;9857:1;9850:15;9884:4;9881:1;9874:15;9900:253;9972:2;9966:9;10014:4;10002:17;;10049:18;10034:34;;10070:22;;;10031:62;10028:88;;;10096:18;;:::i;:::-;10132:2;10125:22;9900:253;:::o;10158:257::-;10230:4;10224:11;;;10262:17;;10309:18;10294:34;;10330:22;;;10291:62;10288:88;;;10356:18;;:::i;10420:253::-;10492:2;10486:9;10534:4;10522:17;;10569:18;10554:34;;10590:22;;;10551:62;10548:88;;;10616:18;;:::i;10678:275::-;10749:2;10743:9;10814:2;10795:13;;-1:-1:-1;;10791:27:543;10779:40;;10849:18;10834:34;;10870:22;;;10831:62;10828:88;;;10896:18;;:::i;:::-;10932:2;10925:22;10678:275;;-1:-1:-1;10678:275:543:o;10958:530::-;11000:5;11053:3;11046:4;11038:6;11034:17;11030:27;11020:55;;11071:1;11068;11061:12;11020:55;11107:6;11094:20;11133:18;11129:2;11126:26;11123:52;;;11155:18;;:::i;:::-;11199:55;11242:2;11223:13;;-1:-1:-1;;11219:27:543;11248:4;11215:38;11199:55;:::i;:::-;11279:2;11270:7;11263:19;11325:3;11318:4;11313:2;11305:6;11301:15;11297:26;11294:35;11291:55;;;11342:1;11339;11332:12;11291:55;11407:2;11400:4;11392:6;11388:17;11381:4;11372:7;11368:18;11355:55;11455:1;11430:16;;;11448:4;11426:27;11419:38;;;;11434:7;10958:530;-1:-1:-1;;;10958:530:543:o;11493:624::-;11551:5;11599:4;11587:9;11582:3;11578:19;11574:30;11571:50;;;11617:1;11614;11607:12;11571:50;11639:22;;:::i;:::-;11630:31;;11698:9;11685:23;11717:33;11742:7;11717:33;:::i;:::-;11759:22;;11833:2;11818:18;;11805:32;11846:33;11805:32;11846:33;:::i;:::-;11906:2;11895:14;;11888:31;11970:2;11955:18;;11942:32;11997:18;11986:30;;11983:50;;;12029:1;12026;12019:12;11983:50;12065:45;12106:3;12097:6;12086:9;12082:22;12065:45;:::i;:::-;12060:2;12053:5;12049:14;12042:69;;11493:624;;;;:::o;12122:187::-;12186:4;12219:18;12211:6;12208:30;12205:56;;;12241:18;;:::i;:::-;-1:-1:-1;12286:1:543;12282:14;12298:4;12278:25;;12122:187::o;12314:352::-;12365:5;12413:4;12401:9;12396:3;12392:19;12388:30;12385:50;;;12431:1;12428;12421:12;12385:50;12453:22;;:::i;:::-;12444:31;;12512:9;12499:23;12531:33;12556:7;12531:33;:::i;:::-;12587:7;12580:5;12573:22;;12655:2;12644:9;12640:18;12627:32;12622:2;12615:5;12611:14;12604:56;12314:352;;;;:::o;12671:693::-;12729:5;12782:3;12775:4;12767:6;12763:17;12759:27;12749:55;;12800:1;12797;12790:12;12749:55;12836:6;12823:20;12862:4;12886:64;12902:47;12946:2;12902:47;:::i;:::-;12886:64;:::i;:::-;12972:3;12996:2;12991:3;12984:15;13024:4;13019:3;13015:14;13008:21;;13081:4;13075:2;13072:1;13068:10;13060:6;13056:23;13052:34;13038:48;;13109:3;13101:6;13098:15;13095:35;;;13126:1;13123;13116:12;13095:35;13162:4;13154:6;13150:17;13176:159;13192:6;13187:3;13184:15;13176:159;;;13260:32;13288:3;13283;13260:32;:::i;:::-;13248:45;;13313:12;;;;13218:4;13209:14;13176:159;;;-1:-1:-1;13353:5:543;12671:693;-1:-1:-1;;;;;;12671:693:543:o;13369:912::-;13423:5;13471:4;13459:9;13454:3;13450:19;13446:30;13443:50;;;13489:1;13486;13479:12;13443:50;13511:22;;:::i;:::-;13502:31;;13556:29;13575:9;13556:29;:::i;:::-;13549:5;13542:44;13637:2;13626:9;13622:18;13609:32;13660:18;13701:2;13693:6;13690:14;13687:34;;;13717:1;13714;13707:12;13687:34;13753:58;13807:3;13798:6;13787:9;13783:22;13753:58;:::i;:::-;13748:2;13741:5;13737:14;13730:82;13865:2;13854:9;13850:18;13837:32;13821:48;;13894:2;13884:8;13881:16;13878:36;;;13910:1;13907;13900:12;13878:36;13946:63;14005:3;13994:8;13983:9;13979:24;13946:63;:::i;:::-;13941:2;13934:5;13930:14;13923:87;14063:2;14052:9;14048:18;14035:32;14019:48;;14092:2;14082:8;14079:16;14076:36;;;14108:1;14105;14098:12;14076:36;;14144:63;14203:3;14192:8;14181:9;14177:24;14144:63;:::i;:::-;14139:2;14132:5;14128:14;14121:87;;14269:3;14258:9;14254:19;14241:33;14235:3;14228:5;14224:15;14217:58;13369:912;;;;:::o;14286:2014::-;14380:5;14409:68;14425:51;14469:6;14425:51;:::i;14409:68::-;14511:21;;;14400:77;-1:-1:-1;14551:4:543;14571:14;;;;14604:1;14640:14;;;14628:27;;14667:15;;;14664:35;;;14695:1;14692;14685:12;14664:35;14719:6;14734:1560;14750:6;14745:3;14742:15;14734:1560;;;14836:3;14823:17;14863:18;14913:2;14900:11;14897:19;14894:39;;;14929:1;14926;14919:12;14894:39;14956:24;;;;15014:4;15000:12;;;14996:23;14993:43;;;15032:1;15029;15022:12;14993:43;15062:22;;:::i;:::-;15125:2;15112:16;15141:33;15166:7;15141:33;:::i;:::-;15187:22;;15251:11;;;15238:25;15279:16;;;15276:36;;;15308:1;15305;15298:12;15276:36;15335:17;;15387:4;15379:13;;15375:23;-1:-1:-1;15365:51:543;;15412:1;15409;15402:12;15365:51;15452:2;15439:16;15481:64;15497:47;15541:2;15497:47;:::i;15481:64::-;15589:17;;;15683:11;;;15675:20;;15671:29;;;15628:14;;;;15716:17;;;15713:37;;;15746:1;15743;15736:12;15713:37;15776:11;;;;15800:174;15818:8;15811:5;15808:19;15800:174;;;15900:19;;15886:34;;15839:14;;;;15946;;;;15800:174;;;15994:14;;;15987:29;-1:-1:-1;16039:2:543;;-1:-1:-1;;16083:11:543;;;16070:25;16111:16;;;16108:36;;;16140:1;16137;16130:12;16108:36;16180:40;16216:3;16205:8;16201:2;16197:17;16180:40;:::i;:::-;16164:14;;;16157:64;;;;-1:-1:-1;16234:18:543;;-1:-1:-1;;16272:12:543;;;;14767;;14734:1560;;;14738:3;;;;;14286:2014;;;;;:::o;16305:274::-;16374:5;16427:3;16420:4;16412:6;16408:17;16404:27;16394:55;;16445:1;16442;16435:12;16394:55;16467:106;16569:3;16560:6;16547:20;16540:4;16532:6;16528:17;16467:106;:::i;16584:1288::-;16883:6;16891;16899;16907;16915;16968:3;16956:9;16947:7;16943:23;16939:33;16936:53;;;16985:1;16982;16975:12;16936:53;17025:9;17012:23;17054:18;17095:2;17087:6;17084:14;17081:34;;;17111:1;17108;17101:12;17081:34;17134:58;17184:7;17175:6;17164:9;17160:22;17134:58;:::i;:::-;17124:68;;17245:2;17234:9;17230:18;17217:32;17201:48;;17274:2;17264:8;17261:16;17258:36;;;17290:1;17287;17280:12;17258:36;17313:60;17365:7;17354:8;17343:9;17339:24;17313:60;:::i;:::-;17303:70;;17392:74;17458:7;17453:2;17442:9;17438:18;17392:74;:::i;:::-;17382:84;;17519:3;17508:9;17504:19;17491:33;17475:49;;17549:2;17539:8;17536:16;17533:36;;;17565:1;17562;17555:12;17533:36;17588:78;17658:7;17647:8;17636:9;17632:24;17588:78;:::i;:::-;17578:88;;17719:3;17708:9;17704:19;17691:33;17675:49;;17749:2;17739:8;17736:16;17733:36;;;17765:1;17762;17755:12;17733:36;;17788:78;17858:7;17847:8;17836:9;17832:24;17788:78;:::i;:::-;17778:88;;;16584:1288;;;;;;;;:::o;18108:195::-;18212:9;18249:48;18282:14;18275:5;18249:48;:::i;18308:266::-;18396:6;18391:3;18384:19;18448:6;18441:5;18434:4;18429:3;18425:14;18412:43;-1:-1:-1;18500:1:543;18475:16;;;18493:4;18471:27;;;18464:38;;;;18556:2;18535:15;;;-1:-1:-1;;18531:29:543;18522:39;;;18518:50;;18308:266::o;18579:954::-;18642:3;18688:5;18675:19;18703:33;18728:7;18703:33;:::i;:::-;-1:-1:-1;;;;;18818:16:543;;;18806:29;;18883:4;18872:16;;18859:30;;18898:33;18859:30;18898:33;:::i;:::-;18963:16;18956:4;18947:14;;18940:40;19039:4;19028:16;;19015:30;19096:14;19092:26;;;-1:-1:-1;;19088:40:543;19064:65;;19054:93;;19143:1;19140;19133:12;19054:93;19171:30;;19282:4;19269:18;;;19224:21;19310:18;19299:30;;19296:50;;;19342:1;19339;19332:12;19296:50;19391:6;19375:14;19371:27;19362:7;19358:41;19355:61;;;19412:1;19409;19402:12;19355:61;19448:4;19441;19436:3;19432:14;19425:28;19469:58;19521:4;19516:3;19512:14;19504:6;19495:7;19469:58;:::i;19538:533::-;19621:5;19628:6;19688:3;19675:17;19774:2;19770:7;19759:8;19743:14;19739:29;19735:43;19715:18;19711:68;19701:96;;19793:1;19790;19783:12;19701:96;19821:33;;19925:4;19912:18;;;-1:-1:-1;19873:21:543;;-1:-1:-1;19953:18:543;19942:30;;19939:50;;;19985:1;19982;19975:12;19939:50;20039:6;20036:1;20032:14;20016;20012:35;20005:5;20001:47;19998:67;;;20061:1;20058;20051:12;20076:651;20189:6;20184:3;20177:19;20159:3;20215:4;20244;20239:3;20235:14;20228:21;;20272:5;20295:1;20305:397;20319:6;20316:1;20313:13;20305:397;;;20396:6;20383:20;20416:33;20441:7;20416:33;:::i;:::-;-1:-1:-1;;;;;20474:56:543;20462:69;;20578:15;;;20565:29;20551:12;;;20544:51;20618:4;20642:12;;;;20677:15;;;;20341:1;20334:9;20305:397;;;-1:-1:-1;20718:3:543;;20076:651;-1:-1:-1;;;;;20076:651:543:o;20732:1589::-;20934:4;-1:-1:-1;;;;;21044:2:543;21036:6;21032:15;21021:9;21014:34;21084:6;21079:2;21068:9;21064:18;21057:34;21127:2;21122;21111:9;21107:18;21100:30;21165:6;21152:20;21181:31;21206:5;21181:31;:::i;:::-;21248:14;21243:2;21228:18;;21221:42;21323:2;21311:15;;21298:29;21378:14;21374:27;;;-1:-1:-1;;21370:41:543;21346:66;;21336:94;;21426:1;21423;21416:12;21336:94;21467:4;21461:3;21450:9;21446:19;21439:33;21495:92;21582:3;21571:9;21567:19;21558:6;21538:18;21534:31;21495:92;:::i;:::-;21481:106;;21630:80;21706:2;21698:6;21694:15;21686:6;21630:80;:::i;:::-;21733:2;21729:7;21802:2;21790:9;21782:6;21778:22;21774:31;21767:4;21756:9;21752:20;21745:61;21829:86;21908:6;21894:12;21880;21829:86;:::i;:::-;21815:100;;21962:80;22038:2;22030:6;22026:15;22018:6;21962:80;:::i;:::-;21924:118;;;;22107:2;22095:9;22087:6;22083:22;22079:31;22073:3;22062:9;22058:19;22051:60;;22134:90;22217:6;22201:14;22185;22134:90;:::i;:::-;22120:104;;;;22286:3;22278:6;22274:16;22261:30;22255:3;22244:9;22240:19;22233:59;22309:6;22301:14;;;20732:1589;;;;;;:::o;22326:1387::-;22494:9;22529:68;22545:51;22589:6;22545:51;:::i;22529:68::-;22619:3;22643:6;22638:3;22631:19;22669:4;22698;22693:3;22689:14;22682:21;;22744:6;22741:1;22737:14;22730:5;22726:26;22775:14;22767:6;22764:26;22761:46;;;22803:1;22800;22793:12;22761:46;22827:5;22841:839;22857:6;22852:3;22849:15;22841:839;;;22943:3;22930:17;22970:18;23020:2;23007:11;23004:19;23001:39;;;23036:1;23033;23026:12;23001:39;23074:11;23067:5;23063:23;23053:33;;23131:4;23126:2;23110:14;23106:23;23102:34;23099:54;;;23149:1;23146;23139:12;23099:54;23181:22;;:::i;:::-;23243:2;23230:16;23273:2;23265:6;23262:14;23259:34;;;23289:1;23286;23279:12;23259:34;23322:62;23369:14;23360:6;23356:2;23352:15;23322:62;:::i;:::-;23313:7;23306:79;;23435:2;23431;23427:11;23414:25;23468:2;23458:8;23455:16;23452:36;;;23484:1;23481;23474:12;23452:36;23526:78;23589:14;23578:8;23574:2;23570:17;23526:78;:::i;:::-;23508:16;;;23501:104;-1:-1:-1;23618:20:543;;-1:-1:-1;;23658:12:543;;;;22874;;22841:839;;;-1:-1:-1;23702:5:543;;22326:1387;-1:-1:-1;;;;;;22326:1387:543:o;24596:610::-;24828:4;-1:-1:-1;;;;;24938:2:543;24930:6;24926:15;24915:9;24908:34;24990:2;24982:6;24978:15;24973:2;24962:9;24958:18;24951:43;;25030:6;25025:2;25014:9;25010:18;25003:34;25073:6;25068:2;25057:9;25053:18;25046:34;25117:3;25111;25100:9;25096:19;25089:32;25138:62;25195:3;25184:9;25180:19;25172:6;25164;25138:62;:::i;:::-;25130:70;24596:610;-1:-1:-1;;;;;;;;24596:610:543:o;25211:184::-;25281:6;25334:2;25322:9;25313:7;25309:23;25305:32;25302:52;;;25350:1;25347;25340:12;25302:52;-1:-1:-1;25373:16:543;;25211:184;-1:-1:-1;25211:184:543:o;25582:127::-;25643:10;25638:3;25634:20;25631:1;25624:31;25674:4;25671:1;25664:15;25698:4;25695:1;25688:15;25714:125;25779:9;;;25800:10;;;25797:36;;;25813:18;;:::i;26706:583::-;26837:4;26843:6;26903:11;26890:25;26997:2;26993:7;26982:8;26966:14;26962:29;26958:43;26938:18;26934:68;26924:96;;27016:1;27013;27006:12;26924:96;27043:33;;27095:20;;;-1:-1:-1;27138:18:543;27127:30;;27124:50;;;27170:1;27167;27160:12;27124:50;27203:4;27191:17;;-1:-1:-1;27254:1:543;27250:14;;;27234;27230:35;27220:46;;27217:66;;;27279:1;27276;27269:12;27294:127;27355:10;27350:3;27346:20;27343:1;27336:31;27386:4;27383:1;27376:15;27410:4;27407:1;27400:15;27426:336;27530:4;27588:11;27575:25;27682:3;27678:8;27667;27651:14;27647:29;27643:44;27623:18;27619:69;27609:97;;27702:1;27699;27692:12;27609:97;27723:33;;;;;27426:336;-1:-1:-1;;27426:336:543:o;27767:326::-;27861:4;27919:11;27906:25;28013:3;28009:8;27998;27982:14;27978:29;27974:44;27954:18;27950:69;27940:97;;28033:1;28030;28023:12;28098:570;28216:4;28222:6;28282:11;28269:25;28376:2;28372:7;28361:8;28345:14;28341:29;28337:43;28317:18;28313:68;28303:96;;28395:1;28392;28385:12;28303:96;28422:33;;28474:20;;;-1:-1:-1;28517:18:543;28506:30;;28503:50;;;28549:1;28546;28539:12;28503:50;28582:4;28570:17;;-1:-1:-1;28633:1:543;28629:14;;;28613;28609:35;28599:46;;28596:66;;;28658:1;28655;28648:12;28673:972;28797:9;28856:4;28848:5;28832:14;28828:26;28824:37;28821:57;;;28874:1;28871;28864:12;28821:57;28907:2;28901:9;28949:4;28941:6;28937:17;28973:18;29041:6;29029:10;29026:22;29021:2;29009:10;29006:18;29003:46;29000:72;;;29052:18;;:::i;:::-;29092:10;29088:2;29081:22;29139:5;29126:19;29112:33;;29168:2;29160:6;29157:14;29154:34;;;29184:1;29181;29174:12;29154:34;29212:61;29258:14;29249:6;29242:5;29238:18;29212:61;:::i;:::-;29204:6;29197:77;29331:2;29324:5;29320:14;29307:28;29302:2;29294:6;29290:15;29283:53;29393:2;29386:5;29382:14;29369:28;29364:2;29356:6;29352:15;29345:53;29447:2;29440:5;29436:14;29423:28;29407:44;;29476:2;29466:8;29463:16;29460:36;;;29492:1;29489;29482:12;29460:36;;29529:81;29595:14;29584:8;29577:5;29573:20;29529:81;:::i;:::-;29524:2;29512:15;;29505:106;-1:-1:-1;29516:6:543;28673:972;-1:-1:-1;;28673:972:543:o;29650:273::-;29706:6;29759:2;29747:9;29738:7;29734:23;29730:32;29727:52;;;29775:1;29772;29765:12;29727:52;29814:9;29801:23;29867:5;29860:13;29853:21;29846:5;29843:32;29833:60;;29889:1;29886;29879:12;29928:579;29985:3;30023:5;30017:12;30050:6;30045:3;30038:19;30076:4;30105;30100:3;30096:14;30089:21;;30144:4;30137:5;30133:16;30167:1;30177:305;30191:6;30188:1;30185:13;30177:305;;;30250:13;;30292:9;;-1:-1:-1;;;;;30288:58:543;30276:71;;30387:11;;30381:18;30367:12;;;30360:40;30429:4;30420:14;;;;30457:15;;;;30213:1;30206:9;30177:305;;30512:990;30562:3;-1:-1:-1;;;;;30671:2:543;30663:5;30657:12;30653:21;30648:3;30641:34;30721:4;30714:5;30710:16;30704:23;30759:4;30752;30747:3;30743:14;30736:28;30821:2;30806:12;30800:19;30796:28;30789:4;30784:3;30780:14;30773:52;30892:2;30884:4;30870:12;30866:23;30860:30;30856:39;30850:3;30845;30841:13;30834:62;30951:4;30937:12;30933:23;30927:30;30905:52;;;30988:4;30982:3;30977;30973:13;30966:27;31015:47;31057:3;31052;31048:13;31032:14;31015:47;:::i;:::-;31002:60;;31110:4;31103:5;31099:16;31093:23;31159:3;31152:5;31148:15;31141:4;31136:3;31132:14;31125:39;31185:55;31234:5;31218:14;31185:55;:::i;:::-;31173:67;;;31288:4;31281:5;31277:16;31271:23;31336:3;31330:4;31326:14;31319:4;31314:3;31310:14;31303:38;31364:54;31413:4;31397:14;31364:54;:::i;:::-;31350:68;;;31467:4;31460:5;31456:16;31450:23;31443:4;31438:3;31434:14;31427:47;31490:6;31483:13;;;30512:990;;;;:::o;31507:439::-;31560:3;31598:5;31592:12;31625:6;31620:3;31613:19;31651:4;31680;31675:3;31671:14;31664:21;;31719:4;31712:5;31708:16;31742:1;31752:169;31766:6;31763:1;31760:13;31752:169;;;31827:13;;31815:26;;31861:12;;;;31896:15;;;;31788:1;31781:9;31752:169;;31951:1951;32253:4;-1:-1:-1;;;;;32363:2:543;32355:6;32351:15;32340:9;32333:34;32386:2;32424:3;32419:2;32408:9;32404:18;32397:31;32463:6;32457:13;32507:3;32501;32490:9;32486:19;32479:32;32534:60;32589:3;32578:9;32574:19;32560:12;32534:60;:::i;:::-;32520:74;;32649:2;32641:6;32637:15;32631:22;32625:3;32614:9;32610:19;32603:51;32673:4;32732;32724:6;32720:17;32714:24;32708:3;32697:9;32693:19;32686:53;32758:4;32811;32803:6;32799:17;32793:24;32886:3;32882:8;32870:9;32862:6;32858:22;32854:37;32848:3;32837:9;32833:19;32826:66;32912:6;32947:14;32941:21;32986:6;32978;32971:22;33021:2;33013:6;33009:15;33002:22;;33080:2;33070:6;33067:1;33063:14;33055:6;33051:27;33047:36;33126:2;33110:14;33106:23;33092:37;;33147:1;33157:626;33171:6;33168:1;33165:13;33157:626;;;33261:2;33257:7;33248:6;33240;33236:19;33232:33;33227:3;33220:46;33295:6;33289:13;33345:2;33340;33334:9;33330:18;33322:6;33315:34;33398:2;33394;33390:11;33384:18;33439:2;33434;33426:6;33422:15;33415:27;33469:61;33526:2;33518:6;33514:15;33498:14;33469:61;:::i;:::-;33571:11;;;33565:18;33620:19;;;33603:15;;;33596:44;33565:18;33455:75;-1:-1:-1;33663:40:543;33455:75;33565:18;33663:40;:::i;:::-;33726:15;;;;33761:12;;;;33653:50;-1:-1:-1;;;33193:1:543;33186:9;33157:626;;;33161:3;33800:6;33792:14;;;;;;;;;;;33844:6;33837:4;33826:9;33822:20;33815:36;33889:6;33882:4;33871:9;33867:20;33860:36;31951:1951;;;;;;;:::o;33907:521::-;33984:4;33990:6;34050:11;34037:25;34144:2;34140:7;34129:8;34113:14;34109:29;34105:43;34085:18;34081:68;34071:96;;34163:1;34160;34153:12;34071:96;34190:33;;34242:20;;;-1:-1:-1;34285:18:543;34274:30;;34271:50;;;34317:1;34314;34307:12;34271:50;34350:4;34338:17;;-1:-1:-1;34381:14:543;34377:27;;;34367:38;;34364:58;;;34418:1;34415;34408:12;35102:329;35200:4;35258:11;35245:25;35352:2;35348:7;35337:8;35321:14;35317:29;35313:43;35293:18;35289:68;35279:96;;35371:1;35368;35361:12;35436:207;35548:9;35585:52;35622:14;35615:5;35585:52;:::i;35648:222::-;35730:6;35783:2;35771:9;35762:7;35758:23;35754:32;35751:52;;;35799:1;35796;35789:12;35751:52;35822:42;35856:7;35845:9;35822:42;:::i;35875:451::-;-1:-1:-1;;;;;36116:6:543;36112:55;36101:9;36094:74;36204:6;36199:2;36188:9;36184:18;36177:34;36247:2;36242;36231:9;36227:18;36220:30;36075:4;36267:53;36316:2;36305:9;36301:18;36293:6;36267:53;:::i;36331:435::-;-1:-1:-1;;;;;36548:6:543;36544:55;36533:9;36526:74;36636:6;36631:2;36620:9;36616:18;36609:34;36679:2;36674;36663:9;36659:18;36652:30;36507:4;36699:61;36756:2;36745:9;36741:18;36733:6;36725;36699:61;:::i;:::-;36691:69;36331:435;-1:-1:-1;;;;;;36331:435:543:o;37357:320::-;37543:9;37580:91;37656:14;37648:6;37641:5;37580:91;:::i;38151:454::-;38380:6;38372;38367:3;38354:33;38336:3;38415:6;38410:3;38406:16;38442:1;38438:2;38431:13;38473:6;38467:13;38518:6;38511:4;38503:6;38499:17;38495:2;38489:36;38579:1;38544:15;;38568:13;;;38544:15;38151:454;-1:-1:-1;;;;;38151:454:543:o;38610:1093::-;38956:4;38985:3;-1:-1:-1;;;;;39019:6:543;39015:55;39004:9;38997:74;39107:2;39102;39091:9;39087:18;39080:30;39133:53;39182:2;39171:9;39167:18;39159:6;39133:53;:::i;:::-;39119:67;;39234:9;39226:6;39222:22;39217:2;39206:9;39202:18;39195:50;39262:41;39296:6;39288;39262:41;:::i;:::-;39254:49;;;39352:6;39339:20;39334:2;39323:9;39319:18;39312:48;39422:2;39414:6;39410:15;39397:29;39391:3;39380:9;39376:19;39369:58;39489:2;39481:6;39477:15;39464:29;39458:3;39447:9;39443:19;39436:58;39556:2;39548:6;39544:15;39531:29;39525:3;39514:9;39510:19;39503:58;39623:3;39615:6;39611:16;39598:30;39592:3;39581:9;39577:19;39570:59;39691:3;39683:6;39679:16;39666:30;39660:3;39649:9;39645:19;39638:59;38610:1093;;;;;;;:::o;40270:260::-;40451:2;40440:9;40433:21;40414:4;40471:53;40520:2;40509:9;40505:18;40497:6;40471:53;:::i;40535:620::-;40598:3;40629;40661:5;40655:12;40688:6;40683:3;40676:19;40714:4;40743;40738:3;40734:14;40727:21;;40801:4;40791:6;40788:1;40784:14;40777:5;40773:26;40769:37;40840:4;40833:5;40829:16;40863:1;40873:256;40887:6;40884:1;40881:13;40873:256;;;40974:2;40970:7;40962:5;40956:4;40952:16;40948:30;40943:3;40936:43;41000:49;41044:4;41035:6;41029:13;41000:49;:::i;:::-;41107:12;;;;40992:57;-1:-1:-1;41072:15:543;;;;40909:1;40902:9;40873:256;;;-1:-1:-1;41145:4:543;;40535:620;-1:-1:-1;;;;;;;40535:620:543:o;41160:1197::-;41339:2;41328:9;41321:21;-1:-1:-1;;;;;41388:6:543;41382:13;41378:62;41373:2;41362:9;41358:18;41351:90;41495:2;41487:6;41483:15;41477:22;41472:2;41461:9;41457:18;41450:50;41302:4;41547:2;41539:6;41535:15;41529:22;41587:4;41582:2;41571:9;41567:18;41560:32;41615:51;41661:3;41650:9;41646:19;41632:12;41615:51;:::i;:::-;41601:65;;41721:2;41713:6;41709:15;41703:22;41697:3;41686:9;41682:19;41675:51;41775:3;41767:6;41763:16;41757:23;41803:2;41799:7;41871:2;41859:9;41851:6;41847:22;41843:31;41837:3;41826:9;41822:19;41815:60;41898:62;41953:6;41937:14;41898:62;:::i;:::-;41884:76;;42009:3;42001:6;41997:16;41991:23;41969:45;;42079:2;42067:9;42059:6;42055:22;42051:31;42045:3;42034:9;42030:19;42023:60;42106:52;42151:6;42135:14;42106:52;:::i;:::-;42092:66;;42207:3;42199:6;42195:16;42189:23;42167:45;;42278:2;42266:9;42258:6;42254:22;42250:31;42243:4;42232:9;42228:20;42221:61;;42299:52;42344:6;42328:14;42299:52;:::i;42362:669::-;42427:5;42480:3;42473:4;42465:6;42461:17;42457:27;42447:55;;42498:1;42495;42488:12;42447:55;42527:6;42521:13;42553:4;42577:64;42593:47;42637:2;42593:47;:::i;42577:64::-;42663:3;42687:2;42682:3;42675:15;42715:4;42710:3;42706:14;42699:21;;42772:4;42766:2;42763:1;42759:10;42751:6;42747:23;42743:34;42729:48;;42800:3;42792:6;42789:15;42786:35;;;42817:1;42814;42807:12;42786:35;42853:4;42845:6;42841:17;42867:135;42883:6;42878:3;42875:15;42867:135;;;42949:10;;42937:23;;42980:12;;;;42900;;42867:135;;43036:1169;43196:6;43204;43257:2;43245:9;43236:7;43232:23;43228:32;43225:52;;;43273:1;43270;43263:12;43225:52;43306:9;43300:16;43335:18;43376:2;43368:6;43365:14;43362:34;;;43392:1;43389;43382:12;43362:34;43430:6;43419:9;43415:22;43405:32;;43475:7;43468:4;43464:2;43460:13;43456:27;43446:55;;43497:1;43494;43487:12;43446:55;43526:2;43520:9;43548:4;43572:64;43588:47;43632:2;43588:47;:::i;43572:64::-;43670:15;;;43752:1;43748:10;;;;43740:19;;43736:28;;;43701:12;;;;43776:19;;;43773:39;;;43808:1;43805;43798:12;43773:39;43832:11;;;;43852:135;43868:6;43863:3;43860:15;43852:135;;;43934:10;;43922:23;;43885:12;;;;43965;;;;43852:135;;;44042:18;;;44036:25;44006:5;;-1:-1:-1;44036:25:543;;-1:-1:-1;;;44073:16:543;;;44070:36;;;44102:1;44099;44092:12;44070:36;;44125:74;44191:7;44180:8;44169:9;44165:24;44125:74;:::i;:::-;44115:84;;;43036:1169;;;;;:::o;44210:368::-;44453:6;44442:9;44435:25;44496:2;44491;44480:9;44476:18;44469:30;44416:4;44516:56;44568:2;44557:9;44553:18;44545:6;44516:56;:::i;44915:127::-;44976:10;44971:3;44967:20;44964:1;44957:31;45007:4;45004:1;44997:15;45031:4;45028:1;45021:15;45047:465;-1:-1:-1;;;;;45254:55:543;;45236:74;;45224:2;45209:18;;45340:1;45329:13;;45319:144;;45385:10;45380:3;45376:20;45373:1;45366:31;45420:4;45417:1;45410:15;45448:4;45445:1;45438:15;45319:144;45499:6;45494:2;45483:9;45479:18;45472:34;45047:465;;;;;:::o;45517:135::-;45556:3;45577:17;;;45574:43;;45597:18;;:::i;:::-;-1:-1:-1;45644:1:543;45633:13;;45517:135::o;45657:441::-;-1:-1:-1;;;;;45918:6:543;45914:55;45903:9;45896:74;46006:2;46001;45990:9;45986:18;45979:30;45877:4;46026:66;46088:2;46077:9;46073:18;46065:6;46026:66;:::i;46103:217::-;46250:2;46239:9;46232:21;46213:4;46270:44;46310:2;46299:9;46295:18;46287:6;46270:44;:::i;46325:127::-;46386:10;46381:3;46377:20;46374:1;46367:31;46417:4;46414:1;46407:15;46441:4;46438:1;46431:15;46457:435;46551:6;46559;46612:2;46600:9;46591:7;46587:23;46583:32;46580:52;;;46628:1;46625;46618:12;46580:52;46660:9;46654:16;46699:1;46692:5;46689:12;46679:40;;46715:1;46712;46705:12;46679:40;46788:2;46773:18;;46767:25;46738:5;;-1:-1:-1;46836:4:543;46823:18;;46811:31;;46801:59;;46856:1;46853;46846:12;46801:59;46879:7;46869:17;;;46457:435;;;;;:::o;46897:216::-;46961:9;;;46989:11;;;46936:3;47019:9;;47047:10;;47043:19;;47072:10;;47064:19;;47040:44;47037:70;;;47087:18;;:::i;47118:416::-;47207:1;47244:5;47207:1;47258:270;47279:7;47269:8;47266:21;47258:270;;;47338:4;47334:1;47330:6;47326:17;47320:4;47317:27;47314:53;;;47347:18;;:::i;:::-;47397:7;47387:8;47383:22;47380:55;;;47417:16;;;;47380:55;47496:22;;;;47456:15;;;;47258:270;;;47262:3;47118:416;;;;;:::o;47539:806::-;47588:5;47618:8;47608:80;;-1:-1:-1;47659:1:543;47673:5;;47608:80;47707:4;47697:76;;-1:-1:-1;47744:1:543;47758:5;;47697:76;47789:4;47807:1;47802:59;;;;47875:1;47870:130;;;;47782:218;;47802:59;47832:1;47823:10;;47846:5;;;47870:130;47907:3;47897:8;47894:17;47891:43;;;47914:18;;:::i;:::-;-1:-1:-1;;47970:1:543;47956:16;;47985:5;;47782:218;;48084:2;48074:8;48071:16;48065:3;48059:4;48056:13;48052:36;48046:2;48036:8;48033:16;48028:2;48022:4;48019:12;48015:35;48012:77;48009:159;;;-1:-1:-1;48121:19:543;;;48153:5;;48009:159;48200:34;48225:8;48219:4;48200:34;:::i;:::-;48270:6;48266:1;48262:6;48258:19;48249:7;48246:32;48243:58;;;48281:18;;:::i;:::-;48319:20;;47539:806;-1:-1:-1;;;47539:806:543:o;48350:131::-;48410:5;48439:36;48466:8;48460:4;48439:36;:::i;49386:217::-;49426:1;49452;49442:132;;49496:10;49491:3;49487:20;49484:1;49477:31;49531:4;49528:1;49521:15;49559:4;49556:1;49549:15;49442:132;-1:-1:-1;49588:9:543;;49386:217::o;49608:136::-;49643:3;-1:-1:-1;;;49664:22:543;;49661:48;;49689:18;;:::i","linkReferences":{}},"methodIdentifiers":{"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])":"709fb8a5","clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])":"fa501182","deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":"2fbc4ba0","entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])":"d7e442ec","flashFee(address,uint256)":"d9d98ce4","flashLoan(address,address,uint256,bytes)":"5cffe9de","maxFlashLoan(address)":"613255ab","multicall(bytes[])":"ac9650d8","orderExists(bytes32)":"2cb77e9f","quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))":"9235084d","removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])":"1f69cb75","supportsInterface(bytes4)":"01ffc9a7","takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))":"69c72856","vaultBalance2(address,address,bytes32)":"41d1514f","withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":"60746119"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClearZeroAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"CoefficientOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"DivisionByZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"ExponentOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"ExponentUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"FixedDecimalOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"name\":\"FlashLenderCallbackFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"LossyConversionToFloat\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"MaximizeOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"minimumIO\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"actualIO\",\"type\":\"bytes32\"}],\"name\":\"MinimumIO\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativeBounty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"signedCoefficient\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exponent\",\"type\":\"int256\"}],\"name\":\"NegativeFixedDecimalConversion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativePull\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativePush\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"vaultBalance\",\"type\":\"bytes32\"}],\"name\":\"NegativeVaultBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Float\",\"name\":\"amount\",\"type\":\"bytes32\"}],\"name\":\"NegativeVaultBalanceChange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoOrders\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"NotOrderOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"unmeta\",\"type\":\"bytes\"}],\"name\":\"NotRainMetaV1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNoHandleIO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNoInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNoOutputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNoSources\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"expectedAddress\",\"type\":\"address\"}],\"name\":\"TOFUTokenDecimalsNotDeployed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TOFUOutcome\",\"name\":\"tofuOutcome\",\"type\":\"uint8\"}],\"name\":\"TokenDecimalsReadFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenSelfTrade\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"outputs\",\"type\":\"uint256\"}],\"name\":\"UnsupportedCalculateOutputs\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"name\":\"ZeroDepositAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroMaximumIO\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"ZeroVaultId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"name\":\"ZeroWithdrawTargetAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"AddOrderV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Float\",\"name\":\"aliceOutput\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"bobOutput\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"aliceInput\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"bobInput\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct ClearStateChangeV2\",\"name\":\"clearStateChange\",\"type\":\"tuple\"}],\"name\":\"AfterClearV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct OrderV4\",\"name\":\"alice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct OrderV4\",\"name\":\"bob\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"aliceInputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aliceOutputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bobInputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bobOutputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"aliceBountyVaultId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"bobBountyVaultId\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct ClearConfigV2\",\"name\":\"clearConfig\",\"type\":\"tuple\"}],\"name\":\"ClearV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32[][]\",\"name\":\"context\",\"type\":\"bytes32[][]\"}],\"name\":\"ContextV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositAmountUint256\",\"type\":\"uint256\"}],\"name\":\"DepositV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"subject\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"meta\",\"type\":\"bytes\"}],\"name\":\"MetaV1_2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderExceedsMaxRatio\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderNotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderZeroAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"RemoveOrderV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputIOIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct TakeOrderConfigV4\",\"name\":\"config\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"Float\",\"name\":\"input\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"Float\",\"name\":\"output\",\"type\":\"bytes32\"}],\"name\":\"TakeOrderV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"Float\",\"name\":\"targetAmount\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"Float\",\"name\":\"withdrawAmount\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawAmountUint256\",\"type\":\"uint256\"}],\"name\":\"WithdrawV2\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"secret\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"meta\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderConfigV4\",\"name\":\"orderConfig\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"addOrder4\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"aliceOrder\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"bobOrder\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"aliceInputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aliceOutputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bobInputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bobOutputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"aliceBountyVaultId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"bobBountyVaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct ClearConfigV2\",\"name\":\"clearConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"aliceSignedContext\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"bobSignedContext\",\"type\":\"tuple[]\"}],\"name\":\"clear3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"depositAmount\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"deposit4\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"entask2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"flashFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"maxFlashLoan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"orderExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputIOIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct QuoteV2\",\"name\":\"quoteConfig\",\"type\":\"tuple\"}],\"name\":\"quote2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"removeOrder3\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"stateChanged\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Float\",\"name\":\"minimumIO\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"maximumIO\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"maximumIORatio\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"IOIsInput\",\"type\":\"bool\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validInputs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOV2[]\",\"name\":\"validOutputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"internalType\":\"struct OrderV4\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inputIOIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputIOIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TakeOrderConfigV4[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct TakeOrdersConfigV5\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"takeOrders4\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"totalTakerInput\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"totalTakerOutput\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"}],\"name\":\"vaultBalance2\",\"outputs\":[{\"internalType\":\"Float\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"vaultId\",\"type\":\"bytes32\"},{\"internalType\":\"Float\",\"name\":\"targetAmount\",\"type\":\"bytes32\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IInterpreterV4\",\"name\":\"interpreter\",\"type\":\"address\"},{\"internalType\":\"contract IInterpreterStoreV3\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"internalType\":\"struct EvaluableV4\",\"name\":\"evaluable\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"context\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedContextV1[]\",\"name\":\"signedContext\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TaskV2[]\",\"name\":\"post\",\"type\":\"tuple[]\"}],\"name\":\"withdraw4\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"CoefficientOverflow(int256,int256)\":[{\"details\":\"Thrown when a coefficient overflows.\"}],\"DivisionByZero(int256,int256)\":[{\"details\":\"Thrown when dividing by zero.\",\"params\":{\"exponent\":\"The exponent of the numerator.\",\"signedCoefficient\":\"The signed coefficient of the numerator.\"}}],\"ExponentOverflow(int256,int256)\":[{\"details\":\"Thrown when an exponent overflows.\"}],\"ExponentUnderflow(int256,int256)\":[{\"details\":\"Thrown when an exponent underflows. Exponent underflow means the magnitude is smaller than any representable Float. Without this revert, arithmetic ops that compose to underflow (e.g. `mul` with two operands whose exponents sum below `int32.min`) would silently return `FLOAT_ZERO`, breaking downstream code that branches on `result == 0`.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FixedDecimalOverflow(int256,int256,uint8)\":[{\"details\":\"Thrown when converting a Float to a fixed-decimal uint256 and the scaled value exceeds `uint256.max`. Returning a silent zero with `lossless=false` would decapitate the high bits of the value; reverting surfaces the overflow with the original inputs so callers can rescale or reject.\"}],\"FlashLenderCallbackFailed(bytes32)\":[{\"params\":{\"result\":\"The value that was returned by `onFlashLoan`.\"}}],\"InvalidSignature(uint256)\":[{\"params\":{\"i\":\"The index of the invalid signature in the list of signed contexts.\"}}],\"LossyConversionToFloat(int256,int256)\":[{\"details\":\"Thrown when converting some value to a float when the conversion is lossy.\"}],\"MaximizeOverflow(int256,int256)\":[{\"details\":\"Thrown when a maximize overflows where it is not appropriate.\"}],\"MinimumIO(bytes32,bytes32)\":[{\"params\":{\"actualIO\":\"The io that was achieved.\",\"minimumIO\":\"The minimum io required.\"}}],\"MulDivOverflow(uint256,uint256,uint256)\":[{\"details\":\"Thrown when mulDiv internal to division overflows.\"}],\"NegativeFixedDecimalConversion(int256,int256)\":[{\"details\":\"Thrown when attempting to convert a negative number to an unsigned fixed-point number.\"}],\"NegativeVaultBalance(bytes32)\":[{\"params\":{\"vaultBalance\":\"The negative vault balance being recorded.\"}}],\"NegativeVaultBalanceChange(bytes32)\":[{\"params\":{\"amount\":\"The negative amount being applied.\"}}],\"NotOrderOwner(address)\":[{\"params\":{\"owner\":\"The owner of the order.\"}}],\"NotRainMetaV1(bytes)\":[{\"params\":{\"unmeta\":\"the bytes that are not meta.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"TOFUTokenDecimalsNotDeployed(address)\":[{\"params\":{\"expectedAddress\":\"The address where the singleton was expected.\"}}],\"TokenDecimalsReadFailure(address,uint8)\":[{\"params\":{\"tofuOutcome\":\"The outcome of the TOFU read.\",\"token\":\"The token that failed the safe read.\"}}],\"UnsupportedCalculateOutputs(uint256)\":[{\"params\":{\"outputs\":\"The outputs the expression offers.\"}}],\"ZeroDepositAmount(address,address,bytes32)\":[{\"params\":{\"sender\":\"`msg.sender` depositing tokens.\",\"token\":\"The token being deposited.\",\"vaultId\":\"The vault ID the tokens are being deposited under.\"}}],\"ZeroVaultId(address,address)\":[{\"params\":{\"sender\":\"`msg.sender` depositing or withdrawing tokens.\",\"token\":\"The token being deposited or withdrawn.\"}}],\"ZeroWithdrawTargetAmount(address,address,bytes32)\":[{\"params\":{\"sender\":\"`msg.sender` withdrawing tokens.\",\"token\":\"The token being withdrawn.\",\"vaultId\":\"The vault ID the tokens are being withdrawn from.\"}}]},\"events\":{\"AddOrderV3(address,bytes32,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32))\":{\"params\":{\"order\":\"The newly added order. MUST be handed back as-is when clearing orders and contains derived information in addition to the order config that was provided by the order owner.\",\"orderHash\":\"The hash of the order as it is recorded onchain. Only the hash is stored in Raindex storage to avoid paying gas to store the entire order.\",\"sender\":\"`msg.sender` adding the order and is owner of the order.\"}},\"AfterClearV2(address,(bytes32,bytes32,bytes32,bytes32))\":{\"params\":{\"clearStateChange\":\"The final vault state changes from the clearance.\",\"sender\":\"`msg.sender` clearing the order.\"}},\"ClearV3(address,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32))\":{\"params\":{\"alice\":\"One of the orders.\",\"bob\":\"The other order.\",\"clearConfig\":\"Additional config required to process the clearance.\",\"sender\":\"`msg.sender` clearing both orders.\"}},\"ContextV2(address,bytes32[][])\":{\"params\":{\"context\":\"The context that was built.\",\"sender\":\"`msg.sender` building the context.\"}},\"DepositV2(address,address,bytes32,uint256)\":{\"params\":{\"depositAmountUint256\":\"The amount of tokens deposited.\",\"sender\":\"`msg.sender` depositing tokens. Delegated deposits are NOT supported.\",\"token\":\"The token being deposited.\",\"vaultId\":\"The vault ID the tokens are being deposited under.\"}},\"MetaV1_2(address,bytes32,bytes)\":{\"params\":{\"meta\":\"Rain metadata V1 compliant metadata bytes. https://github.com/rainprotocol/specs/blob/main/metadata-v1.md\",\"sender\":\"The msg.sender.\",\"subject\":\"The entity that the metadata is about. MAY be the address of the emitting contract (as `bytes32`) OR anything else. The interpretation of the subject is context specific, so will often be a hash of some data/thing that this metadata is about.\"}},\"OrderExceedsMaxRatio(address,address,bytes32)\":{\"params\":{\"orderHash\":\"Hash of the order that had an excess ratio.\",\"owner\":\"Owner of the order that had an excess ratio.\",\"sender\":\"`msg.sender` clearing the order that had an excess ratio.\"}},\"OrderNotFound(address,address,bytes32)\":{\"params\":{\"orderHash\":\"Hash of the order that was not found.\",\"owner\":\"Owner of the order that was not found.\",\"sender\":\"`msg.sender` clearing the order that wasn't found.\"}},\"OrderZeroAmount(address,address,bytes32)\":{\"params\":{\"orderHash\":\"Hash of the order that evaluated to a 0 amount.\",\"owner\":\"Owner of the order that evaluated to a 0 amount.\",\"sender\":\"`msg.sender` clearing the order that had a 0 amount.\"}},\"RemoveOrderV3(address,bytes32,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32))\":{\"params\":{\"order\":\"The removed order.\",\"orderHash\":\"The hash of the removed order.\",\"sender\":\"`msg.sender` removing the order and is owner of the order.\"}},\"TakeOrderV3(address,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]),bytes32,bytes32)\":{\"params\":{\"config\":\"All config defining the orders to attempt to take.\",\"input\":\"The input amount from the perspective of sender.\",\"output\":\"The output amount from the perspective of sender.\",\"sender\":\"`msg.sender` taking the orders.\"}},\"WithdrawV2(address,address,bytes32,bytes32,bytes32,uint256)\":{\"params\":{\"sender\":\"`msg.sender` withdrawing tokens. Delegated withdrawals are NOT supported.\",\"targetAmount\":\"The amount of tokens requested to withdraw.\",\"token\":\"The token being withdrawn.\",\"vaultId\":\"The vault ID the tokens are being withdrawn from.\",\"withdrawAmount\":\"The amount of tokens withdrawn, can be less than the target amount if the vault does not have the funds available to cover the target amount. For example an active order might move tokens before the withdraw completes.\",\"withdrawAmountUint256\":\"The amount of tokens withdrawn, as the uint256 of tokens that actually move onchain.\"}}},\"kind\":\"dev\",\"methods\":{\"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"config\":\"All config required to build an `Order`.\",\"tasks\":\"Additional tasks to run after the order is added. Order information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the order MUST NOT be added.\"},\"returns\":{\"_0\":\"True if the order was added, false if it already existed.\"}},\"clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])\":{\"params\":{\"alice\":\"Some order to clear.\",\"aliceSignedContext\":\"Optional signed context that is relevant to A.\",\"bob\":\"Another order to clear.\",\"bobSignedContext\":\"Optional signed context that is relevant to B.\",\"clearConfig\":\"Additional configuration for the clearance such as how to handle the bounty payment for the `msg.sender`.\"}},\"deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"depositAmount\":\"The amount of tokens to deposit.\",\"tasks\":\"Additional tasks to run after the deposit. Deposit information SHOULD be made available during evaluation in context. If ANY of the post tasks revert, the deposit MUST be reverted.\",\"token\":\"The token to deposit.\",\"vaultId\":\"The vault ID to deposit under.\"}},\"entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"tasks\":\"The tasks to evaluate.\"}},\"flashFee(address,uint256)\":{\"details\":\"The fee to be charged for a given loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"token\":\"The loan currency.\"},\"returns\":{\"_0\":\"The amount of `token` to be charged for the loan, on top of the returned principal.\"}},\"flashLoan(address,address,uint256,bytes)\":{\"details\":\"Initiate a flash loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"data\":\"Arbitrary data structure, intended to contain user-defined parameters.\",\"receiver\":\"The receiver of the tokens in the loan, and the receiver of the callback.\",\"token\":\"The loan currency.\"},\"returns\":{\"_0\":\"True if the flash loan was successful.\"}},\"maxFlashLoan(address)\":{\"details\":\"The amount of currency available to be lent.\",\"params\":{\"token\":\"The loan currency.\"},\"returns\":{\"_0\":\"The amount of `token` that can be borrowed.\"}},\"multicall(bytes[])\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Receives and executes a batch of function calls on this contract.\"},\"orderExists(bytes32)\":{\"params\":{\"orderHash\":\"The hash of the order to check.\"},\"returns\":{\"_0\":\"True if the order exists, false otherwise.\"}},\"quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))\":{\"params\":{\"quoteConfig\":\"The configuration for the quote.\"},\"returns\":{\"_0\":\"True if the order exists, false otherwise.\",\"_1\":\"The maximum output amount that the order could send. Is `0` if the order does not exist.\",\"_2\":\"The input:output ratio of the order. Is `0` if the order does not exist.\"}},\"removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"order\":\"The `Order` data exactly as it was added.\",\"tasks\":\"Additional tasks to run after the order is removed. Order information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the order MUST NOT be removed.\"},\"returns\":{\"stateChanged\":\"True if the order was removed, false if it did not exist.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))\":{\"params\":{\"config\":\"The constraints and list of orders to take, orders are processed sequentially in order as provided, there is NO ATTEMPT onchain to predict/filter/sort these orders other than evaluating them as provided. Inputs and outputs are from the perspective of `msg.sender` except for values specified by the orders themselves which are the from the perspective of that order.\"},\"returns\":{\"totalTakerInput\":\"Total tokens sent to `msg.sender`, taken from order vaults processed.\",\"totalTakerOutput\":\"Total tokens taken from `msg.sender` and distributed between vaults.\"}},\"vaultBalance2(address,address,bytes32)\":{\"params\":{\"owner\":\"The owner of the vault.\",\"token\":\"The token the vault is for.\",\"vaultId\":\"The vault ID to read.\"},\"returns\":{\"_0\":\"The current balance of the vault.\"}},\"withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"params\":{\"targetAmount\":\"The amount of tokens to attempt to withdraw. MAY result in fewer tokens withdrawn if the vault balance is lower than the target amount. MAY NOT be zero, the Raindex MUST revert with `ZeroWithdrawTargetAmount` if the amount is zero.\",\"tasks\":\"Additional tasks to run after the withdraw. Withdraw information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the withdraw MUST be reverted.\",\"token\":\"The token to withdraw.\",\"vaultId\":\"The vault ID to withdraw from.\"}}},\"stateVariables\":{\"sVaultBalances\":{\"details\":\"Vault balances are stored in a mapping of owner => token => vault ID This gives 1:1 parity with the `IRaindexV6` interface but keeping the `sFoo` naming convention for storage variables.\"}},\"title\":\"RaindexV6 See `IRaindexV6` for more documentation.\",\"version\":1},\"userdoc\":{\"errors\":{\"ClearZeroAmount()\":[{\"notice\":\"Thrown when clear output amounts are both zero.\"}],\"FlashLenderCallbackFailed(bytes32)\":[{\"notice\":\"Thrown when the `onFlashLoan` callback returns anything other than ON_FLASH_LOAN_CALLBACK_SUCCESS.\"}],\"InvalidSignature(uint256)\":[{\"notice\":\"Thrown when the ith signature from a list of signed contexts is invalid.\"}],\"MinimumIO(bytes32,bytes32)\":[{\"notice\":\"Thrown when the minimum input is not met.\"}],\"NegativeBounty()\":[{\"notice\":\"Throws when a negative bounty is calculated.\"}],\"NegativePull()\":[{\"notice\":\"Thrown when a negative pull is attempted.\"}],\"NegativePush()\":[{\"notice\":\"Thrown when a negative push is attempted.\"}],\"NegativeVaultBalance(bytes32)\":[{\"notice\":\"Thrown when a negative vault balance is being recorded.\"}],\"NegativeVaultBalanceChange(bytes32)\":[{\"notice\":\"Thrown when a negative amount is being applied to a vault balance.\"}],\"NoOrders()\":[{\"notice\":\"MUST be thrown when take orders is called with no orders.\"}],\"NotOrderOwner(address)\":[{\"notice\":\"Thrown when the `msg.sender` modifying an order is not its owner.\"}],\"NotRainMetaV1(bytes)\":[{\"notice\":\"Thrown when some bytes are expected to be rain meta and are not.\"}],\"OrderNoHandleIO()\":[{\"notice\":\"MUST be thrown by `addOrder` if the order has no associated handle IO.\"}],\"OrderNoInputs()\":[{\"notice\":\"MUST be thrown by `addOrder` if the order has no inputs.\"}],\"OrderNoOutputs()\":[{\"notice\":\"MUST be thrown by `addOrder` if the order has no outputs.\"}],\"OrderNoSources()\":[{\"notice\":\"MUST be thrown by `addOrder` if the order has no associated calculation.\"}],\"SameOwner()\":[{\"notice\":\"Thrown when two orders have the same owner during clear.\"}],\"TOFUTokenDecimalsNotDeployed(address)\":[{\"notice\":\"Thrown when the singleton is not deployed or has an unexpected codehash.\"}],\"TokenDecimalsReadFailure(address,uint8)\":[{\"notice\":\"Thrown by safe TOFU decimals reads when the outcome is neither `Initial` nor `Consistent`. This covers both `Inconsistent` (token changed its decimals) and `ReadFailure` (token unreadable). The `tofuOutcome` parameter distinguishes the two cases.\"}],\"TokenMismatch()\":[{\"notice\":\"Thrown when the input and output tokens don't match, in either direction.\"}],\"TokenSelfTrade()\":[{\"notice\":\"Thrown when the input token is the output token.\"}],\"UnsupportedCalculateOutputs(uint256)\":[{\"notice\":\"Thrown when calculate order expression offers too few outputs.\"}],\"ZeroDepositAmount(address,address,bytes32)\":[{\"notice\":\"MUST be thrown by `deposit` if the amount is zero.\"}],\"ZeroMaximumIO()\":[{\"notice\":\"MUST be thrown by `takeOrders` if the maximum input/output is zero.\"}],\"ZeroVaultId(address,address)\":[{\"notice\":\"MUST be thrown by `deposit` and `withdraw` if the vault ID is zero.\"}],\"ZeroWithdrawTargetAmount(address,address,bytes32)\":[{\"notice\":\"MUST be thrown by `withdraw` if the amount _requested_ to withdraw is zero. The withdrawal MAY still not move any tokens if the vault balance is zero, or the withdrawal is used to repay a flash loan.\"}]},\"events\":{\"AddOrderV3(address,bytes32,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32))\":{\"notice\":\"An order has been added to the Raindex. The order is permanently and always active according to its expression until/unless it is removed.\"},\"AfterClearV2(address,(bytes32,bytes32,bytes32,bytes32))\":{\"notice\":\"Emitted after two orders clear. Includes all final state changes in the vault balances, including the clearer's vaults.\"},\"ClearV3(address,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32))\":{\"notice\":\"Emitted before two orders clear. Covers both orders and includes all the state before anything is calculated.\"},\"ContextV2(address,bytes32[][])\":{\"notice\":\"Calling contracts SHOULD emit `Context` before calling `eval4` if they are able. Notably `eval4` MAY be called within a static call which means that events cannot be emitted, in which case this does not apply. It MAY NOT be useful to emit this multiple times for several eval calls if they all share a common context, in which case a single emit is sufficient.\"},\"DepositV2(address,address,bytes32,uint256)\":{\"notice\":\"Some tokens have been deposited to a vault.\"},\"MetaV1_2(address,bytes32,bytes)\":{\"notice\":\"An onchain wrapper to carry arbitrary Rain metadata. Assigns the sender to the metadata so that tooling can easily drop/ignore data from unknown sources. As metadata is about something, the subject MUST be provided.\"},\"OrderExceedsMaxRatio(address,address,bytes32)\":{\"notice\":\"Emitted when an order evaluates to a ratio exceeding the counterparty's maximum limit. An event rather than an error so that we allow attempting many orders in a loop and NOT rollback on a \\\"best effort\\\" basis to clear.\"},\"OrderNotFound(address,address,bytes32)\":{\"notice\":\"Emitted when attempting to match an order that either never existed or was removed. An event rather than an error so that we allow attempting many orders in a loop and NOT rollback on \\\"best effort\\\" basis to clear.\"},\"OrderZeroAmount(address,address,bytes32)\":{\"notice\":\"Emitted when an order evaluates to a zero amount. An event rather than an error so that we allow attempting many orders in a loop and NOT rollback on a \\\"best effort\\\" basis to clear.\"},\"RemoveOrderV3(address,bytes32,(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32))\":{\"notice\":\"An order has been removed from the Raindex. This effectively deactivates it. Orders can be added again after removal.\"},\"TakeOrderV3(address,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]),bytes32,bytes32)\":{\"notice\":\"Some order has been taken by `msg.sender`. This is the same as them placing inverse orders then immediately clearing them all, but costs less gas and is more convenient and reliable. Analogous to a market buy against the specified orders. Each order that is matched within a the `takeOrders` loop emits its own individual event.\"},\"WithdrawV2(address,address,bytes32,bytes32,bytes32,uint256)\":{\"notice\":\"Some tokens have been withdrawn from a vault.\"}},\"kind\":\"user\",\"methods\":{\"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"Given an order config, deploys the expression and builds the full `Order` for the config, then records it as an active order. Delegated adding an order is NOT supported. The `msg.sender` that adds an order is ALWAYS the owner and all resulting vault movements are their own. MUST revert with `OrderNoSources` if the order has no associated calculation and `OrderNoHandleIO` if the order has no handle IO entrypoint. The calculation MUST return at least two values from evaluation, the maximum amount and the IO ratio. The handle IO entrypoint SHOULD return zero values from evaluation. Either MAY revert during evaluation on the interpreter, which MUST prevent the order from clearing. MUST revert with `OrderNoInputs` if the order has no inputs. MUST revert with `OrderNoOutputs` if the order has no outputs. If the order already exists, the Raindex MUST NOT change state, which includes not emitting an event. Instead it MUST return false. If the Raindex modifies state it MUST emit an `AddOrderV3` event and return true. If vault ID is `0` for any input or output, this indicates a vaultless order for that token. Vaultless orders draw from or pay to the order's owner's wallet directly rather than any internal vault.\"},\"clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])\":{\"notice\":\"Allows `msg.sender` to match two live orders placed earlier by non-interactive parties and claim a bounty in the process. The clearer is free to select any two live orders on the Raindex for matching and as long as they have compatible tokens, ratios and amounts, the orders will clear. Clearing the orders DOES NOT remove them from the Raindex, they remain live until explicitly removed by their owner. Even if the input vault balances are completely emptied, the orders remain live until removed. This allows order owners to deploy a strategy over a long period of time and periodically top up the input vaults. Clearing two orders from the same owner is disallowed. Any mismatch in the ratios between the two orders will cause either more inputs than there are available outputs (transaction will revert) or less inputs than there are available outputs. In the latter case the excess outputs are given to the `msg.sender` of clear, to the vaults they specify in the clear config. This not only incentivises \\\"automatic\\\" clear calls for both alice and bob, but incentivises _prioritising greater ratio differences_ with a larger bounty. The second point is important because it implicitly prioritises orders that are further from the current market price, thus putting constant increasing pressure on the entire system the further it drifts from the norm, no matter how esoteric the individual order expressions and sizings might be. All else equal there are several factors that would impact how reliably some order clears relative to the wider market, such as: - Bounties are effectively percentages of cleared amounts so larger orders have larger bounties and cover gas costs more easily - High gas on the network means that orders are harder to clear profitably so the negative spread of the ratios will need to be larger - Complex and stateful expressions cost more gas to evalulate so the negative spread will need to be larger - Erratic behavior of the order owner could reduce the willingness of third parties to interact if it could result in wasted gas due to orders suddently being removed before clearance etc. - Dynamic and highly volatile words used in the expression could be ignored or low priority by clearers who want to be sure that they can accurately predict the ratios that they include in their clearance - Geopolitical issues such as sanctions and regulatory restrictions could cause issues for certain owners and clearers\"},\"deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"`msg.sender` deposits tokens according to config. The config specifies the vault to deposit tokens under. Delegated depositing is NOT supported. Depositing DOES NOT mint shares (unlike ERC4626) so the overall vaulted experience is much simpler as there is always a 1:1 relationship between deposited assets and vault balances globally and individually. This mitigates rounding/dust issues, speculative behaviour on derived assets, possible regulatory issues re: whether a vault share is a security, code bloat on the vault, complex mint/deposit/withdraw/redeem 4-way logic, the need for preview functions, etc. etc. At the same time, allowing vault IDs to be specified by the depositor allows much more granular and direct control over token movements within Raindex than either ERC4626 vault shares or mere contract-level ERC20 allowances can facilitate. Vault IDs are namespaced by the token address so there is no risk of collision between tokens. For example, vault ID 1 for token A is completely different to vault ID 1 for token B. `0` amount deposits are unsupported as underlying token contracts handle `0` value transfers differently and this would be a source of confusion. The Raindex MUST revert with `ZeroDepositAmount` if the amount is zero. Vault ID `0` is disallowed for deposits to avoid collision with vaultless orders. The Raindex MUST revert with `ZeroVaultId` if the vault ID is zero.\"},\"entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"`msg.sender` entasks the provided tasks. This DOES NOT return any values, and MUST NOT modify any vault balances. Presumably the expressions will modify some internal state associated with active orders. If ANY of the expressions revert, the entire transaction MUST revert.\"},\"maxFlashLoan(address)\":{\"notice\":\"There's no limit to the size of a flash loan from `Raindex` other than the current tokens deposited in `Raindex`.\"},\"orderExists(bytes32)\":{\"notice\":\"Returns true if the order exists, false otherwise.\"},\"quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))\":{\"notice\":\"Quotes the provided order for the caller. The caller is considered to be the counterparty to the order, for the purposes of evaluating the quote. However, the caller's vault balances and/or tokens in wallet are not considered in the quote. This means the output max can exceed what the caller could actually pay for. Both the output max and io ratio are returned as rain floating point values, ignoring any token decimals, so are not the literal amounts that would be moved in the order were it to clear.\"},\"removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"Order owner can remove their own orders. Delegated order removal is NOT supported and will revert. Removing an order multiple times or removing an order that never existed are valid, the event will be emitted and the transaction will complete with that order hash definitely, redundantly not live.\"},\"takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))\":{\"notice\":\"Allows `msg.sender` to attempt to fill a list of orders in sequence without needing to place their own order and clear them. This works like a market buy but against a specific set of orders. Every order will looped over and calculated individually then filled maximally until the request input/output limit is reached for the `msg.sender`. Whether the limit applies to input or output is determined by the `IOIsInput` flag in `TakeOrdersConfigV5`. The `msg.sender` is responsible for selecting the best orders at the time according to their criteria and MAY specify a maximum IO ratio to guard against an order spiking the ratio beyond what the `msg.sender` expected and is comfortable with. As orders may be removed and calculate their ratios dynamically, all issues fulfilling an order other than misconfiguration by the `msg.sender` are no-ops and DO NOT revert the transaction. This allows the `msg.sender` to optimistically provide a list of orders that they aren't sure will completely fill at a good price, and fallback to more reliable orders further down their list. Misconfiguration such as token mismatches are errors that revert as this is known and static at all times to the `msg.sender` so MUST be provided correctly. `msg.sender` MAY specify a minimum input/output that MUST be reached across all orders in the list, otherwise the transaction will revert, this MAY be set to zero. Exactly like withdraw, if there is an active flash loan for `msg.sender` they will have their outstanding loan reduced by the final input amount preferentially before sending any tokens. Notably this allows arb bots implemented as flash loan borrowers to connect orders against external liquidity directly by paying back the loan with a `takeOrders` call and outputting the result of the external trade. Rounding errors always favour the order never the `msg.sender`.\"},\"vaultBalance2(address,address,bytes32)\":{\"notice\":\"Get the current balance of a vault for a given owner, token and vault ID.\"},\"withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])\":{\"notice\":\"Allows the sender to withdraw any tokens from their own vaults. If the withdrawer has an active flash loan debt denominated in the same token being withdrawn then Raindex will merely reduce the debt and NOT send the amount of tokens repaid to the flashloan debt. MUST revert if the amount _requested_ to withdraw is zero. The withdrawal MAY still not move any tokens (without revert) if the vault balance is zero, or the withdrawal is used to repay a flash loan, or due to any other internal accounting. Vault ID `0` is NOT supported due to collision with vaultless orders. The Raindex MUST revert with `ZeroVaultId` if the vault ID is zero.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/concrete/raindex/RaindexV6.sol\":\"RaindexV6\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/\",\":bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/\",\":caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/\",\":codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/\",\":forge-std-1.16.1/=dependencies/forge-std-1.16.1/\",\":mut/=dependencies/rain-string-0.2.0/src/lib/mut/\",\":ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/\",\":parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/\",\":rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/\",\":rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/\",\":rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/\",\":rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/\",\":rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/\",\":rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/\",\":rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/\",\":rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/\",\":rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/\",\":rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/\",\":rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/\",\":rain-string-0.2.0/=dependencies/rain-string-0.2.0/\",\":rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/\",\":raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/\",\":rainlang-0.1.2/=dependencies/rainlang-0.1.2/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC1271.sol\":{\"keccak256\":\"0x66c7ec42c6c43712be2107a50ab4529379bc76a632b425babec698d9da921ac6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dce2778f0b638adfc5ba29c2c618c855fe725fa74a16846386aa1d56a834aa04\",\"dweb:/ipfs/QmPV9oWnzQdi58od266j62xvviavLNHqKLZfm6k2K1qy9E\"]},\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC7913.sol\":{\"keccak256\":\"0xe5a126930df1d54e4a6dd5fea09010c4a7db0ea974c6c17a1e6082879f5a032b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f58f5a90328536a6c68289916bfa4ed653d871319c7b2a416ab3f6263c4f2f5\",\"dweb:/ipfs/Qmaa9DmgUA16Urz5fuF4RbFz2NaVpNLV41ddwykSdasFUd\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Bytes.sol\":{\"keccak256\":\"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08\",\"dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/LowLevelCall.sol\":{\"keccak256\":\"0x6ba3db1346fc75a832aa6cd075e12f6f1fa172fa2122a020f324c319fe5be75e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab92e9e1cb08144c43fa3a383a87c48f49a652d51156950b928c2a50bee6b3a5\",\"dweb:/ipfs/QmWeKkKZBgLDKgRFGKCzsKybYF7C8g9ysg5kU1b1p7QFBi\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Multicall.sol\":{\"keccak256\":\"0x72a5499dfae7676e4298a7299bccd3b27438ba1a4c72df5cd69c1c343c7ea20d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de0fb51ccae3a0ff377ed185d187440fc612a71bf8e42fdb0e032ce747fa3eef\",\"dweb:/ipfs/QmPNBaiVsAiUhz8qfXcSy27S7CqBbtSd8rPqmaykKBhw7Q\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99\",\"dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/Strings.sol\":{\"keccak256\":\"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc\",\"dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a\",\"dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c\",\"dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x0d53049a9969f2bc5cb88b32c909e2729a5fa157d258305b42b502427ad492c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eacca39a3f50c665454866342bb05f10cc1e87c2bbd73dda981a6a0de1978fb0\",\"dweb:/ipfs/QmbFKMUT5BXtCdA2SCof9GuasrVhoGzaLUQG3gUvGDtdoE\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"]},\"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/error/ErrBytecode.sol\":{\"keccak256\":\"0xf6a05d018ca9ad0ef0d820d5dd3bf5b2d95fef1871bb59a7adb5377087e3f515\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://10af6a331d8ba326a3c2c4a14ed634287e0a0eaf4b2e309417fc4abd336ba930\",\"dweb:/ipfs/QmcueNEd7CimGj61kNyU6rjhpJvFU4uks2wKn7xv918qUr\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterCallerV4.sol\":{\"keccak256\":\"0x2f6cef8ace7a23cf0cfd183f06434a0cde757cdc3841bf35e6633818176b0cf7\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://06b6c9ffd0f434322ed9a37124a080e15f7c50fd8a9188dedfd6b1383746ee67\",\"dweb:/ipfs/Qmd66LS1wHavvU78NqTMJStYhBgcnG87YgafmmkMvXocAU\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol\":{\"keccak256\":\"0x5b4e41f24180a170a75d6faa525e1d28008a3a4404319f24f184d4d46f8add32\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://3f02da25cac97067e6ac9f4dd9d6be7c2e7e81cb322dbeaaae69b14a11850885\",\"dweb:/ipfs/QmWF3K89HqJ8zjyV5Mj9wJrG9mzKycjz4fX7jFgGW8AaHy\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol\":{\"keccak256\":\"0xae59c4c50f38332d3ad5bd97c81a46f6a983c59a729bd2d2ed54bb6ee4cfbc96\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://82e4110f929a61b5fe31a7d1931f815db1751b5866efacfc3d602bd00527a01e\",\"dweb:/ipfs/QmTkq2yJNpXrDWQbPWoGxBuXFLgFW5P7jvcengwPi6NX5f\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/IParserV2.sol\":{\"keccak256\":\"0x0f2d27d13de9c9541af8d0c1645fd34ff0ab5f14578c888b1b19caef9e75de84\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://56e461e90605fb62459795b453c4692c33d06b031f86e717377a52d98d6e26c9\",\"dweb:/ipfs/QmPqRZwKuD77rvdqYMjsXw2TeSbHvgR1V7AVsV9yR18hNY\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV1.sol\":{\"keccak256\":\"0xc0afd50701cd68eef984a63862bd6a10552d704cca6e10f06d19d920b0777c98\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://cd3cbfa9159ceed8871f46f62c7ea235ad8537d3c6c1c004152ebf5d2d597346\",\"dweb:/ipfs/QmPSAJXAcmDeK9Qy6s2dXdeu4GJ62FKWa69VBo4ioCPcJ9\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV2.sol\":{\"keccak256\":\"0x368ace8d0f82832f08caf264e4194647b9777c0d4a0f22d88236b30c1e4c8a63\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://9c8a2141fcd76d6308156777b0a9e5a4f7f07fb3693461e2c12f07e4d8c87130\",\"dweb:/ipfs/QmPnhPz6sXzh5xBGZobAPY2WJTgvQDiYWRFKavscSPu7T5\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV3.sol\":{\"keccak256\":\"0x9390bbeb7064c8d109bd6d9f52f898001ec6168e016c84592268334f729bf6a6\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://dc5e7b4f0e56c6a009faf1cfaf1292bc5249ea3c6f233e9d78a132b883dfe375\",\"dweb:/ipfs/QmcMTVqHjVVXYmeCE11T13g5efUEsyzZfzhSyUYPxzrLZd\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV1.sol\":{\"keccak256\":\"0xc01bc48e2479cab07fc799e26c3790c8cf97acc1f0f490c8f456f554d239a505\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://2981aa2eae0d414bc8ad4105bedb05026cfdad7e6af8f23805dba4835ae9fd8a\",\"dweb:/ipfs/QmQRKi5nmatC1UM2sNta9giuJX3xvvLAD5pmCeAsVWF4hF\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV2.sol\":{\"keccak256\":\"0x2aefda534eba5dd939c8413a6703340433162617fc260a864f9cf59a51a40a6a\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://91b31176b1db3a60b6a8be337920844de3b2d3ddc91cc7b98615d104c5acf9d0\",\"dweb:/ipfs/QmQSaxmW9BdQS3h9HUds8NLKmNABCZxNm8doqowYDiSmTr\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterStoreV1.sol\":{\"keccak256\":\"0x7d2bc86fefbe372fc64381b320244fe9dbda1816867f3040c5bb3951869fe6a7\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://90c371494080129d5acd2bc52d092fc5cfe559147f7fc855ed01e62a7837f21e\",\"dweb:/ipfs/QmcNtPDuTxic8zqRFXf1ba6FJKmQXguxiDUY4E7wjyVwU5\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterV1.sol\":{\"keccak256\":\"0xe0b94c771a7b6aa05388b4db6e238e36a4653cbfdbd3e54bbcaa7a97fc9491f4\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://59887a7f2ef60669906c5e70831ac0c9a7345313b04efb306235280f85e1db73\",\"dweb:/ipfs/QmP6Ny9m3sPCP65UmgGGpucSMgVAoDv6qURqyxUE95VU5Q\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterV2.sol\":{\"keccak256\":\"0x51eb0d6a03bcdb3a428cfbb605d7176dc22d83886635b1c1818a46a4a303acf3\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://c4fbfdff3655dd567008b3a695ea2ed4f49cea641d8f17418e181e4f0d7d324b\",\"dweb:/ipfs/QmPkHRtPa4tg5n6rUykhNhFJz6xirGBjKLghL24JuRnjuY\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IParserV1.sol\":{\"keccak256\":\"0x4f6a9e028942cebebfc84328193f1d31807aac292d9b82e2df489064aa913070\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://54073f63db1f652571472cb2d07de297772c2420e1571a0cb9e0a805ee4347e7\",\"dweb:/ipfs/QmXRqBreJvC8MQd5zLNgmPUdfFa4WD6gSoxvD8hecycux4\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterCallerV3.sol\":{\"keccak256\":\"0xa5e225eeb94fa4fced8bc91b9a773e636746fcfd52edc4eb3e17f7a3d2204443\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://86d6f144228401c6b92b91d8cd9ade634e4a3a8d73cbae60e201c1ecd7930b75\",\"dweb:/ipfs/QmcSxtZsMxYhGk8pEMXUtGMAVSkg6p5ZiEQoaQ1bnBwEXd\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterStoreV2.sol\":{\"keccak256\":\"0x64575df513b2c6d9581e838961839101394bf59670ecede6988202c8714c0c15\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4718bdcadadf933f610023c21191808df0a51a55e94b5697d160a584ba2912d9\",\"dweb:/ipfs/QmR8R4TcnQ8iuxgTUuDTYzkXHmY2NaFe4aG3mTfcgmmGsM\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterV3.sol\":{\"keccak256\":\"0x9dba1f9fc1ecd10538291deb25f9648d1210789783b81bf354856fdcef79dddd\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://ac62f8bf27b60ade408487025de433d08d2c19ac5df79208ebf9f9fa545d0d70\",\"dweb:/ipfs/QmZiN2TNyMUgnSV14SaWWhh9d1Pgq1BLyHdDgpsqxdSQCH\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/LibBytecode.sol\":{\"keccak256\":\"0xcf9c3e536889eb270a4413aff2c81d6f0583dcb9fc0a941693cb708959fbb660\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://a5889bbd9377804c958f0cd305b6cfb5176c6790cb7cfd3eb2a9ca3d2fcafc54\",\"dweb:/ipfs/QmXxJ56xEth1g6m9FcvyZWLgfviB9Y5dCU38LoqVeapQBV\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/LibContext.sol\":{\"keccak256\":\"0xaf3f297895e9326325cef603992d18f97c1e882b8eaf9d8a305f94c0e295cfd2\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://1366426716ac1a1ba93e6a6293308f0bc47439ada01d0108f4b5df5af7c53e9a\",\"dweb:/ipfs/QmP5nY9Kho7qC2CMTbH7xannNoWrD2pgt4mvV1N7UdMe64\"]},\"dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/LibNamespace.sol\":{\"keccak256\":\"0x11b870c47abdaffddaee5e347b3345e801a0864d463ae8b39dd8ab82b1a4b12d\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://fc21868a4776119ecd93f8a503e07727e11ce3bc9aef14956da1af3759cebb74\",\"dweb:/ipfs/QmfVW5ajDBPdaC4nASs7shUL3qXjiJMVzzGouQK24CssNF\"]},\"dependencies/rain-lib-hash-0.1.0/src/LibHashNoAlloc.sol\":{\"keccak256\":\"0x207fd40cb0b9e598e50e06138c9da1450caadd595f700fa39ccba39f766eec00\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://df5edd1e0a782c2ce0da2213cd9b9cbf6be0e87f8fc915c26f2de558fb9df1ac\",\"dweb:/ipfs/QmbBsLMVRrKQRWSVpvkveKL1iQHPKZfhLQCtJBPmhBN74z\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrDecimalFloat.sol\":{\"keccak256\":\"0x46e95357504ffe0e2cdf7a7d962b509ebdf6f2c64e1c8b1accc608bdd8288971\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://65ec73f625fce3f9cf150472735c57e7f6a2260b53598c149a0a81ec677b9dd2\",\"dweb:/ipfs/QmZXmzqDkjNVTMNW8ZFPGLm1UnVfPnFN5ggpDSHPa9UjvQ\"]},\"dependencies/rain-math-float-0.1.1/src/error/ErrFormat.sol\":{\"keccak256\":\"0xc760cb6018291753e7408d55d12d5e66c116f9750dc241bbc201f3b46ae33aa7\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://cbc81bb7c26c8503926b579f978902bcc3227839bee04bd3500cc924d142d28e\",\"dweb:/ipfs/QmXqMuqBCpckD1EnsBjweyLdRZxpvC2xSP9FWBZFh2vztR\"]},\"dependencies/rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol\":{\"keccak256\":\"0x3f0f9e9b04e6fd4ca2a322da490a236eb91a0d22411a51ed1d1e606a72fcb1eb\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://d99f8025391108725dc490efccb834c25486d59adcd8c1450c62db89f08ed203\",\"dweb:/ipfs/QmcY4JXoK4qfuUWjaDDyWkEdyzZTFN5EjokutSMDidqHjU\"]},\"dependencies/rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol\":{\"keccak256\":\"0x5aac6382e7f7040e68600333c1b00b0aedb3edb6bced84b63783f6d88fe0b4f0\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://e96d30e34e1fa2cc4eb574ded30c0f6f93929dcc19cb571f555ca8c5ac32eaa7\",\"dweb:/ipfs/QmRRtk84AqEdQrRXfeTzVUAbAktJTZ92iTLqjocQV4PDx7\"]},\"dependencies/rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol\":{\"keccak256\":\"0x47d0eeb542875548689465407162a19e4a21fb4591af5bb48d5758c0d1b93634\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://631efb796ff17f277804f8a32df7d28630c2ae5300e7d74c37aa8ed1f86b5092\",\"dweb:/ipfs/QmSfmMGQyxKYxu8UrWDEtuCggQ9HtFJy5cbMsYLPZbcTZ7\"]},\"dependencies/rain-math-float-0.1.1/src/lib/table/LibLogTable.sol\":{\"keccak256\":\"0xccd2dea54cfb708c01e7e8e88c089742bbab18f5783be4632311fb4923d44c88\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://f45fb78c16b5d66d56ba0e78acdb0ca5d315eb05efa2cd7a81e191aabe7aec52\",\"dweb:/ipfs/QmQJ3TFFxTMu4HZ4qnjgmdmSNhGZLQRdCnSqAipEF1up1f\"]},\"dependencies/rain-metadata-0.1.0/src/interface/deprecated/IMetaV1.sol\":{\"keccak256\":\"0xf5047476cd14cac913f7efbb777cbdc2a25723188f9fd35f4e1a09ebbd656709\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://01d4ac845df8318e575bc0736e0711bc82a286bbd26802c27fe3b792a0275c04\",\"dweb:/ipfs/QmUEyBicusKtsWYYKR7cSpBXoyYRvRvVuBWAZ9KSFk81qK\"]},\"dependencies/rain-metadata-0.1.0/src/interface/unstable/IMetaV1_2.sol\":{\"keccak256\":\"0x4ca89e491c3c9ecdc9ad6c66b4b0a033208e64da69dee60a8a131c32fd845a0c\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://5ebcdb708565d937acb318ddbf357f981281711546134550823c5ee6a99701a6\",\"dweb:/ipfs/QmNwB8bME5eV7MuAaxQ79m4Kg1DGHY9xECSbcg3JZcSetT\"]},\"dependencies/rain-metadata-0.1.0/src/lib/LibMeta.sol\":{\"keccak256\":\"0xb924ea27ba17f3c5582475a854b572d7149a0088e06646663b15b3e4c1577d31\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://94d7f0a3e4704d25904e4e3d9df064a5fa5d0fecf96128fc3ab44d41a44e92ad\",\"dweb:/ipfs/QmYPR15FL8dXmbKjZK7Bq2qXbnno6eoj3SiXuuayLpB7Yh\"]},\"dependencies/rain-solmem-0.1.3/src/error/ErrBytes.sol\":{\"keccak256\":\"0xdec97437eeba42f5950dc52f89caac433bc11a56a4e14a0f67a521821600c4b6\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://72b96a4ed0d34dab653df0e6eb19d77b3e1c691b8e35543f6f32ae6a44c6312e\",\"dweb:/ipfs/QmNrwwf3La4D25DudigRedu2c7xfx8k7bEzHFVZfpRu3se\"]},\"dependencies/rain-solmem-0.1.3/src/error/ErrUint256Array.sol\":{\"keccak256\":\"0x57b7a7a5cbc2fc97200130e84fde3a8afc14e0729040b14670dacc7f63c3ac5f\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4e7c7ce525e882db437b488b590fae6a817b282f88d76eb4f56986b549815e57\",\"dweb:/ipfs/QmajzM26fsaFtaAnm5cg1FZrD6N2wkLJHCxa7Atx5x6iAB\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibBytes.sol\":{\"keccak256\":\"0x6497d17390179a62820805d18a2cf2cdfddbe4990df783bde11cbf82e414fd0e\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://54e8ed63c566d374ca2d89e8109c41267f7ca661e85570c6c7d51193aaca128b\",\"dweb:/ipfs/Qmd6LoUZqg7TbeAx2auk5UkimyMiK4a9GsVMvDeqDRZF3M\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibBytes32Array.sol\":{\"keccak256\":\"0x93a9a12fa9161523c8580196daf8e2bf59c48003166ef718f5fc07d47752aabe\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://f1d24979b4b1f94621f0bc0505f8aafbb845ac86f72323454b6e96b4e57fb367\",\"dweb:/ipfs/QmUD7hAfaNPPHUu9DjLaJrwrUrei8vfbyUoJcymbQeSsXE\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibBytes32Matrix.sol\":{\"keccak256\":\"0xffd4769d4d0f89d0de792c6d100384ec0262c55c5cf6b33432739e8c4c0edcf6\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://1c73e871d16e3b2f3498efb6b3235db19156e07cc71e9f0fbc3c6b0b4efe633a\",\"dweb:/ipfs/Qmeu91h2q8EdtAoPdRtKUsKL48VD16AUAU1ZXmt89iiuck\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibMemCpy.sol\":{\"keccak256\":\"0x3f0a1962829eed7af79d21ab1f84b1a3b4044d90114812871c9dde7ae6f5cf0a\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4b777f051eef0b83c1b1b6e3927faf683609522acbac9c5bba412cd482be3fef\",\"dweb:/ipfs/QmZrMNaEQBGeCM2L6bg5d8WBxPCSG1cwFD95AUQFVXzQXL\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibPointer.sol\":{\"keccak256\":\"0x3fc6ff807b57b681e32229380e3eda57107a1ada8dc2c1270daa84c9fca5addc\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://a82b17ddc1db163ec548648c83dd5bb2f9f4441559452933f424e0a8dff48e57\",\"dweb:/ipfs/QmdKoRbEAPxBRHJWWRwjh9Yrps1QXcJuX5mJmua8nvnq7B\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibUint256Array.sol\":{\"keccak256\":\"0xf51dffaeb88063748495e3184e335d9bb46f22881c2e8c930f2b68a32bdb39c2\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://4a66ae9e4e9b9bf83b68c4d1d609fda02f8584387740354318d4eca1e2639047\",\"dweb:/ipfs/QmXTS3azQ3ebBpJzj15HJRjTLV8zHfrFPQ7qPiic6eE3Pa\"]},\"dependencies/rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol\":{\"keccak256\":\"0xf58526ebebc0e51a84369ebe6fb1173930cea3a61a488b6b5a597406fc1216e0\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://75940e084457b62a7a38a2cfe920b0838c7c7517c914de64a5073fd01bdcedd8\",\"dweb:/ipfs/QmUZ1sm2EQMhiR2UzB4cY868t6XYpgAi62tr6xvwMtYDnQ\"]},\"dependencies/rain-tofu-erc20-decimals-0.1.1/src/interface/ITOFUTokenDecimals.sol\":{\"keccak256\":\"0x7de2ff896b50894cd33a8e743f2ff780bb3a1d7d97958332c4d04de103741b67\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://a9b6bfc712839ac6e846eb40ceed58d03a1f27cab75e4d07618dd7a936be00c8\",\"dweb:/ipfs/QmaHHeD3cvhrKzEXL8H479n1fhLRB1QubpDyGnQ1djisTF\"]},\"dependencies/rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol\":{\"keccak256\":\"0x56572c8c173e91a7f945964e14958c8c53d2f0a0fdf5ead9040a9a7f2c135a81\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://24cb36d2bea51e548d59beb8dc66772a3ef9612dd722860ccac1932c9f22965e\",\"dweb:/ipfs/QmZz9AQbf5rMtE4wuH4XGtCEe7eVWWazhM4TvoHYi4FfxH\"]},\"dependencies/raindex-interface-0.1.1/src/interface/IRaindexV6.sol\":{\"keccak256\":\"0xfcd3def463c87e0c7c7f488593d50a4e5206264977f51506f5df301f0617addb\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://60583d8718949a545ef959a61b014c1174df3b14333d26360dd56bd08eeadba9\",\"dweb:/ipfs/Qmc6eFNTL2yhtndJotQVSMGgWAZZeMmeTwiUq253UkZ39x\"]},\"dependencies/raindex-interface-0.1.1/src/interface/IRaindexV6OrderTaker.sol\":{\"keccak256\":\"0x5439db5d2e8e123ac5e7b0773dccef55f1c3a04794574ee042e58d5110076677\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://dc3165e61c2e70bd59dd0ffeb1063c1b25db4bed27fe5b2e0f386595ba44e589\",\"dweb:/ipfs/Qmc9BnTTSyBZYcuRqEqNNSmihcbc3WUAq8mpDG5ZRVAQca\"]},\"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v2/IOrderBookV2.sol\":{\"keccak256\":\"0x4b94e58f64eb8bd174ab9abc7441ff93d1b6a83e1d3649588fb4f6228ea8f1ed\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://033665cf3b6190d0233737f53a30787710302b424a87aa9f3d6bc5a3f08d22a4\",\"dweb:/ipfs/QmSFwbun5Rh9i5nANb4rRCkNv1TjKwWacQN18qa8UUgKDF\"]},\"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v3/IOrderBookV3.sol\":{\"keccak256\":\"0xfbb0fb468612db1a0d4500b08dd32789ec68eb1e3dd6ce8fae6d15ca16cfa534\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://b05814a23426d03f3576dee5236f370769b2523e66466afab36b1d1fe6213f8a\",\"dweb:/ipfs/Qmeh6qU6wUddAVMcQ69PEkHNeRrvcnCztZqJSV6Pj5J9nZ\"]},\"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v4/IOrderBookV4.sol\":{\"keccak256\":\"0xd5f71acf6d83c27049b5e9a7941e3bb08565cca5bbde6a085e13e843276ae739\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://85171211c18991e9da01f52690063fc31df20f131d95a44aafa9ddc4e09e43bb\",\"dweb:/ipfs/QmSnwz1zWFs6a3ZHAiMiU5QLHMM8WSTzA55QiVdULapar5\"]},\"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v5/IOrderBookV5.sol\":{\"keccak256\":\"0x769e662ac861e4c99b6ffec0ac76c87e0d29d144a2b1cb66aeb16c6aaf5d3354\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://71f52ea84bd0733b7a09853b5b1ac12ddfd678116ea435c1079d7f1fa8c4d052\",\"dweb:/ipfs/QmWyGBWHMEnPMuHgRNKTEW54tr5r5moFzn23VwzBC4ehZQ\"]},\"dependencies/raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0xdcd81b1110e9c3c91715ac90aef1da70066bcaba8aeb3dc23df979f7f87644f9\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://4572efaeb9eb30ad9b766b80cb2a8101a2cec0c9e8c78c7696f4aae710c8e2c9\",\"dweb:/ipfs/QmVsz1gtqWfxTAbsoLPvZBe6PBVXqaWNx6nu7RHr2ghLuK\"]},\"dependencies/raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashLender.sol\":{\"keccak256\":\"0x3a9b6a28d6ef355bc3052e88221439ede72980a2d661ec4a83eb16cff9f937ec\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://b56f7e7dbdf6a08c3704c247e4f8fc70e6eb8217ee3d01fbc1b9288737036e90\",\"dweb:/ipfs/QmRd5iihYVW2EyXnTe12CMY13pcyatVJwxTafQf854HG9z\"]},\"src/abstract/RaindexV6FlashLender.sol\":{\"keccak256\":\"0x7f6c0edc3628a3a3c726d53f55705733497c0120f287f060728652c03b23fa3c\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://388e284aee281fa614f4b1a360fa8bcdd35b54c05da423d1a30cb9441fd9926d\",\"dweb:/ipfs/QmbZiVs2rogY8kcNKYcEsdj7szKo7472WdTEMGKcsLAwoq\"]},\"src/concrete/raindex/RaindexV6.sol\":{\"keccak256\":\"0x67e507dc0dbe4b09d587e50c9affb0408818094ccf52f721d7a0165daf3e8df4\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://8da950478d9887a37d58e5cad814628a05a329371ffba3d7924e8d9dc33f2589\",\"dweb:/ipfs/QmcN2dtdqWvPLRVk5jp8AwjuyaJCshBuACuvq5dSrgbxsx\"]},\"src/lib/LibOrder.sol\":{\"keccak256\":\"0x899b3e2cdce954e82b0be9380c13b7f5fc723770576dabf0e725f0f131d6adba\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://0f7b8225814fc88831673471a42b516f23bcd4eca25f4e6e16eda43935fb0fff\",\"dweb:/ipfs/QmNzParypfDZ3oiSKYm4wAPM5cqAnpNPB6Vz2tFw3gLKF7\"]},\"src/lib/LibRaindex.sol\":{\"keccak256\":\"0x36dde21f4e324ed7af1bb8a9aa5e3d3805ee0cec6cf58f1414eaf3d5600f9c24\",\"license\":\"LicenseRef-DCL-1.0\",\"urls\":[\"bzz-raw://559198fa03bc34f98940f058dfbbd5460907d1c7bfe6e971bd29f94703938157\",\"dweb:/ipfs/QmTstHQ8fKUzuSQu3fLijWx6QXPLQbsHSeGPd8h7s6NnEV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"ClearZeroAmount"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"CoefficientOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"DivisionByZero"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"ExponentOverflow"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"ExponentUnderflow"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"type":"error","name":"FixedDecimalOverflow"},{"inputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"type":"error","name":"FlashLenderCallbackFailed"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"type":"error","name":"InvalidSignature"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"LossyConversionToFloat"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"MaximizeOverflow"},{"inputs":[{"internalType":"Float","name":"minimumIO","type":"bytes32"},{"internalType":"Float","name":"actualIO","type":"bytes32"}],"type":"error","name":"MinimumIO"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"type":"error","name":"MulDivOverflow"},{"inputs":[],"type":"error","name":"NegativeBounty"},{"inputs":[{"internalType":"int256","name":"signedCoefficient","type":"int256"},{"internalType":"int256","name":"exponent","type":"int256"}],"type":"error","name":"NegativeFixedDecimalConversion"},{"inputs":[],"type":"error","name":"NegativePull"},{"inputs":[],"type":"error","name":"NegativePush"},{"inputs":[{"internalType":"Float","name":"vaultBalance","type":"bytes32"}],"type":"error","name":"NegativeVaultBalance"},{"inputs":[{"internalType":"Float","name":"amount","type":"bytes32"}],"type":"error","name":"NegativeVaultBalanceChange"},{"inputs":[],"type":"error","name":"NoOrders"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"NotOrderOwner"},{"inputs":[{"internalType":"bytes","name":"unmeta","type":"bytes"}],"type":"error","name":"NotRainMetaV1"},{"inputs":[],"type":"error","name":"OrderNoHandleIO"},{"inputs":[],"type":"error","name":"OrderNoInputs"},{"inputs":[],"type":"error","name":"OrderNoOutputs"},{"inputs":[],"type":"error","name":"OrderNoSources"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SameOwner"},{"inputs":[{"internalType":"address","name":"expectedAddress","type":"address"}],"type":"error","name":"TOFUTokenDecimalsNotDeployed"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"enum TOFUOutcome","name":"tofuOutcome","type":"uint8"}],"type":"error","name":"TokenDecimalsReadFailure"},{"inputs":[],"type":"error","name":"TokenMismatch"},{"inputs":[],"type":"error","name":"TokenSelfTrade"},{"inputs":[{"internalType":"uint256","name":"outputs","type":"uint256"}],"type":"error","name":"UnsupportedCalculateOutputs"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}],"type":"error","name":"ZeroDepositAmount"},{"inputs":[],"type":"error","name":"ZeroMaximumIO"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"ZeroVaultId"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}],"type":"error","name":"ZeroWithdrawTargetAmount"},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false},{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"indexed":false}],"type":"event","name":"AddOrderV3","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"struct ClearStateChangeV2","name":"clearStateChange","type":"tuple","components":[{"internalType":"Float","name":"aliceOutput","type":"bytes32"},{"internalType":"Float","name":"bobOutput","type":"bytes32"},{"internalType":"Float","name":"aliceInput","type":"bytes32"},{"internalType":"Float","name":"bobInput","type":"bytes32"}],"indexed":false}],"type":"event","name":"AfterClearV2","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"struct OrderV4","name":"alice","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"indexed":false},{"internalType":"struct OrderV4","name":"bob","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"indexed":false},{"internalType":"struct ClearConfigV2","name":"clearConfig","type":"tuple","components":[{"internalType":"uint256","name":"aliceInputIOIndex","type":"uint256"},{"internalType":"uint256","name":"aliceOutputIOIndex","type":"uint256"},{"internalType":"uint256","name":"bobInputIOIndex","type":"uint256"},{"internalType":"uint256","name":"bobOutputIOIndex","type":"uint256"},{"internalType":"bytes32","name":"aliceBountyVaultId","type":"bytes32"},{"internalType":"bytes32","name":"bobBountyVaultId","type":"bytes32"}],"indexed":false}],"type":"event","name":"ClearV3","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes32[][]","name":"context","type":"bytes32[][]","indexed":false}],"type":"event","name":"ContextV2","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"bytes32","name":"vaultId","type":"bytes32","indexed":false},{"internalType":"uint256","name":"depositAmountUint256","type":"uint256","indexed":false}],"type":"event","name":"DepositV2","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes32","name":"subject","type":"bytes32","indexed":false},{"internalType":"bytes","name":"meta","type":"bytes","indexed":false}],"type":"event","name":"MetaV1_2","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false}],"type":"event","name":"OrderExceedsMaxRatio","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false}],"type":"event","name":"OrderNotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false}],"type":"event","name":"OrderZeroAmount","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":false},{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"indexed":false}],"type":"event","name":"RemoveOrderV3","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"struct TakeOrderConfigV4","name":"config","type":"tuple","components":[{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"uint256","name":"inputIOIndex","type":"uint256"},{"internalType":"uint256","name":"outputIOIndex","type":"uint256"},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"indexed":false},{"internalType":"Float","name":"input","type":"bytes32","indexed":false},{"internalType":"Float","name":"output","type":"bytes32","indexed":false}],"type":"event","name":"TakeOrderV3","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"bytes32","name":"vaultId","type":"bytes32","indexed":false},{"internalType":"Float","name":"targetAmount","type":"bytes32","indexed":false},{"internalType":"Float","name":"withdrawAmount","type":"bytes32","indexed":false},{"internalType":"uint256","name":"withdrawAmountUint256","type":"uint256","indexed":false}],"type":"event","name":"WithdrawV2","anonymous":false},{"inputs":[{"internalType":"struct OrderConfigV4","name":"orderConfig","type":"tuple","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"},{"internalType":"bytes32","name":"secret","type":"bytes32"},{"internalType":"bytes","name":"meta","type":"bytes"}]},{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"addOrder4","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct OrderV4","name":"aliceOrder","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"struct OrderV4","name":"bobOrder","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"struct ClearConfigV2","name":"clearConfig","type":"tuple","components":[{"internalType":"uint256","name":"aliceInputIOIndex","type":"uint256"},{"internalType":"uint256","name":"aliceOutputIOIndex","type":"uint256"},{"internalType":"uint256","name":"bobInputIOIndex","type":"uint256"},{"internalType":"uint256","name":"bobOutputIOIndex","type":"uint256"},{"internalType":"bytes32","name":"aliceBountyVaultId","type":"bytes32"},{"internalType":"bytes32","name":"bobBountyVaultId","type":"bytes32"}]},{"internalType":"struct SignedContextV1[]","name":"aliceSignedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"bobSignedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"clear3"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"},{"internalType":"Float","name":"depositAmount","type":"bytes32"},{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"deposit4"},{"inputs":[{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"entask2"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}]},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"orderExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct QuoteV2","name":"quoteConfig","type":"tuple","components":[{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"uint256","name":"inputIOIndex","type":"uint256"},{"internalType":"uint256","name":"outputIOIndex","type":"uint256"},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"view","type":"function","name":"quote2","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"Float","name":"","type":"bytes32"},{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"removeOrder3","outputs":[{"internalType":"bool","name":"stateChanged","type":"bool"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct TakeOrdersConfigV5","name":"config","type":"tuple","components":[{"internalType":"Float","name":"minimumIO","type":"bytes32"},{"internalType":"Float","name":"maximumIO","type":"bytes32"},{"internalType":"Float","name":"maximumIORatio","type":"bytes32"},{"internalType":"bool","name":"IOIsInput","type":"bool"},{"internalType":"struct TakeOrderConfigV4[]","name":"orders","type":"tuple[]","components":[{"internalType":"struct OrderV4","name":"order","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct IOV2[]","name":"validInputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"struct IOV2[]","name":"validOutputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}]},{"internalType":"bytes32","name":"nonce","type":"bytes32"}]},{"internalType":"uint256","name":"inputIOIndex","type":"uint256"},{"internalType":"uint256","name":"outputIOIndex","type":"uint256"},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"takeOrders4","outputs":[{"internalType":"Float","name":"totalTakerInput","type":"bytes32"},{"internalType":"Float","name":"totalTakerOutput","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"vaultBalance2","outputs":[{"internalType":"Float","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes32","name":"vaultId","type":"bytes32"},{"internalType":"Float","name":"targetAmount","type":"bytes32"},{"internalType":"struct TaskV2[]","name":"post","type":"tuple[]","components":[{"internalType":"struct EvaluableV4","name":"evaluable","type":"tuple","components":[{"internalType":"contract IInterpreterV4","name":"interpreter","type":"address"},{"internalType":"contract IInterpreterStoreV3","name":"store","type":"address"},{"internalType":"bytes","name":"bytecode","type":"bytes"}]},{"internalType":"struct SignedContextV1[]","name":"signedContext","type":"tuple[]","components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32[]","name":"context","type":"bytes32[]"},{"internalType":"bytes","name":"signature","type":"bytes"}]}]}],"stateMutability":"nonpayable","type":"function","name":"withdraw4"}],"devdoc":{"kind":"dev","methods":{"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"config":"All config required to build an `Order`.","tasks":"Additional tasks to run after the order is added. Order information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the order MUST NOT be added."},"returns":{"_0":"True if the order was added, false if it already existed."}},"clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])":{"params":{"alice":"Some order to clear.","aliceSignedContext":"Optional signed context that is relevant to A.","bob":"Another order to clear.","bobSignedContext":"Optional signed context that is relevant to B.","clearConfig":"Additional configuration for the clearance such as how to handle the bounty payment for the `msg.sender`."}},"deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"depositAmount":"The amount of tokens to deposit.","tasks":"Additional tasks to run after the deposit. Deposit information SHOULD be made available during evaluation in context. If ANY of the post tasks revert, the deposit MUST be reverted.","token":"The token to deposit.","vaultId":"The vault ID to deposit under."}},"entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"tasks":"The tasks to evaluate."}},"flashFee(address,uint256)":{"details":"The fee to be charged for a given loan.","params":{"amount":"The amount of tokens lent.","token":"The loan currency."},"returns":{"_0":"The amount of `token` to be charged for the loan, on top of the returned principal."}},"flashLoan(address,address,uint256,bytes)":{"details":"Initiate a flash loan.","params":{"amount":"The amount of tokens lent.","data":"Arbitrary data structure, intended to contain user-defined parameters.","receiver":"The receiver of the tokens in the loan, and the receiver of the callback.","token":"The loan currency."},"returns":{"_0":"True if the flash loan was successful."}},"maxFlashLoan(address)":{"details":"The amount of currency available to be lent.","params":{"token":"The loan currency."},"returns":{"_0":"The amount of `token` that can be borrowed."}},"multicall(bytes[])":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Receives and executes a batch of function calls on this contract."},"orderExists(bytes32)":{"params":{"orderHash":"The hash of the order to check."},"returns":{"_0":"True if the order exists, false otherwise."}},"quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))":{"params":{"quoteConfig":"The configuration for the quote."},"returns":{"_0":"True if the order exists, false otherwise.","_1":"The maximum output amount that the order could send. Is `0` if the order does not exist.","_2":"The input:output ratio of the order. Is `0` if the order does not exist."}},"removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"order":"The `Order` data exactly as it was added.","tasks":"Additional tasks to run after the order is removed. Order information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the order MUST NOT be removed."},"returns":{"stateChanged":"True if the order was removed, false if it did not exist."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))":{"params":{"config":"The constraints and list of orders to take, orders are processed sequentially in order as provided, there is NO ATTEMPT onchain to predict/filter/sort these orders other than evaluating them as provided. Inputs and outputs are from the perspective of `msg.sender` except for values specified by the orders themselves which are the from the perspective of that order."},"returns":{"totalTakerInput":"Total tokens sent to `msg.sender`, taken from order vaults processed.","totalTakerOutput":"Total tokens taken from `msg.sender` and distributed between vaults."}},"vaultBalance2(address,address,bytes32)":{"params":{"owner":"The owner of the vault.","token":"The token the vault is for.","vaultId":"The vault ID to read."},"returns":{"_0":"The current balance of the vault."}},"withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":{"params":{"targetAmount":"The amount of tokens to attempt to withdraw. MAY result in fewer tokens withdrawn if the vault balance is lower than the target amount. MAY NOT be zero, the Raindex MUST revert with `ZeroWithdrawTargetAmount` if the amount is zero.","tasks":"Additional tasks to run after the withdraw. Withdraw information SHOULD be made available during evaluation in context. If ANY of the tasks revert, the withdraw MUST be reverted.","token":"The token to withdraw.","vaultId":"The vault ID to withdraw from."}}},"version":1},"userdoc":{"kind":"user","methods":{"addOrder4(((address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32,bytes32,bytes),((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"Given an order config, deploys the expression and builds the full `Order` for the config, then records it as an active order. Delegated adding an order is NOT supported. The `msg.sender` that adds an order is ALWAYS the owner and all resulting vault movements are their own. MUST revert with `OrderNoSources` if the order has no associated calculation and `OrderNoHandleIO` if the order has no handle IO entrypoint. The calculation MUST return at least two values from evaluation, the maximum amount and the IO ratio. The handle IO entrypoint SHOULD return zero values from evaluation. Either MAY revert during evaluation on the interpreter, which MUST prevent the order from clearing. MUST revert with `OrderNoInputs` if the order has no inputs. MUST revert with `OrderNoOutputs` if the order has no outputs. If the order already exists, the Raindex MUST NOT change state, which includes not emitting an event. Instead it MUST return false. If the Raindex modifies state it MUST emit an `AddOrderV3` event and return true. If vault ID is `0` for any input or output, this indicates a vaultless order for that token. Vaultless orders draw from or pay to the order's owner's wallet directly rather than any internal vault."},"clear3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),(uint256,uint256,uint256,uint256,bytes32,bytes32),(address,bytes32[],bytes)[],(address,bytes32[],bytes)[])":{"notice":"Allows `msg.sender` to match two live orders placed earlier by non-interactive parties and claim a bounty in the process. The clearer is free to select any two live orders on the Raindex for matching and as long as they have compatible tokens, ratios and amounts, the orders will clear. Clearing the orders DOES NOT remove them from the Raindex, they remain live until explicitly removed by their owner. Even if the input vault balances are completely emptied, the orders remain live until removed. This allows order owners to deploy a strategy over a long period of time and periodically top up the input vaults. Clearing two orders from the same owner is disallowed. Any mismatch in the ratios between the two orders will cause either more inputs than there are available outputs (transaction will revert) or less inputs than there are available outputs. In the latter case the excess outputs are given to the `msg.sender` of clear, to the vaults they specify in the clear config. This not only incentivises \"automatic\" clear calls for both alice and bob, but incentivises _prioritising greater ratio differences_ with a larger bounty. The second point is important because it implicitly prioritises orders that are further from the current market price, thus putting constant increasing pressure on the entire system the further it drifts from the norm, no matter how esoteric the individual order expressions and sizings might be. All else equal there are several factors that would impact how reliably some order clears relative to the wider market, such as: - Bounties are effectively percentages of cleared amounts so larger orders have larger bounties and cover gas costs more easily - High gas on the network means that orders are harder to clear profitably so the negative spread of the ratios will need to be larger - Complex and stateful expressions cost more gas to evalulate so the negative spread will need to be larger - Erratic behavior of the order owner could reduce the willingness of third parties to interact if it could result in wasted gas due to orders suddently being removed before clearance etc. - Dynamic and highly volatile words used in the expression could be ignored or low priority by clearers who want to be sure that they can accurately predict the ratios that they include in their clearance - Geopolitical issues such as sanctions and regulatory restrictions could cause issues for certain owners and clearers"},"deposit4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"`msg.sender` deposits tokens according to config. The config specifies the vault to deposit tokens under. Delegated depositing is NOT supported. Depositing DOES NOT mint shares (unlike ERC4626) so the overall vaulted experience is much simpler as there is always a 1:1 relationship between deposited assets and vault balances globally and individually. This mitigates rounding/dust issues, speculative behaviour on derived assets, possible regulatory issues re: whether a vault share is a security, code bloat on the vault, complex mint/deposit/withdraw/redeem 4-way logic, the need for preview functions, etc. etc. At the same time, allowing vault IDs to be specified by the depositor allows much more granular and direct control over token movements within Raindex than either ERC4626 vault shares or mere contract-level ERC20 allowances can facilitate. Vault IDs are namespaced by the token address so there is no risk of collision between tokens. For example, vault ID 1 for token A is completely different to vault ID 1 for token B. `0` amount deposits are unsupported as underlying token contracts handle `0` value transfers differently and this would be a source of confusion. The Raindex MUST revert with `ZeroDepositAmount` if the amount is zero. Vault ID `0` is disallowed for deposits to avoid collision with vaultless orders. The Raindex MUST revert with `ZeroVaultId` if the vault ID is zero."},"entask2(((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"`msg.sender` entasks the provided tasks. This DOES NOT return any values, and MUST NOT modify any vault balances. Presumably the expressions will modify some internal state associated with active orders. If ANY of the expressions revert, the entire transaction MUST revert."},"maxFlashLoan(address)":{"notice":"There's no limit to the size of a flash loan from `Raindex` other than the current tokens deposited in `Raindex`."},"orderExists(bytes32)":{"notice":"Returns true if the order exists, false otherwise."},"quote2(((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[]))":{"notice":"Quotes the provided order for the caller. The caller is considered to be the counterparty to the order, for the purposes of evaluating the quote. However, the caller's vault balances and/or tokens in wallet are not considered in the quote. This means the output max can exceed what the caller could actually pay for. Both the output max and io ratio are returned as rain floating point values, ignoring any token decimals, so are not the literal amounts that would be moved in the order were it to clear."},"removeOrder3((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"Order owner can remove their own orders. Delegated order removal is NOT supported and will revert. Removing an order multiple times or removing an order that never existed are valid, the event will be emitted and the transaction will complete with that order hash definitely, redundantly not live."},"takeOrders4((bytes32,bytes32,bytes32,bool,((address,(address,address,bytes),(address,bytes32)[],(address,bytes32)[],bytes32),uint256,uint256,(address,bytes32[],bytes)[])[],bytes))":{"notice":"Allows `msg.sender` to attempt to fill a list of orders in sequence without needing to place their own order and clear them. This works like a market buy but against a specific set of orders. Every order will looped over and calculated individually then filled maximally until the request input/output limit is reached for the `msg.sender`. Whether the limit applies to input or output is determined by the `IOIsInput` flag in `TakeOrdersConfigV5`. The `msg.sender` is responsible for selecting the best orders at the time according to their criteria and MAY specify a maximum IO ratio to guard against an order spiking the ratio beyond what the `msg.sender` expected and is comfortable with. As orders may be removed and calculate their ratios dynamically, all issues fulfilling an order other than misconfiguration by the `msg.sender` are no-ops and DO NOT revert the transaction. This allows the `msg.sender` to optimistically provide a list of orders that they aren't sure will completely fill at a good price, and fallback to more reliable orders further down their list. Misconfiguration such as token mismatches are errors that revert as this is known and static at all times to the `msg.sender` so MUST be provided correctly. `msg.sender` MAY specify a minimum input/output that MUST be reached across all orders in the list, otherwise the transaction will revert, this MAY be set to zero. Exactly like withdraw, if there is an active flash loan for `msg.sender` they will have their outstanding loan reduced by the final input amount preferentially before sending any tokens. Notably this allows arb bots implemented as flash loan borrowers to connect orders against external liquidity directly by paying back the loan with a `takeOrders` call and outputting the result of the external trade. Rounding errors always favour the order never the `msg.sender`."},"vaultBalance2(address,address,bytes32)":{"notice":"Get the current balance of a vault for a given owner, token and vault ID."},"withdraw4(address,bytes32,bytes32,((address,address,bytes),(address,bytes32[],bytes)[])[])":{"notice":"Allows the sender to withdraw any tokens from their own vaults. If the withdrawer has an active flash loan debt denominated in the same token being withdrawn then Raindex will merely reduce the debt and NOT send the amount of tokens repaid to the flashloan debt. MUST revert if the amount _requested_ to withdraw is zero. The withdrawal MAY still not move any tokens (without revert) if the vault balance is zero, or the withdrawal is used to repay a flash loan, or due to any other internal accounting. Vault ID `0` is NOT supported due to collision with vaultless orders. The Raindex MUST revert with `ZeroVaultId` if the vault ID is zero."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/","bytecode/=dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/","caller/=dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/","codegen/=dependencies/rain-interpreter-interface-0.1.0/src/lib/codegen/","forge-std-1.16.1/=dependencies/forge-std-1.16.1/","mut/=dependencies/rain-string-0.2.0/src/lib/mut/","ns/=dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/","parse/=dependencies/rain-interpreter-interface-0.1.0/src/lib/parse/","rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.2/","rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/","rain-intorastring-0.1.0/=dependencies/rain-intorastring-0.1.0/","rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/","rain-lib-memkv-0.1.0/=dependencies/rain-lib-memkv-0.1.0/","rain-lib-typecast-0.1.0/=dependencies/rain-lib-typecast-0.1.0/","rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/","rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/","rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/","rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/","rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/","rain-string-0.2.0/=dependencies/rain-string-0.2.0/","rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/","raindex-interface-0.1.1/=dependencies/raindex-interface-0.1.1/","rainlang-0.1.2/=dependencies/rainlang-0.1.2/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/concrete/raindex/RaindexV6.sol":"RaindexV6"},"evmVersion":"cancun","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC1271.sol":{"keccak256":"0x66c7ec42c6c43712be2107a50ab4529379bc76a632b425babec698d9da921ac6","urls":["bzz-raw://dce2778f0b638adfc5ba29c2c618c855fe725fa74a16846386aa1d56a834aa04","dweb:/ipfs/QmPV9oWnzQdi58od266j62xvviavLNHqKLZfm6k2K1qy9E"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/interfaces/IERC7913.sol":{"keccak256":"0xe5a126930df1d54e4a6dd5fea09010c4a7db0ea974c6c17a1e6082879f5a032b","urls":["bzz-raw://2f58f5a90328536a6c68289916bfa4ed653d871319c7b2a416ab3f6263c4f2f5","dweb:/ipfs/Qmaa9DmgUA16Urz5fuF4RbFz2NaVpNLV41ddwykSdasFUd"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098","urls":["bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0","dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Address.sol":{"keccak256":"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346","urls":["bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710","dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Bytes.sol":{"keccak256":"0xf80e4b96b6849936ea0fabd76cf81b13d7276295fddb1e1c07afb3ddf650b0ac","urls":["bzz-raw://6430007255ac11c6e9c4331a418f3af52ff66fbbae959f645301d025b20aeb08","dweb:/ipfs/QmQE5fjmBBRw9ndnzJuC2uskYss1gbaR7JdazoCf1FGoBj"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/LowLevelCall.sol":{"keccak256":"0x6ba3db1346fc75a832aa6cd075e12f6f1fa172fa2122a020f324c319fe5be75e","urls":["bzz-raw://ab92e9e1cb08144c43fa3a383a87c48f49a652d51156950b928c2a50bee6b3a5","dweb:/ipfs/QmWeKkKZBgLDKgRFGKCzsKybYF7C8g9ysg5kU1b1p7QFBi"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Multicall.sol":{"keccak256":"0x72a5499dfae7676e4298a7299bccd3b27438ba1a4c72df5cd69c1c343c7ea20d","urls":["bzz-raw://de0fb51ccae3a0ff377ed185d187440fc612a71bf8e42fdb0e032ce747fa3eef","dweb:/ipfs/QmPNBaiVsAiUhz8qfXcSy27S7CqBbtSd8rPqmaykKBhw7Q"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/ReentrancyGuard.sol":{"keccak256":"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53","urls":["bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99","dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/Strings.sol":{"keccak256":"0x1fdc2de9585ab0f1c417f02a873a2b6343cd64bb7ffec6b00ffa11a4a158d9e8","urls":["bzz-raw://1ab223a3d969c6cd7610049431dd42740960c477e45878f5d8b54411f7a32bdc","dweb:/ipfs/QmWumhjvhpKcwx3vDPQninsNVTc3BGvqaihkQakFkQYpaS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/ECDSA.sol":{"keccak256":"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40","urls":["bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a","dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x6d8579873b9650426bfbd2a754092d1725049ca05e4e3c8c2c82dd9f3453129d","urls":["bzz-raw://1fa3127a8968d55096d37124a9e212013af112affa5e30b84a1d22263c31576c","dweb:/ipfs/QmetxaVcn5Q6nkpF9yXzaxPQ7d3rgrhV13sTH9BgiuzGJL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/cryptography/SignatureChecker.sol":{"keccak256":"0x0d53049a9969f2bc5cb88b32c909e2729a5fa157d258305b42b502427ad492c6","urls":["bzz-raw://eacca39a3f50c665454866342bb05f10cc1e87c2bbd73dda981a6a0de1978fb0","dweb:/ipfs/QmbFKMUT5BXtCdA2SCof9GuasrVhoGzaLUQG3gUvGDtdoE"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/Math.sol":{"keccak256":"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857","urls":["bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5","dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SafeCast.sol":{"keccak256":"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083","urls":["bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9","dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.6.1/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"dependencies/rain-interpreter-interface-0.1.0/src/error/ErrBytecode.sol":{"keccak256":"0xf6a05d018ca9ad0ef0d820d5dd3bf5b2d95fef1871bb59a7adb5377087e3f515","urls":["bzz-raw://10af6a331d8ba326a3c2c4a14ed634287e0a0eaf4b2e309417fc4abd336ba930","dweb:/ipfs/QmcueNEd7CimGj61kNyU6rjhpJvFU4uks2wKn7xv918qUr"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterCallerV4.sol":{"keccak256":"0x2f6cef8ace7a23cf0cfd183f06434a0cde757cdc3841bf35e6633818176b0cf7","urls":["bzz-raw://06b6c9ffd0f434322ed9a37124a080e15f7c50fd8a9188dedfd6b1383746ee67","dweb:/ipfs/Qmd66LS1wHavvU78NqTMJStYhBgcnG87YgafmmkMvXocAU"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol":{"keccak256":"0x5b4e41f24180a170a75d6faa525e1d28008a3a4404319f24f184d4d46f8add32","urls":["bzz-raw://3f02da25cac97067e6ac9f4dd9d6be7c2e7e81cb322dbeaaae69b14a11850885","dweb:/ipfs/QmWF3K89HqJ8zjyV5Mj9wJrG9mzKycjz4fX7jFgGW8AaHy"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol":{"keccak256":"0xae59c4c50f38332d3ad5bd97c81a46f6a983c59a729bd2d2ed54bb6ee4cfbc96","urls":["bzz-raw://82e4110f929a61b5fe31a7d1931f815db1751b5866efacfc3d602bd00527a01e","dweb:/ipfs/QmTkq2yJNpXrDWQbPWoGxBuXFLgFW5P7jvcengwPi6NX5f"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/IParserV2.sol":{"keccak256":"0x0f2d27d13de9c9541af8d0c1645fd34ff0ab5f14578c888b1b19caef9e75de84","urls":["bzz-raw://56e461e90605fb62459795b453c4692c33d06b031f86e717377a52d98d6e26c9","dweb:/ipfs/QmPqRZwKuD77rvdqYMjsXw2TeSbHvgR1V7AVsV9yR18hNY"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV1.sol":{"keccak256":"0xc0afd50701cd68eef984a63862bd6a10552d704cca6e10f06d19d920b0777c98","urls":["bzz-raw://cd3cbfa9159ceed8871f46f62c7ea235ad8537d3c6c1c004152ebf5d2d597346","dweb:/ipfs/QmPSAJXAcmDeK9Qy6s2dXdeu4GJ62FKWa69VBo4ioCPcJ9"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV2.sol":{"keccak256":"0x368ace8d0f82832f08caf264e4194647b9777c0d4a0f22d88236b30c1e4c8a63","urls":["bzz-raw://9c8a2141fcd76d6308156777b0a9e5a4f7f07fb3693461e2c12f07e4d8c87130","dweb:/ipfs/QmPnhPz6sXzh5xBGZobAPY2WJTgvQDiYWRFKavscSPu7T5"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV3.sol":{"keccak256":"0x9390bbeb7064c8d109bd6d9f52f898001ec6168e016c84592268334f729bf6a6","urls":["bzz-raw://dc5e7b4f0e56c6a009faf1cfaf1292bc5249ea3c6f233e9d78a132b883dfe375","dweb:/ipfs/QmcMTVqHjVVXYmeCE11T13g5efUEsyzZfzhSyUYPxzrLZd"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV1.sol":{"keccak256":"0xc01bc48e2479cab07fc799e26c3790c8cf97acc1f0f490c8f456f554d239a505","urls":["bzz-raw://2981aa2eae0d414bc8ad4105bedb05026cfdad7e6af8f23805dba4835ae9fd8a","dweb:/ipfs/QmQRKi5nmatC1UM2sNta9giuJX3xvvLAD5pmCeAsVWF4hF"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV2.sol":{"keccak256":"0x2aefda534eba5dd939c8413a6703340433162617fc260a864f9cf59a51a40a6a","urls":["bzz-raw://91b31176b1db3a60b6a8be337920844de3b2d3ddc91cc7b98615d104c5acf9d0","dweb:/ipfs/QmQSaxmW9BdQS3h9HUds8NLKmNABCZxNm8doqowYDiSmTr"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterStoreV1.sol":{"keccak256":"0x7d2bc86fefbe372fc64381b320244fe9dbda1816867f3040c5bb3951869fe6a7","urls":["bzz-raw://90c371494080129d5acd2bc52d092fc5cfe559147f7fc855ed01e62a7837f21e","dweb:/ipfs/QmcNtPDuTxic8zqRFXf1ba6FJKmQXguxiDUY4E7wjyVwU5"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterV1.sol":{"keccak256":"0xe0b94c771a7b6aa05388b4db6e238e36a4653cbfdbd3e54bbcaa7a97fc9491f4","urls":["bzz-raw://59887a7f2ef60669906c5e70831ac0c9a7345313b04efb306235280f85e1db73","dweb:/ipfs/QmP6Ny9m3sPCP65UmgGGpucSMgVAoDv6qURqyxUE95VU5Q"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterV2.sol":{"keccak256":"0x51eb0d6a03bcdb3a428cfbb605d7176dc22d83886635b1c1818a46a4a303acf3","urls":["bzz-raw://c4fbfdff3655dd567008b3a695ea2ed4f49cea641d8f17418e181e4f0d7d324b","dweb:/ipfs/QmPkHRtPa4tg5n6rUykhNhFJz6xirGBjKLghL24JuRnjuY"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IParserV1.sol":{"keccak256":"0x4f6a9e028942cebebfc84328193f1d31807aac292d9b82e2df489064aa913070","urls":["bzz-raw://54073f63db1f652571472cb2d07de297772c2420e1571a0cb9e0a805ee4347e7","dweb:/ipfs/QmXRqBreJvC8MQd5zLNgmPUdfFa4WD6gSoxvD8hecycux4"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterCallerV3.sol":{"keccak256":"0xa5e225eeb94fa4fced8bc91b9a773e636746fcfd52edc4eb3e17f7a3d2204443","urls":["bzz-raw://86d6f144228401c6b92b91d8cd9ade634e4a3a8d73cbae60e201c1ecd7930b75","dweb:/ipfs/QmcSxtZsMxYhGk8pEMXUtGMAVSkg6p5ZiEQoaQ1bnBwEXd"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterStoreV2.sol":{"keccak256":"0x64575df513b2c6d9581e838961839101394bf59670ecede6988202c8714c0c15","urls":["bzz-raw://4718bdcadadf933f610023c21191808df0a51a55e94b5697d160a584ba2912d9","dweb:/ipfs/QmR8R4TcnQ8iuxgTUuDTYzkXHmY2NaFe4aG3mTfcgmmGsM"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterV3.sol":{"keccak256":"0x9dba1f9fc1ecd10538291deb25f9648d1210789783b81bf354856fdcef79dddd","urls":["bzz-raw://ac62f8bf27b60ade408487025de433d08d2c19ac5df79208ebf9f9fa545d0d70","dweb:/ipfs/QmZiN2TNyMUgnSV14SaWWhh9d1Pgq1BLyHdDgpsqxdSQCH"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/lib/bytecode/LibBytecode.sol":{"keccak256":"0xcf9c3e536889eb270a4413aff2c81d6f0583dcb9fc0a941693cb708959fbb660","urls":["bzz-raw://a5889bbd9377804c958f0cd305b6cfb5176c6790cb7cfd3eb2a9ca3d2fcafc54","dweb:/ipfs/QmXxJ56xEth1g6m9FcvyZWLgfviB9Y5dCU38LoqVeapQBV"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/lib/caller/LibContext.sol":{"keccak256":"0xaf3f297895e9326325cef603992d18f97c1e882b8eaf9d8a305f94c0e295cfd2","urls":["bzz-raw://1366426716ac1a1ba93e6a6293308f0bc47439ada01d0108f4b5df5af7c53e9a","dweb:/ipfs/QmP5nY9Kho7qC2CMTbH7xannNoWrD2pgt4mvV1N7UdMe64"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-interpreter-interface-0.1.0/src/lib/ns/LibNamespace.sol":{"keccak256":"0x11b870c47abdaffddaee5e347b3345e801a0864d463ae8b39dd8ab82b1a4b12d","urls":["bzz-raw://fc21868a4776119ecd93f8a503e07727e11ce3bc9aef14956da1af3759cebb74","dweb:/ipfs/QmfVW5ajDBPdaC4nASs7shUL3qXjiJMVzzGouQK24CssNF"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-lib-hash-0.1.0/src/LibHashNoAlloc.sol":{"keccak256":"0x207fd40cb0b9e598e50e06138c9da1450caadd595f700fa39ccba39f766eec00","urls":["bzz-raw://df5edd1e0a782c2ce0da2213cd9b9cbf6be0e87f8fc915c26f2de558fb9df1ac","dweb:/ipfs/QmbBsLMVRrKQRWSVpvkveKL1iQHPKZfhLQCtJBPmhBN74z"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrDecimalFloat.sol":{"keccak256":"0x46e95357504ffe0e2cdf7a7d962b509ebdf6f2c64e1c8b1accc608bdd8288971","urls":["bzz-raw://65ec73f625fce3f9cf150472735c57e7f6a2260b53598c149a0a81ec677b9dd2","dweb:/ipfs/QmZXmzqDkjNVTMNW8ZFPGLm1UnVfPnFN5ggpDSHPa9UjvQ"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/error/ErrFormat.sol":{"keccak256":"0xc760cb6018291753e7408d55d12d5e66c116f9750dc241bbc201f3b46ae33aa7","urls":["bzz-raw://cbc81bb7c26c8503926b579f978902bcc3227839bee04bd3500cc924d142d28e","dweb:/ipfs/QmXqMuqBCpckD1EnsBjweyLdRZxpvC2xSP9FWBZFh2vztR"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol":{"keccak256":"0x3f0f9e9b04e6fd4ca2a322da490a236eb91a0d22411a51ed1d1e606a72fcb1eb","urls":["bzz-raw://d99f8025391108725dc490efccb834c25486d59adcd8c1450c62db89f08ed203","dweb:/ipfs/QmcY4JXoK4qfuUWjaDDyWkEdyzZTFN5EjokutSMDidqHjU"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol":{"keccak256":"0x5aac6382e7f7040e68600333c1b00b0aedb3edb6bced84b63783f6d88fe0b4f0","urls":["bzz-raw://e96d30e34e1fa2cc4eb574ded30c0f6f93929dcc19cb571f555ca8c5ac32eaa7","dweb:/ipfs/QmRRtk84AqEdQrRXfeTzVUAbAktJTZ92iTLqjocQV4PDx7"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/implementation/LibDecimalFloatImplementation.sol":{"keccak256":"0x47d0eeb542875548689465407162a19e4a21fb4591af5bb48d5758c0d1b93634","urls":["bzz-raw://631efb796ff17f277804f8a32df7d28630c2ae5300e7d74c37aa8ed1f86b5092","dweb:/ipfs/QmSfmMGQyxKYxu8UrWDEtuCggQ9HtFJy5cbMsYLPZbcTZ7"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-math-float-0.1.1/src/lib/table/LibLogTable.sol":{"keccak256":"0xccd2dea54cfb708c01e7e8e88c089742bbab18f5783be4632311fb4923d44c88","urls":["bzz-raw://f45fb78c16b5d66d56ba0e78acdb0ca5d315eb05efa2cd7a81e191aabe7aec52","dweb:/ipfs/QmQJ3TFFxTMu4HZ4qnjgmdmSNhGZLQRdCnSqAipEF1up1f"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-metadata-0.1.0/src/interface/deprecated/IMetaV1.sol":{"keccak256":"0xf5047476cd14cac913f7efbb777cbdc2a25723188f9fd35f4e1a09ebbd656709","urls":["bzz-raw://01d4ac845df8318e575bc0736e0711bc82a286bbd26802c27fe3b792a0275c04","dweb:/ipfs/QmUEyBicusKtsWYYKR7cSpBXoyYRvRvVuBWAZ9KSFk81qK"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-metadata-0.1.0/src/interface/unstable/IMetaV1_2.sol":{"keccak256":"0x4ca89e491c3c9ecdc9ad6c66b4b0a033208e64da69dee60a8a131c32fd845a0c","urls":["bzz-raw://5ebcdb708565d937acb318ddbf357f981281711546134550823c5ee6a99701a6","dweb:/ipfs/QmNwB8bME5eV7MuAaxQ79m4Kg1DGHY9xECSbcg3JZcSetT"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-metadata-0.1.0/src/lib/LibMeta.sol":{"keccak256":"0xb924ea27ba17f3c5582475a854b572d7149a0088e06646663b15b3e4c1577d31","urls":["bzz-raw://94d7f0a3e4704d25904e4e3d9df064a5fa5d0fecf96128fc3ab44d41a44e92ad","dweb:/ipfs/QmYPR15FL8dXmbKjZK7Bq2qXbnno6eoj3SiXuuayLpB7Yh"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/error/ErrBytes.sol":{"keccak256":"0xdec97437eeba42f5950dc52f89caac433bc11a56a4e14a0f67a521821600c4b6","urls":["bzz-raw://72b96a4ed0d34dab653df0e6eb19d77b3e1c691b8e35543f6f32ae6a44c6312e","dweb:/ipfs/QmNrwwf3La4D25DudigRedu2c7xfx8k7bEzHFVZfpRu3se"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/error/ErrUint256Array.sol":{"keccak256":"0x57b7a7a5cbc2fc97200130e84fde3a8afc14e0729040b14670dacc7f63c3ac5f","urls":["bzz-raw://4e7c7ce525e882db437b488b590fae6a817b282f88d76eb4f56986b549815e57","dweb:/ipfs/QmajzM26fsaFtaAnm5cg1FZrD6N2wkLJHCxa7Atx5x6iAB"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibBytes.sol":{"keccak256":"0x6497d17390179a62820805d18a2cf2cdfddbe4990df783bde11cbf82e414fd0e","urls":["bzz-raw://54e8ed63c566d374ca2d89e8109c41267f7ca661e85570c6c7d51193aaca128b","dweb:/ipfs/Qmd6LoUZqg7TbeAx2auk5UkimyMiK4a9GsVMvDeqDRZF3M"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibBytes32Array.sol":{"keccak256":"0x93a9a12fa9161523c8580196daf8e2bf59c48003166ef718f5fc07d47752aabe","urls":["bzz-raw://f1d24979b4b1f94621f0bc0505f8aafbb845ac86f72323454b6e96b4e57fb367","dweb:/ipfs/QmUD7hAfaNPPHUu9DjLaJrwrUrei8vfbyUoJcymbQeSsXE"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibBytes32Matrix.sol":{"keccak256":"0xffd4769d4d0f89d0de792c6d100384ec0262c55c5cf6b33432739e8c4c0edcf6","urls":["bzz-raw://1c73e871d16e3b2f3498efb6b3235db19156e07cc71e9f0fbc3c6b0b4efe633a","dweb:/ipfs/Qmeu91h2q8EdtAoPdRtKUsKL48VD16AUAU1ZXmt89iiuck"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibMemCpy.sol":{"keccak256":"0x3f0a1962829eed7af79d21ab1f84b1a3b4044d90114812871c9dde7ae6f5cf0a","urls":["bzz-raw://4b777f051eef0b83c1b1b6e3927faf683609522acbac9c5bba412cd482be3fef","dweb:/ipfs/QmZrMNaEQBGeCM2L6bg5d8WBxPCSG1cwFD95AUQFVXzQXL"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibPointer.sol":{"keccak256":"0x3fc6ff807b57b681e32229380e3eda57107a1ada8dc2c1270daa84c9fca5addc","urls":["bzz-raw://a82b17ddc1db163ec548648c83dd5bb2f9f4441559452933f424e0a8dff48e57","dweb:/ipfs/QmdKoRbEAPxBRHJWWRwjh9Yrps1QXcJuX5mJmua8nvnq7B"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibUint256Array.sol":{"keccak256":"0xf51dffaeb88063748495e3184e335d9bb46f22881c2e8c930f2b68a32bdb39c2","urls":["bzz-raw://4a66ae9e4e9b9bf83b68c4d1d609fda02f8584387740354318d4eca1e2639047","dweb:/ipfs/QmXTS3azQ3ebBpJzj15HJRjTLV8zHfrFPQ7qPiic6eE3Pa"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol":{"keccak256":"0xf58526ebebc0e51a84369ebe6fb1173930cea3a61a488b6b5a597406fc1216e0","urls":["bzz-raw://75940e084457b62a7a38a2cfe920b0838c7c7517c914de64a5073fd01bdcedd8","dweb:/ipfs/QmUZ1sm2EQMhiR2UzB4cY868t6XYpgAi62tr6xvwMtYDnQ"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-tofu-erc20-decimals-0.1.1/src/interface/ITOFUTokenDecimals.sol":{"keccak256":"0x7de2ff896b50894cd33a8e743f2ff780bb3a1d7d97958332c4d04de103741b67","urls":["bzz-raw://a9b6bfc712839ac6e846eb40ceed58d03a1f27cab75e4d07618dd7a936be00c8","dweb:/ipfs/QmaHHeD3cvhrKzEXL8H479n1fhLRB1QubpDyGnQ1djisTF"],"license":"LicenseRef-DCL-1.0"},"dependencies/rain-tofu-erc20-decimals-0.1.1/src/lib/LibTOFUTokenDecimals.sol":{"keccak256":"0x56572c8c173e91a7f945964e14958c8c53d2f0a0fdf5ead9040a9a7f2c135a81","urls":["bzz-raw://24cb36d2bea51e548d59beb8dc66772a3ef9612dd722860ccac1932c9f22965e","dweb:/ipfs/QmZz9AQbf5rMtE4wuH4XGtCEe7eVWWazhM4TvoHYi4FfxH"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/IRaindexV6.sol":{"keccak256":"0xfcd3def463c87e0c7c7f488593d50a4e5206264977f51506f5df301f0617addb","urls":["bzz-raw://60583d8718949a545ef959a61b014c1174df3b14333d26360dd56bd08eeadba9","dweb:/ipfs/Qmc6eFNTL2yhtndJotQVSMGgWAZZeMmeTwiUq253UkZ39x"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/IRaindexV6OrderTaker.sol":{"keccak256":"0x5439db5d2e8e123ac5e7b0773dccef55f1c3a04794574ee042e58d5110076677","urls":["bzz-raw://dc3165e61c2e70bd59dd0ffeb1063c1b25db4bed27fe5b2e0f386595ba44e589","dweb:/ipfs/Qmc9BnTTSyBZYcuRqEqNNSmihcbc3WUAq8mpDG5ZRVAQca"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v2/IOrderBookV2.sol":{"keccak256":"0x4b94e58f64eb8bd174ab9abc7441ff93d1b6a83e1d3649588fb4f6228ea8f1ed","urls":["bzz-raw://033665cf3b6190d0233737f53a30787710302b424a87aa9f3d6bc5a3f08d22a4","dweb:/ipfs/QmSFwbun5Rh9i5nANb4rRCkNv1TjKwWacQN18qa8UUgKDF"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v3/IOrderBookV3.sol":{"keccak256":"0xfbb0fb468612db1a0d4500b08dd32789ec68eb1e3dd6ce8fae6d15ca16cfa534","urls":["bzz-raw://b05814a23426d03f3576dee5236f370769b2523e66466afab36b1d1fe6213f8a","dweb:/ipfs/Qmeh6qU6wUddAVMcQ69PEkHNeRrvcnCztZqJSV6Pj5J9nZ"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v4/IOrderBookV4.sol":{"keccak256":"0xd5f71acf6d83c27049b5e9a7941e3bb08565cca5bbde6a085e13e843276ae739","urls":["bzz-raw://85171211c18991e9da01f52690063fc31df20f131d95a44aafa9ddc4e09e43bb","dweb:/ipfs/QmSnwz1zWFs6a3ZHAiMiU5QLHMM8WSTzA55QiVdULapar5"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/deprecated/v5/IOrderBookV5.sol":{"keccak256":"0x769e662ac861e4c99b6ffec0ac76c87e0d29d144a2b1cb66aeb16c6aaf5d3354","urls":["bzz-raw://71f52ea84bd0733b7a09853b5b1ac12ddfd678116ea435c1079d7f1fa8c4d052","dweb:/ipfs/QmWyGBWHMEnPMuHgRNKTEW54tr5r5moFzn23VwzBC4ehZQ"],"license":"LicenseRef-DCL-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashBorrower.sol":{"keccak256":"0xdcd81b1110e9c3c91715ac90aef1da70066bcaba8aeb3dc23df979f7f87644f9","urls":["bzz-raw://4572efaeb9eb30ad9b766b80cb2a8101a2cec0c9e8c78c7696f4aae710c8e2c9","dweb:/ipfs/QmVsz1gtqWfxTAbsoLPvZBe6PBVXqaWNx6nu7RHr2ghLuK"],"license":"CC0-1.0"},"dependencies/raindex-interface-0.1.1/src/interface/ierc3156/IERC3156FlashLender.sol":{"keccak256":"0x3a9b6a28d6ef355bc3052e88221439ede72980a2d661ec4a83eb16cff9f937ec","urls":["bzz-raw://b56f7e7dbdf6a08c3704c247e4f8fc70e6eb8217ee3d01fbc1b9288737036e90","dweb:/ipfs/QmRd5iihYVW2EyXnTe12CMY13pcyatVJwxTafQf854HG9z"],"license":"CC0-1.0"},"src/abstract/RaindexV6FlashLender.sol":{"keccak256":"0x7f6c0edc3628a3a3c726d53f55705733497c0120f287f060728652c03b23fa3c","urls":["bzz-raw://388e284aee281fa614f4b1a360fa8bcdd35b54c05da423d1a30cb9441fd9926d","dweb:/ipfs/QmbZiVs2rogY8kcNKYcEsdj7szKo7472WdTEMGKcsLAwoq"],"license":"LicenseRef-DCL-1.0"},"src/concrete/raindex/RaindexV6.sol":{"keccak256":"0x67e507dc0dbe4b09d587e50c9affb0408818094ccf52f721d7a0165daf3e8df4","urls":["bzz-raw://8da950478d9887a37d58e5cad814628a05a329371ffba3d7924e8d9dc33f2589","dweb:/ipfs/QmcN2dtdqWvPLRVk5jp8AwjuyaJCshBuACuvq5dSrgbxsx"],"license":"LicenseRef-DCL-1.0"},"src/lib/LibOrder.sol":{"keccak256":"0x899b3e2cdce954e82b0be9380c13b7f5fc723770576dabf0e725f0f131d6adba","urls":["bzz-raw://0f7b8225814fc88831673471a42b516f23bcd4eca25f4e6e16eda43935fb0fff","dweb:/ipfs/QmNzParypfDZ3oiSKYm4wAPM5cqAnpNPB6Vz2tFw3gLKF7"],"license":"LicenseRef-DCL-1.0"},"src/lib/LibRaindex.sol":{"keccak256":"0x36dde21f4e324ed7af1bb8a9aa5e3d3805ee0cec6cf58f1414eaf3d5600f9c24","urls":["bzz-raw://559198fa03bc34f98940f058dfbbd5460907d1c7bfe6e971bd29f94703938157","dweb:/ipfs/QmTstHQ8fKUzuSQu3fLijWx6QXPLQbsHSeGPd8h7s6NnEV"],"license":"LicenseRef-DCL-1.0"}},"version":1},"id":377} \ No newline at end of file +{ + "abi": [ + { + "type": "function", + "name": "addOrder4", + "inputs": [ + { + "name": "orderConfig", + "type": "tuple", + "internalType": "struct OrderConfigV4", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "secret", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "meta", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "clear3", + "inputs": [ + { + "name": "aliceOrder", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "bobOrder", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "clearConfig", + "type": "tuple", + "internalType": "struct ClearConfigV2", + "components": [ + { + "name": "aliceInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "bobBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "aliceSignedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "bobSignedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deposit4", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "depositAmount", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "entask2", + "inputs": [ + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "flashFee", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "flashLoan", + "inputs": [ + { + "name": "receiver", + "type": "address", + "internalType": "contract IERC3156FlashBorrower" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "maxFlashLoan", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "multicall", + "inputs": [ + { + "name": "data", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [ + { + "name": "results", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "orderExists", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quote2", + "inputs": [ + { + "name": "quoteConfig", + "type": "tuple", + "internalType": "struct QuoteV2", + "components": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "inputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "outputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + }, + { + "name": "", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeOrder3", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "stateChanged", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "takeOrders4", + "inputs": [ + { + "name": "config", + "type": "tuple", + "internalType": "struct TakeOrdersConfigV5", + "components": [ + { + "name": "minimumIO", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "maximumIO", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "maximumIORatio", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "IOIsInput", + "type": "bool", + "internalType": "bool" + }, + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct TakeOrderConfigV4[]", + "components": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "inputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "outputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "totalTakerInput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "totalTakerOutput", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "vaultBalance2", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdraw4", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "targetAmount", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "AddOrderV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "order", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "AfterClearV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "clearStateChange", + "type": "tuple", + "indexed": false, + "internalType": "struct ClearStateChangeV2", + "components": [ + { + "name": "aliceOutput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "bobOutput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "aliceInput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "bobInput", + "type": "bytes32", + "internalType": "Float" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ClearV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "alice", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "bob", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "clearConfig", + "type": "tuple", + "indexed": false, + "internalType": "struct ClearConfigV2", + "components": [ + { + "name": "aliceInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "bobBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ContextV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[][]", + "indexed": false, + "internalType": "bytes32[][]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DepositV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "depositAmountUint256", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MetaV1_2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "subject", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "meta", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OrderExceedsMaxRatio", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OrderNotFound", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OrderZeroAmount", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RemoveOrderV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "order", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TakeOrderV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "config", + "type": "tuple", + "indexed": false, + "internalType": "struct TakeOrderConfigV4", + "components": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "inputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "outputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + }, + { + "name": "input", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + }, + { + "name": "output", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "targetAmount", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + }, + { + "name": "withdrawAmount", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + }, + { + "name": "withdrawAmountUint256", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AddressEmptyCode", + "inputs": [ + { + "name": "target", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ClearZeroAmount", + "inputs": [] + }, + { + "type": "error", + "name": "CoefficientOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "DivisionByZero", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "ExponentOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "ExponentUnderflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "FailedCall", + "inputs": [] + }, + { + "type": "error", + "name": "FixedDecimalOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + } + ] + }, + { + "type": "error", + "name": "FlashLenderCallbackFailed", + "inputs": [ + { + "name": "result", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "InvalidSignature", + "inputs": [ + { + "name": "i", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "LossyConversionToFloat", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "MaximizeOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "MinimumIO", + "inputs": [ + { + "name": "minimumIO", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "actualIO", + "type": "bytes32", + "internalType": "Float" + } + ] + }, + { + "type": "error", + "name": "MulDivOverflow", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "y", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "denominator", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "NegativeBounty", + "inputs": [] + }, + { + "type": "error", + "name": "NegativeFixedDecimalConversion", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "NegativePull", + "inputs": [] + }, + { + "type": "error", + "name": "NegativePush", + "inputs": [] + }, + { + "type": "error", + "name": "NegativeVaultBalance", + "inputs": [ + { + "name": "vaultBalance", + "type": "bytes32", + "internalType": "Float" + } + ] + }, + { + "type": "error", + "name": "NegativeVaultBalanceChange", + "inputs": [ + { + "name": "amount", + "type": "bytes32", + "internalType": "Float" + } + ] + }, + { + "type": "error", + "name": "NoOrders", + "inputs": [] + }, + { + "type": "error", + "name": "NotOrderOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "NotRainMetaV1", + "inputs": [ + { + "name": "unmeta", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "error", + "name": "OrderNoHandleIO", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoInputs", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoOutputs", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoSources", + "inputs": [] + }, + { + "type": "error", + "name": "ReentrancyGuardReentrantCall", + "inputs": [] + }, + { + "type": "error", + "name": "SafeERC20FailedOperation", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "SameOwner", + "inputs": [] + }, + { + "type": "error", + "name": "TOFUTokenDecimalsNotDeployed", + "inputs": [ + { + "name": "expectedAddress", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "TokenDecimalsReadFailure", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "tofuOutcome", + "type": "uint8", + "internalType": "enum TOFUOutcome" + } + ] + }, + { + "type": "error", + "name": "TokenMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "TokenSelfTrade", + "inputs": [] + }, + { + "type": "error", + "name": "UnsupportedCalculateOutputs", + "inputs": [ + { + "name": "outputs", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ZeroDepositAmount", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "ZeroMaximumIO", + "inputs": [] + }, + { + "type": "error", + "name": "ZeroVaultId", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ZeroWithdrawTargetAmount", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ] +} From b5b01560202812ba348bb485094e6fbabe17d4b2 Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 30 May 2026 13:25:07 +0000 Subject: [PATCH 4/7] Bump rainix to c465734 (pulls in pkgs.sqlite + subgraph-test npm ci) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rainlanguage/rainix#212 lands two fixes the consumer side needs: - pkgs.sqlite in rust-build-inputs so rusqlite-using crates compile in slim shells (precondition for the future rainix.yaml refactor). - subgraph-test task does `npm ci` before `docker compose up`, so matchstick finds ./node_modules — unblocks this PR's `subgraph-test` job which is over committed bindings. Co-Authored-By: Claude Opus 4.7 --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 622ea27e05..d537f90c7e 100644 --- a/flake.lock +++ b/flake.lock @@ -499,11 +499,11 @@ "solc": "solc_2" }, "locked": { - "lastModified": 1780142871, - "narHash": "sha256-tCxXuup8vJKUsaBuEpKijphLRDyt1z1zMYjEZhVnCvI=", + "lastModified": 1780147444, + "narHash": "sha256-5BRRTITB69D86NcPQp9QAdeefuc0XCcvNotzbXZVRck=", "owner": "rainlanguage", "repo": "rainix", - "rev": "6ffb49299ff5756d4307225c2144a404dbc14c13", + "rev": "c465734a5df77dcb76508586e8a27284acd40a85", "type": "github" }, "original": { From cda84920e3527152bfa1ceed3b3a175db42a05b4 Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 30 May 2026 15:14:48 +0000 Subject: [PATCH 5/7] Commit crates/bindings/abis + rename hook to script/build.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit crates/bindings reads ABIs via `sol!` path args (5 contracts: IRaindexV6, RaindexV6, ERC20, IERC20Metadata, IInterpreterStoreV3). Without committed ABIs, any rust crate touching these requires `forge build` first — defeats the slim-shell story. Commit the 5 ABIs under crates/bindings/abis/ (jq '{abi}' stripped — forge JSON bytecode/metadata/id embed build-host paths, non-deterministic across runners; alloy sol! only reads .abi). Point sol! macros at the new location. Rename script/build-subgraph.sh -> script/build.sh: one generic post-CopyArtifacts hook, not "build subgraph" / "build bindings" / etc. build.sh internally `nix develop -c ...` since the renamed rainix hook (rainix#213) no longer wraps the call. --- crates/bindings/abis/ERC20.json | 312 +++ crates/bindings/abis/IERC20Metadata.json | 226 ++ crates/bindings/abis/IInterpreterStoreV3.json | 71 + crates/bindings/abis/IRaindexV6.json | 1971 ++++++++++++++ crates/bindings/abis/RaindexV6.json | 2375 +++++++++++++++++ crates/bindings/src/lib.rs | 10 +- script/build-subgraph.sh | 19 - script/build.sh | 30 + 8 files changed, 4990 insertions(+), 24 deletions(-) create mode 100644 crates/bindings/abis/ERC20.json create mode 100644 crates/bindings/abis/IERC20Metadata.json create mode 100644 crates/bindings/abis/IInterpreterStoreV3.json create mode 100644 crates/bindings/abis/IRaindexV6.json create mode 100644 crates/bindings/abis/RaindexV6.json delete mode 100755 script/build-subgraph.sh create mode 100755 script/build.sh diff --git a/crates/bindings/abis/ERC20.json b/crates/bindings/abis/ERC20.json new file mode 100644 index 0000000000..b65fe63720 --- /dev/null +++ b/crates/bindings/abis/ERC20.json @@ -0,0 +1,312 @@ +{ + "abi": [ + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "ERC20InsufficientAllowance", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "allowance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ERC20InsufficientBalance", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidApprover", + "inputs": [ + { + "name": "approver", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidReceiver", + "inputs": [ + { + "name": "receiver", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidSender", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC20InvalidSpender", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ] + } + ] +} diff --git a/crates/bindings/abis/IERC20Metadata.json b/crates/bindings/abis/IERC20Metadata.json new file mode 100644 index 0000000000..9cf0433269 --- /dev/null +++ b/crates/bindings/abis/IERC20Metadata.json @@ -0,0 +1,226 @@ +{ + "abi": [ + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } + ] +} diff --git a/crates/bindings/abis/IInterpreterStoreV3.json b/crates/bindings/abis/IInterpreterStoreV3.json new file mode 100644 index 0000000000..e7ddc59f43 --- /dev/null +++ b/crates/bindings/abis/IInterpreterStoreV3.json @@ -0,0 +1,71 @@ +{ + "abi": [ + { + "type": "function", + "name": "get", + "inputs": [ + { + "name": "namespace", + "type": "uint256", + "internalType": "FullyQualifiedNamespace" + }, + { + "name": "key", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "set", + "inputs": [ + { + "name": "namespace", + "type": "uint256", + "internalType": "StateNamespace" + }, + { + "name": "kvs", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Set", + "inputs": [ + { + "name": "namespace", + "type": "uint256", + "indexed": false, + "internalType": "FullyQualifiedNamespace" + }, + { + "name": "key", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "value", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + } + ] +} diff --git a/crates/bindings/abis/IRaindexV6.json b/crates/bindings/abis/IRaindexV6.json new file mode 100644 index 0000000000..7cd8e47c5f --- /dev/null +++ b/crates/bindings/abis/IRaindexV6.json @@ -0,0 +1,1971 @@ +{ + "abi": [ + { + "type": "function", + "name": "addOrder4", + "inputs": [ + { + "name": "config", + "type": "tuple", + "internalType": "struct OrderConfigV4", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "secret", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "meta", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "tasks", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "stateChanged", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "clear3", + "inputs": [ + { + "name": "alice", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "bob", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "clearConfig", + "type": "tuple", + "internalType": "struct ClearConfigV2", + "components": [ + { + "name": "aliceInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "bobBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "aliceSignedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "bobSignedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deposit4", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "depositAmount", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "tasks", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "entask2", + "inputs": [ + { + "name": "tasks", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "flashFee", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "flashLoan", + "inputs": [ + { + "name": "receiver", + "type": "address", + "internalType": "contract IERC3156FlashBorrower" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "maxFlashLoan", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "orderExists", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "exists", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quote2", + "inputs": [ + { + "name": "quoteConfig", + "type": "tuple", + "internalType": "struct QuoteV2", + "components": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "inputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "outputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "exists", + "type": "bool", + "internalType": "bool" + }, + { + "name": "outputMax", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "ioRatio", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeOrder3", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "tasks", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "stateChanged", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "takeOrders4", + "inputs": [ + { + "name": "config", + "type": "tuple", + "internalType": "struct TakeOrdersConfigV5", + "components": [ + { + "name": "minimumIO", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "maximumIO", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "maximumIORatio", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "IOIsInput", + "type": "bool", + "internalType": "bool" + }, + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct TakeOrderConfigV4[]", + "components": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "inputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "outputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "totalTakerInput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "totalTakerOutput", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "vaultBalance2", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "balance", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdraw4", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "targetAmount", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "tasks", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "AddOrderV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "order", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "AfterClearV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "clearStateChange", + "type": "tuple", + "indexed": false, + "internalType": "struct ClearStateChangeV2", + "components": [ + { + "name": "aliceOutput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "bobOutput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "aliceInput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "bobInput", + "type": "bytes32", + "internalType": "Float" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ClearV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "alice", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "bob", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "clearConfig", + "type": "tuple", + "indexed": false, + "internalType": "struct ClearConfigV2", + "components": [ + { + "name": "aliceInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "bobBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ContextV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[][]", + "indexed": false, + "internalType": "bytes32[][]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DepositV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "depositAmountUint256", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OrderExceedsMaxRatio", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OrderNotFound", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OrderZeroAmount", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RemoveOrderV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "order", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TakeOrderV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "config", + "type": "tuple", + "indexed": false, + "internalType": "struct TakeOrderConfigV4", + "components": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "inputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "outputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + }, + { + "name": "input", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + }, + { + "name": "output", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "targetAmount", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + }, + { + "name": "withdrawAmount", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + }, + { + "name": "withdrawAmountUint256", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "NoOrders", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoHandleIO", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoInputs", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoOutputs", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoSources", + "inputs": [] + }, + { + "type": "error", + "name": "ZeroDepositAmount", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "ZeroMaximumIO", + "inputs": [] + }, + { + "type": "error", + "name": "ZeroVaultId", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ZeroWithdrawTargetAmount", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ] +} diff --git a/crates/bindings/abis/RaindexV6.json b/crates/bindings/abis/RaindexV6.json new file mode 100644 index 0000000000..fa86240bc2 --- /dev/null +++ b/crates/bindings/abis/RaindexV6.json @@ -0,0 +1,2375 @@ +{ + "abi": [ + { + "type": "function", + "name": "addOrder4", + "inputs": [ + { + "name": "orderConfig", + "type": "tuple", + "internalType": "struct OrderConfigV4", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "secret", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "meta", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "clear3", + "inputs": [ + { + "name": "aliceOrder", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "bobOrder", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "clearConfig", + "type": "tuple", + "internalType": "struct ClearConfigV2", + "components": [ + { + "name": "aliceInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "bobBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "aliceSignedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "bobSignedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deposit4", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "depositAmount", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "entask2", + "inputs": [ + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "flashFee", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "flashLoan", + "inputs": [ + { + "name": "receiver", + "type": "address", + "internalType": "contract IERC3156FlashBorrower" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "maxFlashLoan", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "multicall", + "inputs": [ + { + "name": "data", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [ + { + "name": "results", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "orderExists", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "quote2", + "inputs": [ + { + "name": "quoteConfig", + "type": "tuple", + "internalType": "struct QuoteV2", + "components": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "inputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "outputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + }, + { + "name": "", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeOrder3", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [ + { + "name": "stateChanged", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "takeOrders4", + "inputs": [ + { + "name": "config", + "type": "tuple", + "internalType": "struct TakeOrdersConfigV5", + "components": [ + { + "name": "minimumIO", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "maximumIO", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "maximumIORatio", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "IOIsInput", + "type": "bool", + "internalType": "bool" + }, + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct TakeOrderConfigV4[]", + "components": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "inputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "outputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "totalTakerInput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "totalTakerOutput", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "vaultBalance2", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "Float" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdraw4", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "targetAmount", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "post", + "type": "tuple[]", + "internalType": "struct TaskV2[]", + "components": [ + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "AddOrderV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "order", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "AfterClearV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "clearStateChange", + "type": "tuple", + "indexed": false, + "internalType": "struct ClearStateChangeV2", + "components": [ + { + "name": "aliceOutput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "bobOutput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "aliceInput", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "bobInput", + "type": "bytes32", + "internalType": "Float" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ClearV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "alice", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "bob", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "clearConfig", + "type": "tuple", + "indexed": false, + "internalType": "struct ClearConfigV2", + "components": [ + { + "name": "aliceInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobInputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "bobOutputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "aliceBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "bobBountyVaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ContextV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[][]", + "indexed": false, + "internalType": "bytes32[][]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DepositV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "depositAmountUint256", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MetaV1_2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "subject", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "meta", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OrderExceedsMaxRatio", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OrderNotFound", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OrderZeroAmount", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RemoveOrderV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "orderHash", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "order", + "type": "tuple", + "indexed": false, + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TakeOrderV3", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "config", + "type": "tuple", + "indexed": false, + "internalType": "struct TakeOrderConfigV4", + "components": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct OrderV4", + "components": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "evaluable", + "type": "tuple", + "internalType": "struct EvaluableV4", + "components": [ + { + "name": "interpreter", + "type": "address", + "internalType": "contract IInterpreterV4" + }, + { + "name": "store", + "type": "address", + "internalType": "contract IInterpreterStoreV3" + }, + { + "name": "bytecode", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validInputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validOutputs", + "type": "tuple[]", + "internalType": "struct IOV2[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "nonce", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "inputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "outputIOIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "signedContext", + "type": "tuple[]", + "internalType": "struct SignedContextV1[]", + "components": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "context", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ] + }, + { + "name": "input", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + }, + { + "name": "output", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawV2", + "inputs": [ + { + "name": "sender", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "targetAmount", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + }, + { + "name": "withdrawAmount", + "type": "bytes32", + "indexed": false, + "internalType": "Float" + }, + { + "name": "withdrawAmountUint256", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AddressEmptyCode", + "inputs": [ + { + "name": "target", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ClearZeroAmount", + "inputs": [] + }, + { + "type": "error", + "name": "CoefficientOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "DivisionByZero", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "ExponentOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "ExponentUnderflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "FailedCall", + "inputs": [] + }, + { + "type": "error", + "name": "FixedDecimalOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + } + ] + }, + { + "type": "error", + "name": "FlashLenderCallbackFailed", + "inputs": [ + { + "name": "result", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "InvalidSignature", + "inputs": [ + { + "name": "i", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "LossyConversionToFloat", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "MaximizeOverflow", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "MinimumIO", + "inputs": [ + { + "name": "minimumIO", + "type": "bytes32", + "internalType": "Float" + }, + { + "name": "actualIO", + "type": "bytes32", + "internalType": "Float" + } + ] + }, + { + "type": "error", + "name": "MulDivOverflow", + "inputs": [ + { + "name": "x", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "y", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "denominator", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "NegativeBounty", + "inputs": [] + }, + { + "type": "error", + "name": "NegativeFixedDecimalConversion", + "inputs": [ + { + "name": "signedCoefficient", + "type": "int256", + "internalType": "int256" + }, + { + "name": "exponent", + "type": "int256", + "internalType": "int256" + } + ] + }, + { + "type": "error", + "name": "NegativePull", + "inputs": [] + }, + { + "type": "error", + "name": "NegativePush", + "inputs": [] + }, + { + "type": "error", + "name": "NegativeVaultBalance", + "inputs": [ + { + "name": "vaultBalance", + "type": "bytes32", + "internalType": "Float" + } + ] + }, + { + "type": "error", + "name": "NegativeVaultBalanceChange", + "inputs": [ + { + "name": "amount", + "type": "bytes32", + "internalType": "Float" + } + ] + }, + { + "type": "error", + "name": "NoOrders", + "inputs": [] + }, + { + "type": "error", + "name": "NotOrderOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "NotRainMetaV1", + "inputs": [ + { + "name": "unmeta", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "error", + "name": "OrderNoHandleIO", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoInputs", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoOutputs", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNoSources", + "inputs": [] + }, + { + "type": "error", + "name": "ReentrancyGuardReentrantCall", + "inputs": [] + }, + { + "type": "error", + "name": "SafeERC20FailedOperation", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "SameOwner", + "inputs": [] + }, + { + "type": "error", + "name": "TOFUTokenDecimalsNotDeployed", + "inputs": [ + { + "name": "expectedAddress", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "TokenDecimalsReadFailure", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "tofuOutcome", + "type": "uint8", + "internalType": "enum TOFUOutcome" + } + ] + }, + { + "type": "error", + "name": "TokenMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "TokenSelfTrade", + "inputs": [] + }, + { + "type": "error", + "name": "UnsupportedCalculateOutputs", + "inputs": [ + { + "name": "outputs", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ZeroDepositAmount", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "ZeroMaximumIO", + "inputs": [] + }, + { + "type": "error", + "name": "ZeroVaultId", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ZeroWithdrawTargetAmount", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "vaultId", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ] +} diff --git a/crates/bindings/src/lib.rs b/crates/bindings/src/lib.rs index 3e3a6dfc22..40c701f748 100644 --- a/crates/bindings/src/lib.rs +++ b/crates/bindings/src/lib.rs @@ -3,13 +3,13 @@ use alloy::sol; sol!( #![sol(all_derives = true, rpc)] #![sol(extra_derives(serde::Serialize, serde::Deserialize))] - IRaindexV6, "../../out/IRaindexV6.sol/IRaindexV6.json" + IRaindexV6, "./abis/IRaindexV6.json" ); sol!( #![sol(all_derives = true)] #![sol(extra_derives(serde::Serialize, serde::Deserialize))] - Raindex, "../../out/RaindexV6.sol/RaindexV6.json" + Raindex, "./abis/RaindexV6.json" ); // Inline definition avoids non-deterministic artifact collision between @@ -32,18 +32,18 @@ sol!( sol!( #![sol(all_derives = true)] - ERC20, "../../out/ERC20.sol/ERC20.json" + ERC20, "./abis/ERC20.json" ); sol!( #![sol(all_derives = true, rpc)] - IERC20Metadata, "../../out/IERC20Metadata.sol/IERC20Metadata.json" + IERC20Metadata, "./abis/IERC20Metadata.json" ); sol!( #![sol(all_derives = true)] #![sol(extra_derives(serde::Serialize, serde::Deserialize))] - IInterpreterStoreV3, "../../out/IInterpreterStoreV3.sol/IInterpreterStoreV3.json" + IInterpreterStoreV3, "./abis/IInterpreterStoreV3.json" ); pub mod provider; diff --git a/script/build-subgraph.sh b/script/build-subgraph.sh deleted file mode 100755 index 337dcc14a2..0000000000 --- a/script/build-subgraph.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: LicenseRef-DCL-1.0 -# SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd - -set -euxo pipefail - -mkdir -p subgraph/abis -# Strip to just `.abi` — the rest of forge's artifact JSON -# (bytecode/metadata/id) embeds build-host-specific paths and isn't -# deterministic across runners, which would defeat the -# rainix-copy-artifacts diff gate. Graph CLI / matchstick only read -# `.abi` anyway. -jq '{abi}' out/RaindexV6.sol/RaindexV6.json > subgraph/abis/Raindex.json -jq '{abi}' out/ERC20.sol/ERC20.json > subgraph/abis/ERC20.json -jq '{abi}' out/DecimalFloat.sol/DecimalFloat.json > subgraph/abis/DecimalFloat.json - -cd subgraph -npm ci -graph codegen diff --git a/script/build.sh b/script/build.sh new file mode 100755 index 0000000000..42124a1896 --- /dev/null +++ b/script/build.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# SPDX-License-Identifier: LicenseRef-DCL-1.0 +# SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd + +# Post-CopyArtifacts hook for rainix-copy-artifacts. Regenerates all committed +# derived artifacts: subgraph ABIs + codegen, bindings ABIs (read by `sol!` in +# crates/bindings/src/lib.rs). Strips forge JSON to just `.abi` — +# bytecode/metadata/id embed build-host paths and aren't deterministic across +# runners, which would defeat the diff gate; consumers (alloy sol!, graph CLI, +# matchstick) read `.abi` anyway. + +set -euxo pipefail + +nix develop github:rainlanguage/rainix#subgraph-shell -c bash <<'INNER' +set -euxo pipefail + +mkdir -p subgraph/abis +jq '{abi}' out/RaindexV6.sol/RaindexV6.json > subgraph/abis/Raindex.json +jq '{abi}' out/ERC20.sol/ERC20.json > subgraph/abis/ERC20.json +jq '{abi}' out/DecimalFloat.sol/DecimalFloat.json > subgraph/abis/DecimalFloat.json + +(cd subgraph && npm ci && graph codegen) + +mkdir -p crates/bindings/abis +jq '{abi}' out/IRaindexV6.sol/IRaindexV6.json > crates/bindings/abis/IRaindexV6.json +jq '{abi}' out/RaindexV6.sol/RaindexV6.json > crates/bindings/abis/RaindexV6.json +jq '{abi}' out/ERC20.sol/ERC20.json > crates/bindings/abis/ERC20.json +jq '{abi}' out/IERC20Metadata.sol/IERC20Metadata.json > crates/bindings/abis/IERC20Metadata.json +jq '{abi}' out/IInterpreterStoreV3.sol/IInterpreterStoreV3.json > crates/bindings/abis/IInterpreterStoreV3.json +INNER From beb0f400ee5931423351af8a670db6bc2ad2974d Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 30 May 2026 15:16:15 +0000 Subject: [PATCH 6/7] Bump rainix to 81c6e4e (build.sh hook rename) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index d537f90c7e..2c1d82451b 100644 --- a/flake.lock +++ b/flake.lock @@ -499,11 +499,11 @@ "solc": "solc_2" }, "locked": { - "lastModified": 1780147444, - "narHash": "sha256-5BRRTITB69D86NcPQp9QAdeefuc0XCcvNotzbXZVRck=", + "lastModified": 1780154135, + "narHash": "sha256-dzfWTnq+80nLKHkwvbBcEIIJylABaxQShsok8nU0GLM=", "owner": "rainlanguage", "repo": "rainix", - "rev": "c465734a5df77dcb76508586e8a27284acd40a85", + "rev": "81c6e4e3556abcbad30f51ef46481d01a672adbf", "type": "github" }, "original": { From f3d016521f227494e45a313c5ad401a79668bfd1 Mon Sep 17 00:00:00 2001 From: David Meister Date: Sat, 30 May 2026 15:25:27 +0000 Subject: [PATCH 7/7] Retrigger CI (transient cachix 403 on copy-artifacts post-step)